专注Web及移动安全[红日安全72期]
字数 2647 2025-08-18 11:37:57

Web及移动安全综合教学文档

一、Web安全核心知识

1.1 SQL注入与WAF绕过

SQL注入基础

  • 通过构造恶意SQL语句破坏正常查询逻辑
  • 常见注入点:用户输入、URL参数、HTTP头、Cookie等

WAF绕过技术(上)

  • 注释符绕过:/*!*/-- #
  • 大小写混合:SeLeCt代替select
  • 内联注释:/*!50000select*/
  • 等价函数替换:substringmidsubstr
  • 空白符替换:%09(tab)、%0A(换行)、%0C(换页)

WAF绕过技术(下)

  • 编码绕过:十六进制、URL编码、双重URL编码
  • 参数污染:id=1&id=2 union select
  • HTTP参数分割:分号、逗号分隔
  • 缓冲区溢出:超长字符串使WAF失效
  • 时间延迟:sleep()函数检测盲注

1.2 XSS深度分析

  • 存储型XSS:恶意脚本永久存储在服务器
  • 反射型XSS:恶意脚本通过URL参数即时反射
  • DOM型XSS:完全在客户端执行,不依赖服务器
  • 防御方法:
    • 输入输出编码(HTML, JavaScript, URL, CSS)
    • CSP(内容安全策略)头设置
    • HttpOnly Cookie标志
    • 输入验证与过滤

1.3 XML相关漏洞

XXE注入(XML外部实体)

  • 利用方式:
    <!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
    <foo>&xxe;</foo>
    
  • 危害:文件读取、SSRF、端口扫描、拒绝服务
  • 修复方案:
    • 禁用DTD和外部实体
    • 使用安全XML解析器配置
    • 输入过滤<!DOCTYPE<!ENTITY

XML注入

  • 通过恶意XML破坏文档结构
  • 防御:XML Schema验证、输入过滤、最小权限解析

1.4 Tomcat攻击面

  • 管理界面弱口令攻击
  • WAR文件上传漏洞
  • CVE-2017-12615(PUT方法任意文件上传)
  • CVE-2020-1938(Ghostcat文件包含/读取)
  • JMX服务未授权访问
  • 防御措施:更新补丁、禁用管理界面、配置强认证

二、渗透测试技术

2.1 信息收集全流程

  1. 被动收集

    • WHOIS查询
    • DNS枚举(dig, nslookup)
    • 搜索引擎查询(Google dork)
    • 历史快照(archive.org)
    • SSL证书信息
  2. 主动收集

    • 端口扫描(nmap, masscan)
    • 服务指纹识别
    • 目录/文件爆破(dirb, gobuster)
    • 子域名枚举(subfinder, amass)
    • WAF识别(wafw00f)

2.2 Windows提权技术

  • 系统信息收集:
    systeminfo
    whoami /priv
    net user
    
  • 常见提权路径:
    • 服务配置不当(服务路径空格、弱权限)
    • AlwaysInstallElevated注册表项
    • 可写系统目录(DLL劫持)
    • 未修补内核漏洞(MS16-032等)
    • 密码复用(获取内存中的凭据)

2.3 内网渗透技术

RDP安全配置

  • 网络级认证(NLA)强制启用
  • 限制登录IP范围
  • 账户锁定策略
  • 修改默认3389端口
  • 双因素认证

端口转发技术

  • lcx工具使用
    # 本地端口转发
    lcx -listen 4444 5555
    lcx -slave 127.0.0.1 4444 127.0.0.1 3389
    
    # 远程端口转发
    lcx -tran 53 victim_ip 3389
    
  • 替代方案:SSH隧道、netsh端口代理、frp/ngrok

三、安全工具详解

3.1 Acunetix Web漏洞扫描

  • 功能特点:
    • 自动爬取网站结构
    • 检测SQLi/XSS/XXE等漏洞
    • 支持HTML5/单页应用扫描
    • 生成详细报告(PDF/HTML)
  • 使用技巧:
    • 自定义扫描策略
    • 设置排除规则避免误报
    • 结合手动验证减少误报

3.2 Burp Suite专业用法

  • 核心模块
    • Proxy:拦截修改HTTP请求
    • Scanner:自动漏洞扫描
    • Intruder:定制化攻击载荷
    • Repeater:请求重放测试
    • Sequencer:会话令牌分析
  • 高级技巧
    • 宏录制处理复杂认证流程
    • 自定义插件开发(Java/Python)
    • Collaborator检测带外漏洞
    • 匹配替换规则自动化测试

3.3 iOS渗透工具Cycript

  • 功能:运行时注入JavaScript语法操作Objective-C
  • 常用命令:
    // 获取当前应用类
    ObjectiveC.classes
    
    // 方法hook
    var vc = [[UIApp keyWindow] rootViewController]
    [vc presentAlertWithTitle:"Hacked"]
    
    // 内存搜索
    var results = []
    for(var addr=0; addr<0x100000000; addr+=0x100000){
      try { results.push(addr + ": " + new Instance(addr)) } catch(e){}
    }
    

四、代码审计专项

4.1 Java Web代码审计

SQL注入审计点:

  • 字符串拼接查询(Statement代替PreparedStatement)
  • 未过滤的request.getParameter()
  • MyBatis中的${}占位符风险
  • HQL注入风险

反序列化漏洞:

  • ObjectInputStream未校验输入
  • 危险第三方库(commons-collections等)
  • XStream/Castor等XML反序列化风险

4.2 PHP代码审计

反序列化漏洞:

  • 危险魔术方法:
    __wakeup() // 反序列化时自动调用
    __destruct() // 对象销毁时调用
    __toString() // 对象被当作字符串时
    
  • 利用链构造:寻找可触发危险函数的对象链

Session反序列化:

  • session.serialize_handler配置差异
  • php_serializephp格式混用风险
  • 利用方式:
    // 攻击者控制session数据
    $_SESSION['data'] = '恶意序列化数据';
    

4.3 SQL注入审计入门

  1. 入口点定位

    • 用户输入来源(\(_GET/\)_POST/$_COOKIE)
    • 数据库操作函数(mysql_query, mysqli, PDO)
  2. 漏洞验证

    // 典型漏洞代码
    $id = $_GET['id'];
    $sql = "SELECT * FROM users WHERE id = $id";
    
    // 修复方案
    $stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
    $stmt->execute([$id]);
    

五、防御体系建设

5.1 系统服务安全运行

  • 最小权限原则运行服务
  • 定期更新补丁和依赖库
  • 日志集中收集与分析
  • 网络隔离(DMZ区设置)
  • 服务降级和熔断机制

5.2 防火墙配置要点

  • 入站规则:默认拒绝,按需开放
  • 出站规则:限制不必要外连
  • 应用层防护(WAF规则)
  • 速率限制防DDoS
  • 与IDS/IPS联动

5.3 安全开发生命周期

  1. 需求阶段:威胁建模
  2. 设计阶段:安全架构评审
  3. 实现阶段:安全编码规范
  4. 测试阶段:SAST/DAST扫描
  5. 部署阶段:安全基线配置
  6. 运维阶段:持续监控更新

六、扩展学习资源

6.1 学习路线指南

  1. 基础阶段

    • 网络协议(HTTP/HTTPS/TCP/IP)
    • 操作系统原理(Linux/Windows)
    • 编程基础(Python/PHP/Java)
  2. 中级阶段

    • OWASP Top 10实战
    • 常见漏洞复现(CVE分析)
    • 渗透测试方法论
  3. 高级阶段

    • 红队基础设施搭建
    • 定制化漏洞利用开发
    • 防御体系绕过技术

6.2 每周安全跟踪

  • CVE漏洞公告平台
  • 厂商安全公告订阅
  • 安全会议记录(BlackHat/Defcon)
  • GitHub安全项目趋势
  • 威胁情报源(AlienVault OTX)

本教学文档涵盖了Web及移动安全的核心知识点,可作为系统性学习的安全参考手册。建议结合实操练习巩固各技术点,并持续关注安全动态更新知识库。

Web及移动安全综合教学文档 一、Web安全核心知识 1.1 SQL注入与WAF绕过 SQL注入基础 通过构造恶意SQL语句破坏正常查询逻辑 常见注入点:用户输入、URL参数、HTTP头、Cookie等 WAF绕过技术(上) 注释符绕过: /*!*/ 、 -- 、 # 大小写混合: SeLeCt 代替 select 内联注释: /*!50000select*/ 等价函数替换: substring → mid → substr 空白符替换: %09 (tab)、 %0A (换行)、 %0C (换页) WAF绕过技术(下) 编码绕过:十六进制、URL编码、双重URL编码 参数污染: id=1&id=2 union select HTTP参数分割:分号、逗号分隔 缓冲区溢出:超长字符串使WAF失效 时间延迟: sleep() 函数检测盲注 1.2 XSS深度分析 存储型XSS :恶意脚本永久存储在服务器 反射型XSS :恶意脚本通过URL参数即时反射 DOM型XSS :完全在客户端执行,不依赖服务器 防御方法: 输入输出编码(HTML, JavaScript, URL, CSS) CSP(内容安全策略)头设置 HttpOnly Cookie标志 输入验证与过滤 1.3 XML相关漏洞 XXE注入(XML外部实体) 利用方式: 危害:文件读取、SSRF、端口扫描、拒绝服务 修复方案: 禁用DTD和外部实体 使用安全XML解析器配置 输入过滤 <!DOCTYPE 和 <!ENTITY XML注入 通过恶意XML破坏文档结构 防御:XML Schema验证、输入过滤、最小权限解析 1.4 Tomcat攻击面 管理界面弱口令攻击 WAR文件上传漏洞 CVE-2017-12615(PUT方法任意文件上传) CVE-2020-1938(Ghostcat文件包含/读取) JMX服务未授权访问 防御措施:更新补丁、禁用管理界面、配置强认证 二、渗透测试技术 2.1 信息收集全流程 被动收集 : WHOIS查询 DNS枚举(dig, nslookup) 搜索引擎查询(Google dork) 历史快照(archive.org) SSL证书信息 主动收集 : 端口扫描(nmap, masscan) 服务指纹识别 目录/文件爆破(dirb, gobuster) 子域名枚举(subfinder, amass) WAF识别(wafw00f) 2.2 Windows提权技术 系统信息收集: 常见提权路径: 服务配置不当(服务路径空格、弱权限) AlwaysInstallElevated注册表项 可写系统目录(DLL劫持) 未修补内核漏洞(MS16-032等) 密码复用(获取内存中的凭据) 2.3 内网渗透技术 RDP安全配置 网络级认证(NLA)强制启用 限制登录IP范围 账户锁定策略 修改默认3389端口 双因素认证 端口转发技术 lcx工具使用 : 替代方案:SSH隧道、netsh端口代理、frp/ngrok 三、安全工具详解 3.1 Acunetix Web漏洞扫描 功能特点: 自动爬取网站结构 检测SQLi/XSS/XXE等漏洞 支持HTML5/单页应用扫描 生成详细报告(PDF/HTML) 使用技巧: 自定义扫描策略 设置排除规则避免误报 结合手动验证减少误报 3.2 Burp Suite专业用法 核心模块 : Proxy:拦截修改HTTP请求 Scanner:自动漏洞扫描 Intruder:定制化攻击载荷 Repeater:请求重放测试 Sequencer:会话令牌分析 高级技巧 : 宏录制处理复杂认证流程 自定义插件开发(Java/Python) Collaborator检测带外漏洞 匹配替换规则自动化测试 3.3 iOS渗透工具Cycript 功能:运行时注入JavaScript语法操作Objective-C 常用命令: 四、代码审计专项 4.1 Java Web代码审计 SQL注入审计点: 字符串拼接查询( Statement 代替 PreparedStatement ) 未过滤的 request.getParameter() MyBatis中的 ${} 占位符风险 HQL注入风险 反序列化漏洞: ObjectInputStream 未校验输入 危险第三方库(commons-collections等) XStream/Castor等XML反序列化风险 4.2 PHP代码审计 反序列化漏洞: 危险魔术方法: 利用链构造:寻找可触发危险函数的对象链 Session反序列化: session.serialize_handler 配置差异 php_serialize 与 php 格式混用风险 利用方式: 4.3 SQL注入审计入门 入口点定位 : 用户输入来源($_ GET/$_ POST/$_ COOKIE) 数据库操作函数(mysql_ query, mysqli, PDO) 漏洞验证 : 五、防御体系建设 5.1 系统服务安全运行 最小权限原则运行服务 定期更新补丁和依赖库 日志集中收集与分析 网络隔离(DMZ区设置) 服务降级和熔断机制 5.2 防火墙配置要点 入站规则:默认拒绝,按需开放 出站规则:限制不必要外连 应用层防护(WAF规则) 速率限制防DDoS 与IDS/IPS联动 5.3 安全开发生命周期 需求阶段:威胁建模 设计阶段:安全架构评审 实现阶段:安全编码规范 测试阶段:SAST/DAST扫描 部署阶段:安全基线配置 运维阶段:持续监控更新 六、扩展学习资源 6.1 学习路线指南 基础阶段 : 网络协议(HTTP/HTTPS/TCP/IP) 操作系统原理(Linux/Windows) 编程基础(Python/PHP/Java) 中级阶段 : OWASP Top 10实战 常见漏洞复现(CVE分析) 渗透测试方法论 高级阶段 : 红队基础设施搭建 定制化漏洞利用开发 防御体系绕过技术 6.2 每周安全跟踪 CVE漏洞公告平台 厂商安全公告订阅 安全会议记录(BlackHat/Defcon) GitHub安全项目趋势 威胁情报源(AlienVault OTX) 本教学文档涵盖了Web及移动安全的核心知识点,可作为系统性学习的安全参考手册。建议结合实操练习巩固各技术点,并持续关注安全动态更新知识库。