Xoops cms为一款台湾学校普遍使用的cms,该cms所报漏洞几乎都为SQL注入,但因其对文件的写入与上传限制的比较严格,导致从SQL注入进一步深入利用将比较困难。本次讲解一下在特定条件下如何深入利用该漏洞并getshell。
过程如下:
首先就是Xoops一些比较老的版本都会有的SQL注入
1.SQL注入文件写入尝试
直接上SQLmap梭哈
可以看到支持union联合查询并且是dba权限,这里首先想到的就是–os-shell写文件,尝试平常路径行不通之后,我通过目录扫描找到了他根目录下面的phpinfo文件(以下为dirsearch扫描到的部分目录,其中部分文件将会在之后起到重要作用)
在知晓路径之后继续使用sqlmap进行文件写入,但是发现还是写不进去。
初步怀疑可能mysql开启了安全模式(secure_file_priv),导致文件不能写入,接下来使用sqlmap的读文件命令进行判断安全模式是否开启(如果可以任意文件读取,即证明安全模式没有启用)
从下图可以看到,成功读取到了passwd文件,并将其输出到sqlmap默认路径中
既然安全模式没有开启,又写不进去文件,我猜想可能是网站根目录没有写入权限,在上文中的目录扫描中扫描到了uploads文件夹,像这种上传文件夹必然是有写入权限的。
接下来就尝试了在uploads文件夹中写入文件,写入txt成功。
原本以为万事大吉了,结果在写php文件时出了问题,文件成功写入,访问403。
这也不算什么事,对面中间件apache,可以通过上传.htaccess绕过嘛,使其将txt文件按照php脚本文件进行解析。.htaccess代码如下:
<FilesMatch “*.txt”>
SetHandler application/x-httpd-php
</FilesMatch>
该文件作用为只要是txt文件视作php脚本解析
向uploads目录下写入文件,但是报错了
使用sqlmap读取上传的.htaccess文件,发现该目录下原本就存在该文件,并且该文件还规定了脚本文件无法执行的设定,这就是之前上传php文件,访问时403的原因。由于apache的性质导致不能替换已存在的文件,所以在利用SQL注入写.htaccess文件时报错。
我到这里时几乎已经打消了利用SQL注入写文件的想法,因为通过上文目录扫描可以看到,该网站存在后台和phpmyadmin,这时我所能想到的就俩种方法。其一:登录后台上传文件,其二:通过phpmyadmin写shell 接下来一个一个尝试。
2.phpmyadmin日志getshell尝试
首先是使用phpmyadmin 来getshell 方法无非也就两种,一种和union联合注入一样用into outfile将木马写入指定目录,这种方法之前手注过行不通,另外一种就是开启日志并修改路径getshell
想要登录phpmyadmin 就需要数据库账号密码 ,获得账号密码也就两种方法,其一:读取mysql数据库内的user表,账号密码就在其中,不过密码是MD5加密的,能不能解出来就开缘分了。其二:读取调用SQL语句的脚本文件,只要关联到数据库肯定需要账号密码,只要一级一级去读取他调用的文件就可以找到明文账号和密码。
我运气比较背,读取数据库md5没有解出来过程就不直接展示了,直接第二种方法。之前提到过这是一套cms,只要下载下来审计一下就会很快找的存储密码的文件。
通过审计也是成功获得数据库账号密码,并成功登入phpmyadmin。
登录之后就可以打开日志写shell了
set global general_log = on; (开启日志写入)
set global general_log_file='可访问的网站路径'; (设置日志保存路径)
在修改前记得保存之前的日志路径,方便之后拿到shell后修改回来。
不出意外的话肯定又要出意外,不出所料无法更改日志路径。
3.通过后台getshell
现在就只能通过上admin账户进行getshell了
通过phpmyadmin找到admin账户密码,但是密码通过password_hash函数进行了加密,所以又只能返回去审计cms代码,找到对密码进行加密的代码,以便我们对其密码进行替换。
通过审计找到一处账户修改的文件,其中就有对密码的加密操作。通过读取目标站点的账户修改文件,确定了只是使用了php提供的PASSWORD_DEFAULT加密算法,并没有进行加盐操作。
之后提供替换其密码成功登入后台。
再登入后台之后,只存在一处图片上传点,尝试了几种简单的绕过方法,没有效果,返回cms代码进行对其上传点审计。 还是比较狠的黑白名单同时使用,因为是linux系统00截断行不通,上传这条路也被堵死。
在管理区存在一个模板管理,因为使用了smarty框架所以其.tpl文件和平常html差不多,但可以利用smarty框架执行php代码,但此处因无法修改导致无法利用,这里提出这一种思路仅供参考。
最后在网站管理处找到一处档案管理,进而找到档案保存路径
如果没有.htaccess文件进行限制php的解析,我们就可以在此目录写入木马
没有.htaccess文件,我们直接在phpmyadmin上利用SQL语句在次目录下写一个.htaccess,让其达到一个将jpg按照php执行的效果,这样木马也能达到一个隐藏效果
这样写入jpg文件即可拿到shell
访问写入的1.jpg,并执行命令,成功拿到shell
Xoops CMS下载地址:https://github.com/XOOPS/XoopsCore25
Fofa通过icon搜索该CMS : icon_hash=”1772557441″
数据库密码默认路径:/xoops_data/data/secure.php
密码加密文件路径(查看password_hash是否加盐时使用):/htdocs/edituser.php
没有回复内容