渗透高级课第二次作业

SQL注入

  • 常见注入类型
    • 联合查询注入:有回显场景下使用,通过UNION SELECT拼接查询语句,直接获取数据库信息。
    • 报错注入:无回显但有报错信息时使用,利用floor()等函数制造主键冲突或格式错误,让数据库报错并带出数据。
    • 布尔盲注:无回显、无报错但页面会根据 SQL 执行结果返回不同状态时使用,通过构建ture/false逻辑的语句,逐位猜解数据。
    • 时间盲注:页面无任何状态变化时使用,通过sleep()等函数让执行时间产生差异,以此判断逻辑是否正确。
    • HTTP 头注入:注入点存在于 HTTP 请求头中,需修改请求头构造恶意语句。
    • 二次注入:恶意数据先被存入数据库,后续被程序读取并执行时触发注入,常见于注册、修改密码等流程。
    • 预编译绕过注入:预编译虽能防御大部分注入,但在order by、group by等关键字位置,参数会被解析为列名而非数据值,可通过布尔盲注等方式注入。
    • PGSQL 协议注入:利用 PGSQL 的协议特性,构造二进制数据流,通过 SQL 语句的歧义性实现注入。
  • 绕过过滤技巧
    • 空格绕过:用%0a、%09等特殊编码,或/**/、()、+等符号替代空格。
    • 关键字绕过:使用双写(UNIunionON)、大小写混合(UnIoN)、编码(如 URL 编码、十六进制编码)绕过关键字检测。
    • 注释符绕过:用--#/*...*/关闭原有 SQL 语句的部分逻辑,注入新的恶意代码。
    • PHP正则回溯绕过:构造超长字符串(如 100 万个a)触发正则引擎回溯次数超限(PHP 默认 100 万次),使正则匹配失效从而绕过。
  • 防御方案
    • 使用预编译与参数化查询:将 SQL 语句模板与参数分离,让数据库将参数视为纯数据。
    • 严格的输入验证:对用户输入进行类型、长度、格式校验,仅允许合法字符。
    • 使用安全的ORM框架:如 MyBatis、Hibernate,避免直接拼接 SQL。
    • 开启WAF防护:部署 Web 应用防火墙,拦截恶意 SQL 注入流量。
    • 最小权限原则:数据库操作账号仅分配必要的最小权限,避免注入后造成大范围破坏。

ThinkPHP框架漏洞分析

  • ThinkPHP5
    • 核心漏洞类型
      • SQL注入漏洞
        • order by注入:order()方法未对参数进行严格过滤,可直接注入恶意 SQL 语句。
          where注入:当使用数组传参且未开启强制参数绑定,或使用字符串拼接时,可能导致注入。
          table注入:table()方法对表名参数过滤不严格,可注入恶意表名或语句。
      • 远程代码执行(RCE)漏洞
        • Request类变量覆盖漏洞:通过_method参数配合__construct方法,可覆盖类变量,触发代码执行。
        • think\Process命令执行:漏洞利用框架的代码执行函数,构造恶意参数执行系统命令。
        • PHP代码注入:在调试模式下,错误信息页面可能泄露敏感信息,或通过特定参数注入 PHP 代码。
      • 任意文件操作漏洞
        • 任意文件读取:通过view方法或template参数,构造路径读取服务器任意文件。
        • 任意文件写入:利用缓存机制或日志写入功能,写入恶意代码到服务器文件中。
  • ThinkPHP6
    • 核心漏洞类型
      • SQL注入漏洞
        • query方法注入:当使用字符串拼接方式调用query()时,若参数未过滤,可能导致注入。
        • raw表达式注入:使用raw()方法时,若直接传入用户可控参数,会被当作原生 SQL 执行。
        • order by注入:与 TP5 类似,order()方法对复杂参数处理不当,存在注入风险。
      • 远程代码执行(RCE)漏洞
        • 模板引擎漏洞:若模板路径可控,可构造恶意模板文件,触发代码执行。
          依赖注入漏洞:框架的依赖注入机制在特定场景下,可被利用构造恶意对象执行代码。
      • 逻辑漏洞
        • 未授权访问:部分路由配置不当,导致敏感接口无需验证即可访问。
        • CSRF 防护缺失:部分功能未开启 CSRF 验证,可被跨站请求伪造攻击。
  • 关键差异
    • ThinkPHP6 在底层架构上进行了重构,默认开启参数绑定,大幅降低了传统 SQL 注入风险。
    • 对输入输出的过滤更严格,新增了validate验证机制,减少了恶意输入的利用面。
    • 模板引擎默认开启strict_mode,避免了模板注入的风险,但配置不当仍可能存在问题。

JWT

  • 核心原理

    • JWT 是一种用于身份验证的令牌,由Header(头部)、Payload(载荷)、Signature(签名)三部分组成,通过签名验证令牌的完整性与真实性
  • 漏洞利用流程

    • 密钥获取:攻击者通过代码审计、漏洞扫描或信息泄露等方式,获取服务端硬编码的 secret key。

    • 令牌构造:按照 JWT 的Header-Payload-Signature结构,构造包含高权限身份信息的 Payload(如管理员账号、权限标识),并使用获取的 secret key 对令牌进行签名。

    • 身份绕过:将伪造的 JWT 令牌传入目标接口的请求头或参数中,服务端验证签名时会判定令牌合法,从而使攻击者绕过身份验证,获得未授权访问权限。

  • 攻击影响

    • 攻击者可通过伪造令牌,直接获取系统的高权限操作能力,包括访问敏感数据、执行核心业务功能等,严重威胁系统的身份认证安全。

RCE

  • 核心原理
    • RCE 是指攻击者通过漏洞在目标服务器上执行任意代码或系统命令,完全控制服务器
  • PHP 命令执行核心函数与类型区分
    • 包含system()、exec()、proc_open()等,这类函数可直接调用系统终端执行命令,输入的参数会被解析为系统指令。

    • 命令执行与代码执行的区别

      • 命令执行:调用操作系统的命令行工具执行指令,输出结果与系统环境强相关

      • 代码执行:执行的是编程语言层面的代码

相关推荐
哆啦code梦18 小时前
2024 OWASP十大安全威胁解析
安全·系统安全·owasp top 10
网络安全研究所19 小时前
AI安全提示词注入攻击如何操控你的智能助手?
人工智能·安全
海心焱20 小时前
安全之盾:深度解析 MCP 如何缝合企业级 SSO 身份验证体系,构建可信 AI 数据通道
人工智能·安全
程序员哈基耄1 天前
纯客户端隐私工具集:在浏览器中守护你的数字安全
安全
darkb1rd1 天前
五、PHP类型转换与类型安全
android·安全·php
中科三方1 天前
域名转移详细指南:流程、材料、注意事项和常见问题全解析
网络·安全
云小逸1 天前
【nmap源码学习】 Nmap 源码深度解析:nmap_main 函数详解与 NSE 脚本引擎原理
网络协议·学习·安全
迎仔1 天前
04-网络安全基础:数字世界的防盗门与守卫
网络·安全·web安全
MicroTech20251 天前
微算法科技(NASDAQ :MLGO)量子测量区块链共识机制:保障数字资产安全高效存储与交易
科技·安全·区块链
意法半导体STM321 天前
【官方原创】FDCAN数据段波特率增加后发送失败的问题分析 LAT1617
javascript·网络·stm32·单片机·嵌入式硬件·安全