53:代码审计-TP5框架及无框架变量覆盖反序列化

案例1:metinfo-无框架-变量覆盖-自动审计或搜索

变量覆盖配合文件包含实现任意文件包含

<1>自动审计或搜索关键字找到文件及代码块,全局配置文件

变量覆盖漏洞关键字:extract()、parse_str()、importrequestvariables()、$$等

53:代码审计-TP5框架及无框架变量覆盖反序列化

如下代码,表示从get post cookie接收数据,进行变量覆盖

53:代码审计-TP5框架及无框架变量覆盖反序列化

<2>搜索或访问触发全局变量配置文件配合手写代码测试变量覆盖

原理如下图所示

53:代码审计-TP5框架及无框架变量覆盖反序列化

<3>配合文件包含漏洞覆盖指定文件实现文件包含攻击获取权限

追踪$module变量出处文件,然后分析如何覆盖它达到目的

payload:/about/index.php?fmodule-7&module-1.txt

53:代码审计-TP5框架及无框架变量覆盖反序列化

附:代码审计-MetInfo CMS变量覆盖漏洞

https://www.cnblogs.com/-qing-/p/10889100.html

DeDecms变量覆盖之SQL语句分析报告+修复方案

https://www.cnblogs.com/y0umer/archive/2013/06/08/3125647.html

案例2:phpmyadmin-无框架-反序列化-自动审计或搜索

#反序列化-->自动审计或搜索关键字找到文件及代码段
_wakeup() //使用unserialize时触发
_sleep() //使用serialize时触发
_destruct() //对象被销毁时触发
_call() //在对象上下文中调用不可访问的方法时触发
_callStatic() //在静态上下文中调用不可访问的方法时触发
_get() //用于从不可访问的属性读取数据
_set() //用于将数据写入不可访问的属性
_isset() //在不可访问的属性上调用isset()或empty()触发
_unset() //在不可访问的属性上使用unset()时触发
_toString() //把类当做字符串使用时触发
_invoke() //当脚本尝试将对象调用为函数时触发

payload:/about/index.php?fmodule-7&module-1.txt

53:代码审计-TP5框架及无框架变量覆盖反序列化

首先全局搜索unserialize

53:代码审计-TP5框架及无框架变量覆盖反序列化

53:代码审计-TP5框架及无框架变量覆盖反序列化

全局搜索PMA_Config()找到_wakeup()代码段,代码段调用函数中存在eval等函数操作,可调试load

53:代码审计-TP5框架及无框架变量覆盖反序列化

53:代码审计-TP5框架及无框架变量覆盖反序列化

构造getSource()利用payload,实现file_get_contents函数配合eval执行

53:代码审计-TP5框架及无框架变量覆盖反序列化

payload:action=test&configuration=O:10:"PMA_Config":1:{s:6:"source",s:11:"d:/test.txt";}

53:代码审计-TP5框架及无框架变量覆盖反序列化

案例3:Thinkphp5-有框架-搭建使用入口访问调试sql等

Thinkphp5简要知识点

  • 入口文件,调试模式,访问路由,访问对应,内置安全等
  • 测试访问不同方法名,不同文件不同方法名(https://www.kancloud.cn/thinkphp/thinkphp5_quickstart/478279)
  • 其他参考:ThinkPHP5快速入门:https://www.kancloud.cn/thinkphp/thinkphp5_quickstart

<1>测试常规写法SQL注入

源代码-查询数据库常规写法

53:代码审计-TP5框架及无框架变量覆盖反序列化

测试,有sql注入

53:代码审计-TP5框架及无框架变量覆盖反序列化

<2>测试TP5规定写法SQL注入

源代码-使用框架定义写法查询数据库

53:代码审计-TP5框架及无框架变量覆盖反序列化

打开调试模式

53:代码审计-TP5框架及无框架变量覆盖反序列化

测试,尝试sql注入,发现注入语句并未执行,说明thinkphp框架有内置的注入安全过滤。

53:代码审计-TP5框架及无框架变量覆盖反序列化

此时,如果我们想挖sql注入漏洞,那就相当于挖框架漏洞而不是系统漏洞。

thinkphp历史漏洞集合:https://github.com/Mochazz/ThinkPHP-Vuln

从中我们找到了该版本存在SQL注入漏洞,使用payload测试

53:代码审计-TP5框架及无框架变量覆盖反序列化

 

53:代码审计-TP5框架及无框架变量覆盖反序列化

注入成功。

53:代码审计-TP5框架及无框架变量覆盖反序列化

上一篇:计算一个点围绕另一个点旋转指定弧度后坐标值的方法


下一篇:html页面的局部刷新