码迷,mamicode.com
首页 > 其他好文 > 详细

五十三:代码审计-TP5框架及无框架变量覆盖及代码审计

时间:2021-03-06 14:12:18      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:src   date   手写   实现   分析   sel   mamicode   eva   isset   

技术图片

漏洞关键字

SQL注入:
select insert update mysql_query mysqli等
文件上传:
$_FILES,type="file",上传,move_upload_file()等
XSS跨站:
print print_r echo sprintf die var_dump var_export等
文件包含:
Include include_once require require_once等
代码执行:
eval assert preg replace call user func call user func array等
命令执行:
system exec shell_exec `` passthru pcntl_exec popen proc_open
变量覆盖:
extract() parse_str() importrequestvariables() $$等
反序列化:
serialize() unserialize() _construct _destruct等
通用关键字:
$_GET $_POST $_REQUEST $_FILES $_SEVER

双$$可能存在变量覆盖漏洞

foreach遍历PHP中array(数组)中的值 var_dump()输出数组的变量
技术图片
变量名等于参数名,实现覆盖,接受$_GET,$_POST,$_COOKIE的值
配合文件包含->满足包含变量覆盖的配置文件->找到可控变量包含的代码段->将可控变量进行覆盖->造成包含一句话木马

变量覆盖配合文件包含实现任意文件包含
自动审计或搜索关键字找到文件及代码段,全局配置文件搜索或访问触发全局配置文件配合手写代码测试变量覆盖
配合文件包含漏洞覆盖指定文件实现文件包含攻击获取权限

追踪$module变量出处文件,然后分析如何覆盖它达到目的
payload:/about/index.php?fmodele=7&module=1.txt

反序列化

自动审计或搜索关键字找到文件及代码段
__wakeup() //使用unserialize时触发
__sleep() //使用serizalize时触发
__destruct() //对象被销毁时触发
__call() //在对象上下文中调用不可访问的方法时触发
__callstatic() //在静态上下文中调用不可访问的方法时触发
__get() //用于从不可访问的属性读取数据
__isset() //在不可访问的属性上调用iisset()或者empyt() 触发

找到__wakeup代码段,代码段调用函数中存在eval()等函数操作,可调试payload
构造getsource()利用payload,实现file_get_contents函数配合eval执行
payload:action=test&configuration=0:10:"PMA_config":1:{s:6:"source",11:"d:/test.txt";}

Thinkphp5 简要知识点

模块/目录/文件/方法

入口文件,调试模式,访问路由,访问对应
内置安全等测试访问不同方法名,不同文件不同方法名
测试常规写法SQL注入,TP5规定写法SQL注入

thinkphp框架

五十三:代码审计-TP5框架及无框架变量覆盖及代码审计

标签:src   date   手写   实现   分析   sel   mamicode   eva   isset   

原文地址:https://www.cnblogs.com/SnowSec/p/14485491.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!