渗透高级课第二次作业

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()等,这类函数可直接调用系统终端执行命令,输入的参数会被解析为系统指令。

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

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

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

相关推荐
上海云盾-小余2 小时前
企业 Web 安全 “零死角”:抗 DDoS + 云 WAF + 安全服务组合方案
网络·安全·ddos
Lust Dusk2 小时前
如何通过GitHub找到一个人?
安全·网络安全·github
北辰当尹3 小时前
【小迪安全2023】day43 php应用&SQL注入&符号拼接&请求方法&HTTP头&JSON&编码类
sql·安全·php
CertiK3 小时前
CertiK登上达沃斯官网,Web3安全进入主流视野
安全·web3
Serverless 社区3 小时前
探秘 AgentRun丨动态下发+权限隔离,重构 AI Agent 安全体系
人工智能·安全·重构
榕树子3 小时前
【蓝牙】安全密钥如何生成:蓝牙Mesh网络的安全基石
安全·蓝牙
独隅3 小时前
Ollama for macOS 完全指南:零配置本地运行 Llama、DeepSeek 等大模型,私享安全高效的 AI 能力
安全·macos·llama
云边云科技_云网融合3 小时前
下单、收银不中断,负载均衡是零售系统平稳运行的基石
大数据·网络·人工智能·安全
2501_941507946 小时前
【YOLOv26】教育环境中危险物品实时检测系统_基于深度学习的校园安全解决方案
深度学习·安全·yolo