经过一番查找,我发现了该版本的Atlassian Crowd存在CVE-2019-11580漏洞,之后就是看看该漏洞是否存在公开的利用代码(exploit),然后我在Github中发现了这个远程代码执行(RCE)的exploit:
接下来的就是调试当前Atlassian Crowd应用是否存在该漏洞了。可以在其/admin/路径下的上传操作端uploadplugin.action点击查看,如果当前Atlassian Crowd应用回显了一个错误消息“HTTP Status 400 – Requires POST” ,那么这种情况说明它是存在该RCE漏洞的,也就是说其uploadplugin插件可以被未授权利用。
RCE代码执行
现在,我们从https://github.com/jas502n/CVE-2019-11580下载漏洞利用代码CVE-2019-11580.py,以当前Atlassian Crowd应用为目标,它确实存在CVE-2019-11580漏洞,并反弹回了一个webshell,如下:
接着,就可以通过浏览器浏览?cmd=command_here,访问到这个webshell了,当然其中的command_here可以替换成其它系统命令。如下:
所以,总结来看,该漏洞利用有三个好处:
1、无需任何用户账户密码;
2、RCE是以root身份执行的;
3、该Atlassian Crowd应用无任何安全防护。
但这还不够,我们需要一个能与目标系统执行交互的Webshell!
这里,我的想法是通过我的Attacker主机,实现对目标应用系统的操控交互。通常我用的是PentestMonkey上提供的反弹Shell,但可惜的是,其中的交互命令在与我的Attacker主机连接执行时没有任何回连显示,很可能是目标Web应用过滤了如> & 以及‘ “这些特殊字符。
为此,我只有在我的Attacker主机放置了一个回连python脚本reverse.py,然后通过之前的RCE命令迫使目标Web应用来对它执行下载,然后再通过我的Attacker主机连接它,实现控制。具体的python回连脚本reverse.py如下:
目标Web应用从我的Attacker主机中下载python回连脚本reverse.py:
就这样,我们就向目标Web应用系统中植入了一个反弹脚本,之后,需要对该脚本文件进行chmod权限修改以便我们能访问执行,如可以把它修改为700:
目标Web应用下载了reverse.py后,我们这边的Attacker主机需要设置一个监听端口:
$ nc -lvp <our_port>