菜鸟学习一下代码审计,加深对漏洞原理的理解。
源码是基于ThinkPHP3.2.2框架开发的企业网站内容管理系统
其中App文件夹下的文件将是审计的重点。
大部分文件在获取参数的时候会进行一次正则匹配
对传入不是整数的参数程序会直接结束,有效的过滤了一部分可能产生注入的地方。
在\App\Home\Controller\UserController.class.php文件下却发现
do_name()方法将post传入的id带入了find查询,我们都知道tp3是有爆出过注入的,因此在这构成注入
http://www.a.com/index.php?s=/user/do_name.html
id[where]=1%20and%20updatexml(1,concat(0x7e,user(),0x7e),1)--
注入条件是要前台登录。
该文件的do_detail()方法,do_pass()方法也有着相同的问题
继续对源码阅读,并没有发现前台有其他漏洞。可能是我技术菜
后台文件使用zend加密,使用在线解密网站解密文件
http://dezend.qiling.org/free/
\App\Manage\Controller\PhotoController.class.php
ID通过get请求获取带入where查询,并且无引号保护造成注入,
后台其他文件造成注入的原因基本同理,
通过代码分析更容易理解漏洞,该源码后台还有一处任意文件删除,网上已有分析,就没有写
tp3注入原理参考
https://xz.aliyun.com/t/2629