Catfish任意代码执行漏洞
漏洞影响
Catfish6.3.0
复现过程漏洞位置:application\install\controller\Index.php step3() 在该函数中会将我们传入的内容替换database.php中的数据 我们来看下该文件
这么一看会发现很简单,是不是只要post 传入
prefix=','a'=>exec('calc')]?>
之类的的就可以成功写入里面呢,但是经过断点跟踪发下存在一些问题。 在此之前会进行一个查询,如果我们传
prefix=','a'=>exec('calc')]?>
,那么最终的查询语句就是select * from ','a'=>exec('calc')]?>posts where id=1
很明显会sql语法错误,所以为了绕过这个地方需要加些东西,我们只要保证能查出数据即可。 所以我们可以传
prefix=information_schema.schemata%23','a'=>exec('calc')]?>
这样拼接的sql语句为select * from information_schema.schemata%23','a'=>exec('calc')]?>>posts where id=1
#后面的会被注释掉,所以最终执行的sql语句为select * from information_schema.schemata
。成功达到查出数据的目的。 在安装的过程抓包修改post参数如下。
接着我们来看下本地的database.php文件
可以看到成功写入。 剩下的就简单了,因为是数据库配置文件,所以任何调用数据库的地方都会触发,比如首页。