這幾天整理了下網站滲透測試中基礎部分的第三節(jié),我們SINE安全滲透工程師對代碼安全審計,手工滲透測試檢查代碼的危險漏洞方法,找出安全問題重點,配合工具掃描來達到測試漏洞的目的,本測試重點僅限于客戶授權才能操作,切記忽非法嘗試入侵!以下方法只是提供網站安全檢測的具體參考意見。
1.5. 代碼審計
1.5.1. 簡介
代碼審計是找到應用缺陷的過程。其通常有白盒、黑盒、灰盒等方式。白盒指通過對源代碼的分析找到應用缺陷,黑盒通常不涉及到源代碼,多使用模糊測試的方式,而灰盒則是黑白結合的方式。
1.5.2. 常用概念
1.5.2.1. 輸入
應用的輸入,可以是請求的參數(GET、POST等)、上傳的文件、網絡、數據庫等用戶可控或者間接可控的地方。
1.5.2.2. 處理函數
處理數據的函數,可能是過濾,也可能是編解碼。
1.5.2.3. 危險函數
又常叫做Sink Call、漏洞點,是可能觸發(fā)危險行為如文件操作、命令執(zhí)行、數據庫操作等行為的函數。
1.5.3. 自動化審計
一般認為一個漏洞的觸發(fā)過程是從輸入經過過濾到危險函數的過程,而審計就是尋找這個鏈條的過程。
1.5.3.1. 危險函數匹配
白盒審計最常見的方式是通過搜尋危險函數與危險參數定位漏洞,比較有代表性的工具是Seay開發(fā)的審計工具。這種方法誤報率相當高,這是因為這種方法沒有對程序的流程進行深入分析,另一方面,這種方式通常是孤立地分析每一個文件,忽略了文件之間復雜的調用關系。
具體的說,這種方式在一些環(huán)境下能做到幾乎無漏報,只要審計者有耐心,可以發(fā)現大部分的漏洞,但是在高度框架化的代碼中,能找到的漏洞相對有限。
1.5.3.2. 控制流分析
在后來的系統(tǒng)中,考慮到一定程度引入AST作為分析的依據,在一定程度上減少了誤報,但是仍存在很多缺陷。
而后,Dahse J等人設計了RIPS,該工具進行數據流與控制流分析,結合過程內與過程間的分析得到審計結果,相對危險函數匹配的方式來說誤報率少了很多,但是同樣的也增加了開銷。
1.5.3.3. 灰盒分析
國內安全研究員fate0提出了基于運行時的分析方式,解決了控制流分析實現復雜、計算路徑開銷大的問題。
1.5.4. 手工審計方式
拿到代碼,確定版本,確定能否正常運行
找歷史漏洞
找應用該系統(tǒng)的實例
簡單審計,運行審計工具看是否有漏洞
大概看懂整個程序是如何運行的
文件如何加載
類庫依賴
有沒有加載waf
數據庫如何連接
mysql/mysqli/pdo
有沒有用預編譯
視圖如何形成
能不能xss
能不能模版注入
SESSION如何處理
文件
數據庫
內存
Cache如何處理
文件cache可能寫shell
數據庫cache可能注入
memcache
看賬戶體系
管理員賬戶的密碼
加密方式
泄漏數據后能不能爆破密碼
重置漏洞
修改密碼漏洞
修改其他人密碼
普通用戶的帳號
能否拿到普通用戶權限
普通用戶帳號能否*
重點找沒有帳號的情況下可以訪問的頁面
是不是OAuth
攻擊
SQLi
看全局過濾能否bypass
看是否有直接執(zhí)行sql的地方
看是用的什么驅動,mysql/mysqli/pdo
如果使用PDO,看是否是直接執(zhí)行的地方
XSS
全局bypass
直接echo
看視圖是怎么加載的
FILE
上傳下載覆蓋刪除
包含
LFI
RFI
全局找include, require
正常上傳
看上傳是如何確定能否上傳文件的
RCE
call_user_func
eval
assert
preg_replace /e
XXE
CSRF
SSRF
反序列化
變量覆蓋
extract
parse_str
array_map
LDAP
XPath
Cookie偽造
過濾
找WAF
看waf怎么過濾的,相應的如何繞過
點擊添加圖片描述(最多60個字)
1.6. WAF
1.6.1. 簡介
1.6.1.1. 概念
WAF(Web Application Firewall,Web應用防火墻)是通過執(zhí)行一系列針對HTTP/HTTPS的安全策略來專門為Web應用提供加固的產品。 在市場上,有各種價格各種功能和選項的WAF。在一定程度上,WAF能為Web應用提供安全性,但是不能保證完全的安全。
1.6.1.2. 常見功能
檢測異常協議,拒絕不符合HTTP標準的請求
對狀態(tài)管理進行會話保護
Cookies保護
信息泄露保護
DDoS防護
禁止某些IP訪問
可疑IP檢查
安全HTTP頭管理
X-XSS-Protection
X-Frame-Options
機制檢測
CSRF token
HSTS
1.6.1.3. 布置位置
按布置位置,WAF可以分為云WAF、主機防護軟件和硬件防護。云WAF布置在云上,請求先經過云服務器而后流向主機。主機防護軟件需要主機預先安裝對應軟件,如mod_security、ngx-lua-waf等,對主機進行防護。硬件防護指流量流向主機時,先經過設備的清洗和攔截。
1.6.2. 防護方式
WAF常用的方法有關鍵字檢測、正則表達式檢測、語法分析、行為分析、聲譽分析、機器學習等。
基于正則的保護是最常見的保護方式。開發(fā)者用一些設定好的正則規(guī)則來檢測載荷是否存在攻擊性?;谡齽t的防護較為簡單,因此存在一些缺點。例如只能應用于單次請求,而且正則很難應用到一些復雜的協議上。
基于語法的分析相對正則來說更快而且更準確,這種分析會把載荷按照語法解析成的符號組,然后在符號組中尋找危險的關鍵字。這種方式對一些載荷的變式有較好的效果,但是同樣的,對解析器要求較高。
基于行為的分析著眼的范圍更廣一些,例如攻擊者的端口掃描行為、目錄爆破、參數測試或者一些其他自動化或者攻擊的模式都會被納入考慮之中。
基于聲譽的分析可以比較好的過濾掉一些可疑的來源,例如常用的VPN、匿名代理、Tor節(jié)點、僵尸網絡節(jié)點的IP等。
基于機器學習的WAF涉及到的范圍非常廣,效果也因具體實現和場景而較為多樣化。
除了按具體的方法分,也可以根據白名單和黑名單的使用來分類?;诎酌麊蔚腤AF適用于穩(wěn)定的Web應用,而基于黑名單則適合處理已知問題。
1.6.3. 掃描器防御
基于User-Agent識別
基于攻擊載荷識別
驗證碼
1.6.4. WAF指紋
額外的Cookie
額外的Header
被拒絕請求時的返回內容
被拒絕請求時的返回響應碼
IP
1.6.5. 繞過方式
1.6.5.1. 基于架構的繞過
站點在WAF后,但是站點可直連
站點在云服務器中,對同網段服務器無WAF
1.6.5.2. 基于資源的繞過
使用消耗大的載荷,耗盡WAF的計算資源
1.6.5.3. 基于解析的繞過
字符集解析不同
協議覆蓋不全
協議解析不正確
站點和WAF對https有部分不一致
WAF解析與Web服務解析不一致
同一個參數多次出現,取的位置不一樣
HTTP Parameter Pollution (HPP)
HTTP Parameter Fragmentation (HPF)
1.6.5.4. 基于規(guī)則的繞過
等價替換
等價函數
等價變量
關鍵字拆分
字符串操作
大小寫變換
select => sEleCt
<>alert(1)
字符編碼
URL編碼
十六進制編碼
Unicode解析
HTML
JSFuck
其他編碼格式
字符干擾
注釋
空字符
NULL (x00)
空格
回車 (x0d)
換行 (x0a)
垂直制表 (x0b)
水平制表 (x09)
換頁 (x0c)
特殊符號
注釋符
引號(反引號、單引號、雙引號)
利用服務本身特點
替換可疑關鍵字為空
selselectect => select
少見特性未在規(guī)則列表中
2.1. 域名信息
2.1.1. Whois
Whois 可以查詢域名是否被注冊,以及注冊域名的詳細信息的數據庫,其中可能會存在一些有用的信息,例如域名所有人、域名注冊商、郵箱等。
2.1.2. 搜索引擎搜索
搜索引擎通常會記錄域名信息,可以通過 site:域名的語法來查詢。
2.1.3. 第三方查詢
網絡中有相當多的第三方應用提供了子域的查詢功能,下面有一些例子,更多的網站可以在 8.1 工具列表 中查找。
DNSDumpster
Virustotal
CrtSearch
threatminer
Censys
2.1.4. ASN信息關聯
在網絡中一個自治系統(tǒng)(Autonomous System, AS)是一個有權自主地決定在本系統(tǒng)中應采用何種路由協議的小型單位。這個網絡單位可以是一個簡單的網絡也可以是一個由一個或多個普通的網絡管理員來控制的網絡群體,它是一個單獨的可管理的網絡單元(例如一所大學,一個企業(yè)或者一個公司個體)。
一個自治系統(tǒng)有時也被稱為是一個路由選擇域(routing domain)。一個自治系統(tǒng)將會分配一個全局的唯一的16位號碼,這個號碼被稱為自治系統(tǒng)號(ASN)。因此可以通過ASN號來查找可能相關的IP,例如:
whois -h whois.xxx.net -- '-i origin AS111111' | grep -Eo "([0-9.]+){4}/[0-9]+" | uniq
nmap -- targets-asn ---args targets-asn.asn=15169
2.1.5. 域名相關性
同一個企業(yè)/個人注冊的多個域名通常具有一定的相關性,例如使用了同一個郵箱來注冊、使用了同一個備案、同一個負責人來注冊等,可以使用這種方式來查找關聯的域名。一種操作步驟如下:
查詢域名注冊郵箱
通過域名查詢備案號
通過備案號查詢域名
反查注冊郵箱
反查注冊人
通過注冊人查詢到的域名在查詢郵箱
通過上一步郵箱去查詢域名
查詢以上獲取出的域名的子域名
2.1.6. 網站信息利用
網站中有相當多的信息,網站本身、各項安全策略、設置等都可能暴露出一些信息。
網站本身的交互通常不囿于單個域名,會和其他子域交互。對于這種情況,可以通過爬取網站,收集站點中的其他子域信息。這些信息通常出現在Java文件、資源文件鏈接等位置。
網站的安全策略如跨域策略、CSP規(guī)則等通常也包含相關域名的信息。有時候多個域名為了方便會使用同一個SSL/TLS證書,因此有時可通過證書來獲取相關域名信息。
2.1.7. 證書透明度
為了保證HTTPS證書不會被誤發(fā)或偽造,CA會將證書記錄到可公開驗證、不可篡改且只能附加內容的日志中,任何感興趣的相關方都可以查看由授權中心簽發(fā)的所有證書。因此可以通過查詢已授權證書的方式來獲得相關域名。
2.1.8. 域傳送漏洞
DNS域傳送(zone transfer)指的是冗余備份服務器使用來自主服務器的數據刷新自己的域(zone)數據庫。這是為了防止主服務器因意外不可用時影響到整個域名的解析。
一般來說,域傳送操作應該只允許可信的備用DNS服務器發(fā)起,但是如果錯誤配置了授權,那么任意用戶都可以獲得整個DNS服務器的域名信息。這種錯誤授權被稱作是DNS域傳送漏洞。
2.1.9. Passive DNS
Passive DNS被動的從遞歸域名服務器記錄來自不同域名服務器的響應,形成數據庫。利用Passive DNS數據庫可以知道域名曾綁定過哪些IP,IP曾關聯到哪些域名,域名最早/最近出現的時間,為測試提供較大的幫助。Virustotal、passivetotal、CIRCL等網站都提供了Passive DNS數據庫的查詢。
2.1.10. SPF記錄
SPF(Sender Policy Framework)是為了防止垃圾郵件而提出來的一種DNS記錄類型,是一種TXT類型的記錄,用于登記某個域名擁有的用來外發(fā)郵件的所有IP地址。通過SPF記錄可以獲取相關的IP信息。
2.1.11. CDN
2.1.11.1. CDN驗證
可通過多地ping的方式確定目標是否使用了CDN 等。
2.1.11.2. 域名查找
使用了CDN的域名的父域或者子域名不一定使用了CDN,可以通過這種方式去查找對應的IP。
2.1.11.3. 歷史記錄查找
CDN可能是在網站上線一段時間后才上線的,可以通過查找域名解析記錄的方式去查找真實IP。
2.1.12. 子域爆破
在內網等不易用到以上技巧的環(huán)境,或者想監(jiān)測新域名上線時,可以通過批量嘗試的方式,找到有效的域名,以上等內容基礎全面性比較覆蓋網站安全方便的滲透測試方法,如果對此有需求可以聯系專業(yè)的網站安全公司來處理解決,防止被入侵被攻擊之類的安全問題。
申請創(chuàng)業(yè)報道,分享創(chuàng)業(yè)好點子。點擊此處,共同探討創(chuàng)業(yè)新機遇!