Web應用安全測試前期情報收集方法與工具的介紹

IT168GB發表於2018-06-12

    本文轉載自" FreeBuf.COM",編譯secist

    背景

    這是一篇關於我在Web應用安全測試前期,進行情報收集的方法與使用工具的詳細介紹文章。其實在很早之前,就有很多我的朋友以及社群成員要求我分享我的一些偵察經驗。但我迷上了一部非常好看的電視劇,因此一直都沒有時間。最近,我又收到了InfoSec社群的一些新成員的請求,這也促使我決定去寫這篇文章。本文除了會介紹一些偵察的方法外,還會包含一些非常實用的偵察工具和服務。這些工具和服務在測試期間都給予了我很大的幫助,相信掌握這些工具和服務的使用,必定也會給你帶來幫助

Web應用安全測試前期情報收集方法與工具的介紹

簡介

每當我收到一個新程式或者我想測試一個目標時,我首先會使用的工具就是

之所以選擇使用它,是因為他可以為我提供一個帶有響應碼的子域快速瀏覽。

有一次,我在2分鐘內就發現了一個子域接管錯誤。

knockpy可以說是我的幸運神器,迄今為止在上knockpy已幫助我發現了近150個的bug。透過knockpy我很快就看到了一個指向AWS S3 bucket的404頁面,並且bucket可用於建立。因此,我毫不猶豫的建立了新的AWS S3 bucket,並用編碼的檔名上傳了一個文字檔案。在成功測試後,我第一時間報告了錯誤,在短短的15分鐘內我就得到了賞金。

Web應用安全測試前期情報收集方法與工具的介紹

工具定製

我使用自定義的工具進行子域偵察。

我使用了的解析工具並定製了它。

Web應用安全測試前期情報收集方法與工具的介紹

Malvinsh工具正在做兩個非常簡單的過程。

使用HOST從wordlist獲取域/子域的IP地址。

執行Nmap掃描。

使用它的邏輯,我建立了兩個指令碼。

Subdomain.rb

Recon.rb

警告:請勿在未經允許的程式和目標範圍使用這些指令碼。

Subdomain.rb

Subdomain.rb是一個輕量級指令碼,用於自動化的子域查詢,而且它非常靈活 – 你可以輕鬆的為其新增其它工具。

Subfinder和sublist3r的結果有時會重疊,因此通常我會單獨執行他們,實驗證明這樣做的效果非常好 - 這就是為什麼我在這個指令碼中儲存了這兩種工具的原因。

該指令碼正在使用以下工具來獲取子域資料。

 

subdomain.rb 

使用:

ruby subdomain.rb domain.com

Web應用安全測試前期情報收集方法與工具的介紹

我通常會建立一個檔案,並將以上的輸出的子域新增到檔案中。然後,使用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

Web應用安全測試前期情報收集方法與工具的介紹

Lazyrecon

部落格文章

https://blog.it-securityguard.com/bugbounty-decoding-a-%F0%9F%98%B1-00000-htpasswd-bounty/

Visual Recon(視覺化偵察)

我使用之前從subdomain.rb生成的wordlist進行視覺化偵察。

我通常使用以下兩個工具。

Web應用安全測試前期情報收集方法與工具的介紹

Web應用安全測試前期情報收集方法與工具的介紹

部落格文章

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來查詢在同一電子郵件地址上註冊的其他域。目標合法註冊名稱也可以使用。

Web應用安全測試前期情報收集方法與工具的介紹

v

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)

工具

https://securityheaders.com/

使用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

Web應用安全測試前期情報收集方法與工具的介紹Web應用安全測試前期情報收集方法與工具的介紹

部落格文章和工具

偵察技術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來儲存每個目標的所有偵察資料,並設定任務提醒來定期對目標進行重訪調查(每個月)。

Bucket Finder - 一款非常好用的使用子域wordlist查詢buckets的工具,可以把他整合到recon.rb指令碼中。

個人的一些小建議總結:

關注twitter上的一些安全動態以及安全工程師或安全公司的推特

閱讀儘可能多相關的技術博文

以正常使用者身份使用目標公司服務(如果可以)

閱讀Github上commits和public issues對話

瀏覽robots.txt檔案

熟悉公司DEV棧並儘可能使用它們

在YouTube或其他平臺上觀看目標公司的影片,包括新產品、演示、會議等

在Pastebin和trello等平臺上搜尋目標資訊

使用搜尋引擎dork搜尋swf, txt, xml等檔案

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31510736/viewspace-2156060/,如需轉載,請註明出處,否則將追究法律責任。

相關文章