Web應用安全測試前期情報收集方法與工具的介紹
本文轉載自" FreeBuf.COM",編譯:secist
背景
這是一篇關於我在Web應用安全測試前期,進行情報收集的方法與使用工具的詳細介紹文章。其實在很早之前,就有很多我的朋友以及社群成員要求我分享我的一些偵察經驗。但我迷上了一部非常好看的電視劇,因此一直都沒有時間。最近,我又收到了InfoSec社群的一些新成員的請求,這也促使我決定去寫這篇文章。本文除了會介紹一些偵察的方法外,還會包含一些非常實用的偵察工具和服務。這些工具和服務在測試期間都給予了我很大的幫助,相信掌握這些工具和服務的使用,必定也會給你帶來幫助。
簡介
每當我收到一個新程式或者我想測試一個目標時,我首先會使用的工具就是。
之所以選擇使用它,是因為他可以為我提供一個帶有響應碼的子域快速瀏覽。
有一次,我在2分鐘內就發現了一個子域接管錯誤。
knockpy可以說是我的幸運神器,迄今為止在上knockpy已幫助我發現了近150個的bug。透過knockpy我很快就看到了一個指向AWS S3 bucket的404頁面,並且bucket可用於建立。因此,我毫不猶豫的建立了新的AWS S3 bucket,並用編碼的檔名上傳了一個文字檔案。在成功測試後,我第一時間報告了錯誤,在短短的15分鐘內我就得到了賞金。
工具定製
我使用自定義的工具進行子域偵察。
我使用了的解析工具並定製了它。
Malvinsh工具正在做兩個非常簡單的過程。
使用HOST從wordlist獲取域/子域的IP地址。
執行Nmap掃描。
使用它的邏輯,我建立了兩個指令碼。
Subdomain.rb
Recon.rb
警告:請勿在未經允許的程式和目標範圍使用這些指令碼。
Subdomain.rb
Subdomain.rb是一個輕量級指令碼,用於自動化的子域查詢,而且它非常靈活 – 你可以輕鬆的為其新增其它工具。
Subfinder和sublist3r的結果有時會重疊,因此通常我會單獨執行他們,實驗證明這樣做的效果非常好 - 這就是為什麼我在這個指令碼中儲存了這兩種工具的原因。
該指令碼正在使用以下工具來獲取子域資料。
subdomain.rb
使用:
ruby subdomain.rb domain.com
我通常會建立一個檔案,並將以上的輸出的子域新增到檔案中。然後,使用sort命令從檔案中刪除所有重複的子域。
sort wordlist | uniq
我將最後一個唯一的子域檔案傳遞給recon.rb
Resolve.rb
Recon.rb是另一個輕量級指令碼,它也很靈活,同樣可以你可以為其新增其它工具。工具被包含在recon.rb中
Host : 解析子域
Nmap : 執行對子域的埠掃描
AWS CLI – 在AWS CLI使用的指令碼中,測試子域連線到AWS bucket或不檢查列表許可權。(可以自定義以測試寫入許可權檔案。)
Dirsearch – 搜尋預設字典列表和所有(*)副檔名的目錄。
recon.rb
使用:
ruby recon.sh wordlist
Lazyrecon
部落格文章
https://blog.it-securityguard.com/bugbounty-decoding-a-%F0%9F%98%B1-00000-htpasswd-bounty/
Visual Recon(視覺化偵察)
我使用之前從subdomain.rb生成的wordlist進行視覺化偵察。
我通常使用以下兩個工具。
部落格文章
https://blog.it-securityguard.com/visual-recon-a-beginners-guide/
獲取更多的資訊
當我對某個特定程式報告2-3個問題後,我會提交報告並等待廠商的回應。如果這個程式足夠吸引我,那麼我會繼續嘗試使用以下服務收集儘可能多的關於目標的資訊。
Censys
-Commands 443.https.tls.certificate.parsed.extensions.subject_alt_name.dns_names:domain.com
“hackme.tld” + internal
“hackme.tld” + sandbox
“hackme.tld” + Staging
“hackme.tld” + Development/Dev
“hackme.tld” + production/prod
hackme inc Credit: @nahamsec
Interesting posts: https://0xpatrik.com/censys-guide/
Censys工具:
Shodan
Basics Filters: 1. City
Example City:New Delhi. 2. Country Example: Country:INDIA 3. Port Example:Ports: 8443, 8080, 8180 etc 4. OS (Operating System) Example: microsoft-iis os:"windows 2003" 5. Geo Example: apache geo:42.9693,-74.1224 6. Hostname Example: hostname:domain.com 7. After and Before Example: apache before:1/01/2014 8. Org Example: Org: Hackerone Inc. 9. Product Example: Product: Tomcat 10. Title Example: Title: “Dashboard [Jenkins]”
Taken from: https://
ViewDNS?—?反向Whois查詢。
使用whois命令獲取目標的whois資訊或使用任何其它線上工具獲取。
whois domain.com
如果該公司未使用域隱私服務,
你將能找到host-masters的電子郵件地址,然後你使用該電子郵件透過反向Whois來查詢在同一電子郵件地址上註冊的其他域。目標合法註冊名稱也可以使用。
AltDNS
Nmap Subdomain finding
#Finding subdomains via Nmap. nmap --script dns-brute --script-args dns-brute.domain=domain.com,dns-brute.threads=6,dns-brute.hostlist=./sub1000.lst
nmap --script dns-brute --script-args dns-brute.domain=domain.com,dns-brute.threads=6,dns-brute.hostlist=./sub10000.lst
nmap --script dns-brute --script-args dns-brute.domain=domain.com,dns-brute.threads=6,dns-brute.hostlist=./sub100000.lst
nmap --script dns-brute --script-args dns-brute.domain=domain.com,dns-brute.threads=6,dns-brute.hostlist=./sub1000000.lst #Wordlist : 1. sub1000.lst - https://drive.google.com/open?id=0B0h-Dh0Oss1zOGFqVVl1bTVpdWc 2. sub10000.lst - https://drive.google.com/open?id=0B0h-Dh0Oss1zTTdmQnZsQ0JCYzA 3. sub100000.lst - https://drive.google.com/open?id=0B0h-Dh0Oss1zdDBFT1dCc08ya0U 4. sub1000000.lst - https://drive.google.com/open?id=0B0h-Dh0Oss1zODNfSG1sbVJ1WE0 In case above links are not available : https://github.com/ehsahil/wordlists-for-nmap #Taken from http://blog.x1622.com/2016/11/subdomain-discovery-with-nmap-and.html
Content-Security-Policy (CSP)
工具
使用Burp Suite發現目標,影片演示:
Burp Suite連結目標發現:
1. 關閉被動掃描
2. 設定表單自動提交
3. 將範圍設定為advanced control並使用目標名稱字串(不是正常的FQDN)
4. 遍歷+瀏覽,然後遞迴地複製所有主機!
5. 更多的目標!
Domain Analyzer
Domain Profiler
VHost Scan
ThreatCrowd
Visual Site Mapper
證照透明度
Google透明度報告
Certsspotter
CertDB
Crt.sh —
Facebook證照透明度監控訂閱。
https://developers.facebook.com/tools/ct
部落格文章和工具
偵察技術PDF文件
資料儲存Buckets
資料儲存buckets通常所處位置。
Github
Javascript files
CSP Headers
Archive crawl
Pastebin
提示:如果bucket返回訪問被拒絕的資訊。那麼請嘗試在Google上搜尋它。該團隊很有可能最近更改了bucket的許可權,並且特定檔案已被Google編入索引(具有讀取許可權)。
如果應用程式具有檔案上傳功能,則嘗試捕獲檔案上傳請求並檢視檔案上傳的位置。有時你可能會發現AWS或其他資料儲存buckets,這是其他方法無法找到的。
如果你找到像upload-usercontent-target-prod這樣的儲存bucket,請嘗試將prod更改為dev,staging,sandbox等。
?—?AWS CLI可用於驗證或測試AWS S3 buckets許可權,建立儲存Buckets以及讀取其他儲存Buckets資料。AWS帳戶需要使用CLI。
1. Listing AWS bucket content. (Testing for list permission)
Sahils-MacBook-Pro:~ sahil$ aws s3 ls s3://bucket 2. Writing on AWS Bucket. (Testing for write Permission)
Sahils-MacBook-Pro:~ sahil$ aws s3 cp test.txt s3://bucket (Copying test.txt into the bucket with no public file read permission)
Sahils-MacBook-Pro:~ sahil$ aws s3 mv test.txt s3://bucket (Moving test.txt into the bucket with no public file read permission)
Copy test.txt file into the aws s3 bucket with public file read permission.
Sahils-MacBook-Pro:~ sahil$ aws s3 cp test.txt s3://bucket --grants read=uri=
Sometimes the bucket are only available in a particular region. For that use the following regions with `--region` flag. 1. US East (N. Virginia) - us-east-1 2. US East (Ohio) - us-east-2 3. US West (N. California) - us-west-1 4. US West (Oregon) - us-west-2 5. Canada (Central) - ca-central-1 6. Asia Pacific (Mumbai) - ap-south-1 7. Asia Pacific (Seoul) - ap-northeast-2 8. Asia Pacific (Osaka-Local) *** - ap-northeast-3 9. Asia Pacific (Singapore) - ap-southeast-1 10. Asia Pacific (Sydney) - ap-southeast-2 11. Asia Pacific (Tokyo) - ap-northeast-1 12. China (Beijing) - cn-north-1 13. China (Ningxia) - cn-northwest-1 14. EU (Frankfurt) - eu-central-1 15. EU (Ireland) - eu-west-1 16. EU (London) - eu-west-2 17. EU (Paris) - eu-west-3 18. South America (S?o Paulo) - sa-east-1
Example:
Sahils-MacBook-Pro:~ sahil$ aws s3 ls s3://bucket --region us-east-2 3. Deleting files from the bucket.
Sahils-MacBook-Pro:~ sahil$ aws s3 rm s3://bucket/test.txt
Reference :
Bucket Finder – 一款非常好用的使用子域wordlist查詢buckets的工具,可以把他整合到recon.rb指令碼中。
LazyS3 – LazyS3是另一款我經常用來查詢staging, sandboxed, dev和生產buckets的工具。
Slurp:一款優秀的AWS Buckets Recon工具。
S3 Bucket Finder – 同樣適用於AWS S3 buckets的工具。
部落格文章
偵察Github
Github對於查詢目標的敏感資訊非常有幫助。在公共GitHub儲存庫中可以找到訪問金鑰,密碼,開放式端點,s3 buckets,備份檔案等。
“Hackme.tld” API_key
“Hackme.tld” secret_key
“Hackme.tld” aws_key
“Hackme.tld” Password
“Hackme.tld” FTP
“Hackme.tld” login
“Hackme.tld” github_token
“Hackme.tld” http:// & “Hackme.tld” amazonaws
“Hackme.tld” digitaloceanspaces
“Hackme.tld” storage.googleapis.com
“Hackme.tld” access_token
“Hackme.tld” blob.core.windows.net
“Hackme.tld” token
“Hackme.tld” secret
“Hackme.tld” TODO
“Hackme.tld” vulnerable
“Hackme.tld” CSRF
“Hackme.tld” Hash
“Hackme.tld” random
“Hackme.tld” HMAC
“Hackme.tld” MD5, SHA-1, SHA-2, etc.
credits @edoverflow & @nahamsec.
部落格文章
仔細檢視每個JS檔案
有時,Javascript檔案中會包含一些敏感資訊,例如各種金鑰或硬編碼令牌。
我在Javascript中找到了以下內容:
AWS或其他服務訪問金鑰
AWS S3 buckets或其他具有讀/寫許可權的資料儲存buckets。
開啟備份sql資料庫端點
開放內部服務端點。
工具
我通常喜歡在JSBeautifier的幫助下手動閱讀JavaScript程式碼。
以下工具很有用:
LinkFinder
JSParser – Behrouz Sadeghipour開發的另一款類似工具。
部落格文章
存檔
在waybackmachine中搜尋目標網頁,可以找到以下內容:
舊的和被棄用的JS檔案。
舊API端點。
被棄用的CDN端點。
被棄用的子域名。
原始碼註釋中提供的Dev&staging端點資訊 。
如果頁面返回403,你也可以在way back machine搜尋目標那些403頁面,你會發現一些有用的資訊。
工具:
持續偵察
在持續偵察中最重要的是處理未來使用的偵察資料,為此,我在SecurityEscape中建立了一個名為Swiftness的工具。我使用Swiftness來儲存每個目標的所有偵察資料,並設定任務提醒來定期對目標進行重訪調查(每個月)。
個人的一些小建議總結:
關注twitter上的一些安全動態以及安全工程師或安全公司的推特
閱讀儘可能多相關的技術博文
以正常使用者身份使用目標公司服務(如果可以)
閱讀Github上commits和public issues對話
瀏覽robots.txt檔案
熟悉公司DEV棧並儘可能使用它們
在YouTube或其他平臺上觀看目標公司的影片,包括新產品、演示、會議等
在Pastebin和trello等平臺上搜尋目標資訊
使用搜尋引擎dork搜尋swf, txt, xml等檔案
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31510736/viewspace-2156060/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- web安全前期的資訊收集工作Web
- 常見的Web安全漏洞及測試方法介紹Web
- 安全測試工具收集
- 滲透測試工具多個應用場合介紹
- 8個實用且免費的Web應用程式安全測試工具Web
- 三位一體的漏洞分析方法-web應用安全測試方法Web
- web應用安全測試之業務漏洞Web
- Web應用掃描測試工具VegaWeb
- 安全及效能測試工具(網站收集)網站
- 效能測試:主流壓測工具介紹
- 記學習滲透測試之情報收集
- 靜態應用程式安全測試 (SAST) 工具AST
- Web應用程式資訊收集工具wigWeb
- Android測試工具 UIAutomator入門與介紹AndroidUI
- LLM應用測試策略與方法
- 開源測試工具 JMeter 介紹JMeter
- Web應用程式測試的工具selenium用法詳解Web
- web應用存在的10大安全問題,安全測試不容忽視!Web
- Invicti v24.6.0 for Windows - Web 應用程式安全測試WindowsWeb
- Invicti v24.4.0 for Windows - Web 應用程式安全測試WindowsWeb
- Invicti v24.3.0 for Windows - Web 應用程式安全測試WindowsWeb
- Invicti v24.7.0 for Windows - Web 應用程式安全測試WindowsWeb
- 資料介面測試工具 Postman 介紹Postman
- sitespeedio前端效能測試工具介紹前端
- 介面測試工具 tep 介紹 (開源)
- 測試跟蹤工具Bugzilla介紹
- 前端單元測試總結及測試工具介紹前端
- APP安全檢測 滲透測試APP服務介紹與過程APP
- MySQL壓測工具mysqlslap的介紹與使用MySql
- web安全性測試用例Web
- 面向Web應用的併發壓力測試工具——Locust實用攻略Web
- 使用JMeter測試Web應用JMeterWeb
- Python 應用剖析工具介紹Python
- 【RAT】Oracle Real Application Testing(真用應用測試)介紹OracleAPP
- Invicti v24.10.0 for Windows - Web 應用程式安全測試WindowsWeb
- 如何寫好測試用例以及go單元測試工具testify簡單介紹Go
- Web安全測試Web
- iOS 應用效能測試的相關方法、工具及技巧iOS