web应用安全防御100技 好书再次阅读, 变的只是表象,被概念迷惑的时候还是静下心来回顾本质...
生活随笔
收集整理的這篇文章主要介紹了
web应用安全防御100技 好书再次阅读, 变的只是表象,被概念迷惑的时候还是静下心来回顾本质...
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
如何進行web應用安全防御,是每個web安全從業者都會被問到的問題,非常不好回答,容易過于膚淺或流于理論,要闡明清楚,答案就是一本書的長度。而本文要介紹一本能很好回答這個問題的優秀書籍——《web application defender's cookbook》,這 是一本被低估的“干貨”書籍,雖然是為ModSecurity量身定制,但里面提到的防御技巧對web安全從業者均有啟發,是WAF版的孫子兵法(有趣的 是,這本書的每個章節均以孫子兵法作為開篇語)。
這本書提出了使用ModSecurity進行web應用安全防御的100個技巧,每個技巧都用真實的案例來說明,非常容易掌握,下文介紹這100技及個人點評(已經準備好被噴了:))。
第1技 實時分析HTTP請求特征 例如請求方法,參數名,參數個數,參數長度,參數取值類型(數字,字母,email, URL或文件路徑) 腦洞:給HTTP請求做白名單,或為了準確度給出現過漏洞的URI做白名單
2015-12-11: ?http請求分析,從長遠來看,有些基本信息庫必須建立,URL庫就是其中一個,來跟進每個站點的URL變化(包括首次訪問時間,最后訪問時間,建站指紋,漏洞列表) e.g. xxx.xxx.xxx/plus/mytag_js.php?aid ?DeDeCMS系統 ? ?DeDeCMS一句話寫馬漏洞 ? xxxxxxx首次訪問 ? ?xxxxx最后訪問 ... (p.s. 基本信息庫基本很難建立起來,建立了也很難維持更新,原因嘛,都知道的)
第2技 ?驗證hash token預防數據篡改 例如: http://xxx.xxx.xxx/?p=4&rv_token=aafb509403bbf7d78c3c8fe1735d49f01b90eb64 rv_token的驗證
第3技 安裝OWASP ModSecurity CRS 該規則集有兩種模式,一種獨立檢測模式,一種協同檢測模式(規則評分制)
第4技 將IDS Snort規則轉換為ModSecurity規則 使用?snort2modsec2.pl腳本將Snort規則轉換為ModSecurity規則 腦洞:安全防御是個整體,將各個關卡有效地聯動起來形成壁壘
2015-12-11: 規則一直被歧視(貌似不表示下歧視就low),但我們用事實說話,看看主要安全產品的主要防御方式吧,其中規則被詬病的主要原因: (1)心理原因,覺得人人都能寫,不高端 (2)實際效果,總被繞過, 規則需要持續維護的成本 靜態規則如果有一套自動化的運維系統來支撐就能持續發揮作用 (1)自動化規則漏報/誤報檢測:基于異常檢測來支撐漏報,基于統計閾值來支撐誤報(已實踐,效果不錯) (2)規則自動化提取生成:上一步的結果自動生成規則,未實踐 (3)靜態規則的分級防御:結合漏洞庫,對出現過漏洞的path調整防御級別 (4)規則的通用性轉換:漏洞掃描報告轉化為防御規則,
第5技 使用貝葉斯分類算法區分惡意請求
第6技 開啟HTTP日志審計,設置粒度為全部記錄
第7技 開啟HTTP日志審計,設置粒度為部分記錄 例如只記錄響應碼為4xx的HTTP請求
第8技?開啟HTTP日志審計,不記錄靜態資源訪問請求
第9技 將HTTP日志中的敏感信息****化 腦洞:出發點是尊重用戶隱私,但是不少CDN廠商并不會這樣做
第10技 使用syslog將server警告信息轉發給中心日志平臺 作用于分布式/協同防御系統中的日志收集階段,例如遞交給SIEM系統進行分析 2015-12-11: 日志分析技術并不是新鮮的概念,發展的只是分析的支撐平臺(存儲計算),提高的是處理量級與效率,(機器學習算法暫不評價,因為并未深入),分析的核心還 是分析者的專業知識與經驗(特別是經驗,安全防御是特別需要經驗的,處理的case多了,大多數事情就能hold住了)。
第11技 使用更為友好的ModSecurity 的審計控制平臺AuditConsole
第12技 被動的漏洞識別方案-通過讀取漏洞庫(例如OSVDB)來識別漏洞從而進行防御 2015-12-11: 安全防御總體說是漏洞驅動的,瞧瞧有多少做漏洞平臺的,無論官方的還是地下的 小小的感慨下,安全從業人員的增多并沒有使得網絡安全環境變好反而是惡化,賞金制度的挖洞,催發出多少未授權的滲透行為,對漏洞平臺人員所說的漏洞平臺會引導黑帽子持質疑的態度。
拋開個人情緒,漏洞庫在防御上非常有用。第4技有說明
第13技 主動的漏洞識別方案-調用掃描器(例如Arachni)來識別漏洞從而進行防御
第14技 ?將掃描器結果手動轉化為防御規則
第15技 ?將掃描器結果自動轉化為防御規則 使用 Arachi2modsec.pl腳本將arachi掃描報告轉換為ModSecurity規則
第17技 設置honeypot,新開監聽端口
第18技 設置honeypot,偽造robots.txt disallow 項與偽造401請求身份驗證的請求 腦洞:其實在中國區也發生過“正規”搜索引擎不遵守robots協議,爬取disallow路徑的案例
第19技 設置honeypot,偽造HTML注釋 腦洞:黑客一般會在HTML代碼注釋區找敏感信息,Burpsuite就專門提供了"find comments"功能。例如在注釋區增加一個不存在的uri來捕獲黑客
第20技 設置honeypot,偽造隱藏表單域(hidden form fields) 例如增加一個隱藏表單字段debug,如果HTTP請求中包含這個隱藏表單,說明請求就有攻擊意向
第21技 設置honeypot,偽造cookie
第22技 使用IP信譽庫,查詢訪問者IP信息 腦洞: MaxMind IP庫,估計沒有人沒聽說過
第24技 調用在線RBL(real-time blacklist)庫(例如sbl-xbl.spamhaus.org),識別惡意IP 在線查詢國際反垃圾郵件組織提供的IP黑庫,或者調用開源的IP黑名單收集蜜罐API接口HTTPBL(Honeypot HTTP Blacklist)進行IP信譽查詢
第25技 創建自己的RBL 使用jwall-rbld創建自己的RBL,https://jwall.org/ 提供了不少java編寫的web安全工具
第26技 調用URI黑庫(例如URIBL,Google Safe Browsing API),識別惡意URI 腦洞:BAT,360,金山等大的互聯網公司都陸續開放了自己的惡意網址庫接口
第27技 按需解析HTTP請求體 HTTP請求體的檢測是非常消耗性能的,所以要加上各種優化限制,例如檢測體長度限制,緩存到本地文件系統的請求體是否解析(像naxsi就不解析這種),是否解析XML實體類型等
第28技 識別不符合協議規范帶有潛在惡意的請求體 無法為協議解析組件所解析的請求體都有惡意的可能性,例如在multipart-form類型的文件上傳包中構造惡意格式繞過上傳文件類型的限制
第29技 規范化Unicode編碼 WAF繞過技巧中有一大分支-編碼繞過,使用編碼映射規范化編碼是個不錯的點子
第30技 識別多重編碼 例如兩次urlencode
第31技 識別異常編碼 驗證是否為規范編碼
第32技 識別異常的HTTP請求方法 制定HTTP請求白名單,例如只允許GET、POST、HEAD
第34技 識別HTTP請求頭異常 例如HTTP請求頭缺失、請求頭排列順序異常、請求頭取值異常
第35技 通過多余參數識別攻擊
第36技 通過缺失參數識別攻擊
第37技 通過重復參數(HPP)識別攻擊 腦洞:正常的應用也會出現重復參數的情況,why!!!
第38技 通過參數取值長度異常識別攻擊
第39技 通過參數取值字符類型異常識別攻擊 采取參數取值白名單的方式來防御
第40技?識別HTTP響應頭異常 例如5xx錯誤的比例,HTTP響應拆分,惡意的重定向
第41技 預防HTTP響應頭中的信息泄漏 移除或偽造服務簽名響應頭,例如Server,X-Powerd-By,X-AspNet-Version
第42技 按需解析HTTP響應體 響應體的檢測是極其消耗性能的,所以要參照安全級別謹慎設置如何解析HTTP響應體
第43技 檢測網頁篡改-標題篡改
第44技 檢測網頁篡改-響應體長度異常 網頁內容被篡改或后端DB被拖庫時,響應體的大小會發生明顯的變化 2015-12-11: ?掛馬并不會發生大的變化,常見拖庫行為是否會引發明顯變化,需要試驗后給出結論(也是繼webshell檢測后計劃試驗的)
第45技 檢測網頁篡改-響應體動態內容篡改 例如在表單注入一段<script>alert(document.cookie);</script>,檢查響應體中會出現新的JS標簽,我們根據標簽個數便能發現攻擊。
第46技 檢測響應體中的源碼泄漏 例如php-cgi源碼泄漏漏洞CVE-201201823
第47技 檢測響應體中的信息泄漏 例如響應體中泄漏源碼絕對路徑,數據庫信息
第48技 通過異常的響應時間來發現攻擊 例如基于時間的SQL盲注waitfor delay會造成異常的響應時間
第49技 檢測響應體中的用戶數據泄漏 例如信用卡號
第50技 檢測木馬、后門、webshell連接嘗試
第52技 監測登錄口橫向暴力破解 使用同一個密碼,不同的用戶名來嘗試暴力破解
第53技 監測失敗的登錄嘗試
第54技 監測高頻率的登錄嘗試
第55技 使用統一的登錄失敗提示,避免有用信息泄漏 像錯誤的用戶名或錯誤的密碼這種提示會給暴力破解提供有效信息
第56技 啟用密碼復雜度檢測
第57技 分析一個會話期,登錄嘗試的用戶名來發現登錄口異常
第58技 檢測異常的cookie取值 基于會話的攻擊,包括可猜測的會話ID取值(burpsuite就集成了會話sequence分析工具)
第59技 檢測來自cookie字段的攻擊 例如cookie字段的SQL注入
第60技 設置會話有效期 防御會話固定攻擊
第61技 檢測一個會話期,請求者IP的GEO信息的變化
第64技 檢測目錄遍歷攻擊 2015-12-11: ?猜后臺目錄/漏洞path是比較有效的滲透方法
第65技 ?檢測非正常流程的網站資源訪問 控制URL進行橫向權限提升,縱向權限提升操作 可以使用加密token(例如url hash)來防御任意資源訪問,如下所示 https://www.REDACTED.com/Cust/cust_5.php/222557/20040216?rv_token=abfb508403bbf7d78c3f8de1735d49f01b90eb71
第66技 檢測SQL注入攻擊 SQL注入的防御方法一般有三種 (1)SQL關鍵字過濾器 (2)SQL語義分析 (3)樸素貝葉斯異常分類(使用機器學習算法的異常檢測) 2015-12-11: ?
第67技 檢測遠程文件包含漏洞 當URI包含以下情況時,極可能是一次攻擊請求 IP地址,例如/a.php?libdir=http://89.238.174.14/fx.txt??? PHP函數,例如/?id={${include("http://xxx.xx.xx/fx.txt??)}} 多個?號,例如/a.php?libdir=http://xxx.xx.xx/cgi??? 包含的host與Host頭的字段不符,例如/a.php?libdir=http://www.example.com
第68技 檢測操作系統命令執行漏洞
第69技 檢測HTTP Request Smuggling HRS攻擊
第70技 檢測HTTP響應拆分漏洞
第71技 檢測XML攻擊 例如XPath注入
第73技 檢測XSS攻擊 XSS的防御方法一般有三種 (1)XSS關鍵字過濾器 (2)X-XSS-PROTECTION (3)javascript沙盒
第74技 檢測CRSF攻擊 CSRF防御方法:加密token
第75技 防御UI Redressing(clickjacking) clickjacking防御方法: (1)X-Frame-Options(2)frame-busting javascript
第76技 防御盜號木馬-中間人攻擊 盜號木馬一般會截獲HTTP請求,偽造登錄界面來盜取賬號,而對這種釣魚攻擊的防御靈感來源于文件完整性檢測工具tripwires,使用JS注入響應體md5值附加在登錄頁面來驗證頁面完整性。
第77技 限制上傳文件的大小,避免超大文件上傳造成服務器的拒絕服務攻擊
第78技 限制上傳文件的數目,避免過多文件上傳造成服務器的拒絕服務攻擊
第79技 集成病毒掃描工具(例如ClamAV),檢測上傳文件是否為惡意文件
第80技 HTTP DDoS(CC)攻擊識別 比較有名的攻擊工具有low orbit ion cannon LOIC,high orbit ion cannon HOIC 注意與第8技相同只監控動態頁面,因為靜態資源的請求一般會緩存到CDN節點而到不了源站
第81技 HTTP slow DDoS攻擊識別 比較有名的攻擊工具有slowloris
第82技 通過檢測后續請求的響應時間是否過快來檢測CSRF攻擊 例 如CSRF?<img src="http://bank.example.com/withdraw?account=bob&amount=1000000&for=alice"> 受害者訪問圖片標簽的同時就發送了一個GET請求,兩個請求的間隔時間非常短
第83技 檢測異常的HTTP請求次序 自動化攻擊往往會最小化操作步驟,我們可以參照第2技,第65技,增加token來預防自動化攻擊
2015-12-11: ?基于圖的異常檢測方式比較有效,比如檢測孤立點來發現webshell(注意不能只有這個特征),比如監測非常規路徑來發現越權訪問
第84技 識別網站特定資源訪問量的異常 當網站的某個資源的訪問量出現異常的時候,往往意味著攻擊發生了,例如新浪微博CSRF蠕蟲攻擊中自動發微博接口的自動調用
第86技 動態開啟WAF日志審計 例如當收到來自IP黑名單的請求時,開啟日志審計功能
第87技 email發送WAF協同防御細節給站長 可以調用外部email發送腳本也可以使用AuditConsole平臺(第11技中提到)發送
第88技 將WAF事件信息通過請求頭分享給其他安全組件來進行聯動分析 當捕獲一個安全級別較低的攻擊時,直接攔截就不是個好的選擇了,這時候就可以將WAF事件信息分享給其他安全組件進行聯動分析來執行合理的應對措施,而通過HTTP請求頭傳遞WAF事件信息就是個不錯的方案(這種方法叫做request header tagging)。
第89技 將攻擊請求重定向到用戶友好的自定制攔截頁面
第90技 斷開攻擊者的網絡連接 該措施常用于拒絕服務攻擊,例如CC攻擊
第91技 使用IP黑名單阻塞工具阻塞惡意用戶訪問 一般會將User-Agent與IP地址聯合起來來阻塞惡意用戶訪問 常見的黑名單阻塞工具有jwall-Rbld,Jwall?AuditConsole,?blacklist,samtool(snortsam)
第92技 動態啟用基于IP-GEO信息的分級防御 例如發現大量攻擊者來自X國,對X國啟用高級防御
第93技 通過延遲對請求的響應時間來減緩自動化攻擊,給防御者爭取時間來應對攻擊
第94技 偽造攻擊成功的返回頁面來迷惑攻擊者,給防御者爭取時間來應對攻擊 集成honeypot的防御思想
第95技 將攻擊請求代理到honeypot
第96技 當檢測到會話異常時,強制攻擊者登出 例如當會話期間useragent發生變化時,強制攻擊者登出
第97技 當攻擊事件發生時,鎖定攻擊者賬號一段時間?
第98技 使用JS注入cookie阻塞流量性攻擊(例如CC攻擊)
第99技 使用驗證碼阻塞自動化(機器)攻擊 例如自動注冊,自動發送垃圾貼等機器人行為 腦洞:注意驗證碼服務器要足夠健壯,以免招受拒絕服務攻擊時導致這一措施失效
第100技 集成BeFF(browser exploit framework)來分析惡意用戶請求
終于寫完了,我們會發現這100個防御技巧中出現了以下工具(規范或方法)
WAF(web 應用防火墻),Snort(入侵檢測系統),OSVDB(開源漏洞庫),honeypot(蜜罐),Arachni(漏洞掃描器),BeFF(漏洞挖掘框 架),ClamAV(殺毒軟件),tripwires(文件完整性校驗工具,在web領域可以用來預防HTTP請求數據篡改,釣魚頁面偽造和自動化提交請 求),RBL(實時IP黑庫,IP信譽庫),URIBL Google Safe Browsing API(惡意網址庫),javascript sandbox(沙箱),SIEM(安全信息與事件管理平臺), SQL詞法分析器 ,HTTP RFC規范,編碼映射表,樸素貝葉斯分類算法
于是,可以很容易發現web安全防御是個整體,需要將各個組件(關卡)有效地聯動起來形成壁壘,安全防御方法也是沒有嚴格的領域區分的,客戶端的安全技巧可以用于web,反之亦然,同時在解決某個安全問題時,如果找不到完善的單獨解決方案,不妨同時使用不同的有缺陷的防御方案,三個臭皮匠頂個諸葛亮。
(2)垂直型安全產品:這種客戶都有著高端或更直接的安全需求,例如欺詐識別為主的業務安全、金融產品安全(比如說支付終端漏洞,支付木馬),金融企業安全(針對金融行業的專業黑客攻擊)
這本書提出了使用ModSecurity進行web應用安全防御的100個技巧,每個技巧都用真實的案例來說明,非常容易掌握,下文介紹這100技及個人點評(已經準備好被噴了:))。
第1技 實時分析HTTP請求特征 例如請求方法,參數名,參數個數,參數長度,參數取值類型(數字,字母,email, URL或文件路徑) 腦洞:給HTTP請求做白名單,或為了準確度給出現過漏洞的URI做白名單
2015-12-11: ?http請求分析,從長遠來看,有些基本信息庫必須建立,URL庫就是其中一個,來跟進每個站點的URL變化(包括首次訪問時間,最后訪問時間,建站指紋,漏洞列表) e.g. xxx.xxx.xxx/plus/mytag_js.php?aid ?DeDeCMS系統 ? ?DeDeCMS一句話寫馬漏洞 ? xxxxxxx首次訪問 ? ?xxxxx最后訪問 ... (p.s. 基本信息庫基本很難建立起來,建立了也很難維持更新,原因嘛,都知道的)
第2技 ?驗證hash token預防數據篡改 例如: http://xxx.xxx.xxx/?p=4&rv_token=aafb509403bbf7d78c3c8fe1735d49f01b90eb64 rv_token的驗證
第3技 安裝OWASP ModSecurity CRS 該規則集有兩種模式,一種獨立檢測模式,一種協同檢測模式(規則評分制)
第4技 將IDS Snort規則轉換為ModSecurity規則 使用?snort2modsec2.pl腳本將Snort規則轉換為ModSecurity規則 腦洞:安全防御是個整體,將各個關卡有效地聯動起來形成壁壘
2015-12-11: 規則一直被歧視(貌似不表示下歧視就low),但我們用事實說話,看看主要安全產品的主要防御方式吧,其中規則被詬病的主要原因: (1)心理原因,覺得人人都能寫,不高端 (2)實際效果,總被繞過, 規則需要持續維護的成本 靜態規則如果有一套自動化的運維系統來支撐就能持續發揮作用 (1)自動化規則漏報/誤報檢測:基于異常檢測來支撐漏報,基于統計閾值來支撐誤報(已實踐,效果不錯) (2)規則自動化提取生成:上一步的結果自動生成規則,未實踐 (3)靜態規則的分級防御:結合漏洞庫,對出現過漏洞的path調整防御級別 (4)規則的通用性轉換:漏洞掃描報告轉化為防御規則,
第5技 使用貝葉斯分類算法區分惡意請求
第6技 開啟HTTP日志審計,設置粒度為全部記錄
第7技 開啟HTTP日志審計,設置粒度為部分記錄 例如只記錄響應碼為4xx的HTTP請求
第8技?開啟HTTP日志審計,不記錄靜態資源訪問請求
第9技 將HTTP日志中的敏感信息****化 腦洞:出發點是尊重用戶隱私,但是不少CDN廠商并不會這樣做
第10技 使用syslog將server警告信息轉發給中心日志平臺 作用于分布式/協同防御系統中的日志收集階段,例如遞交給SIEM系統進行分析 2015-12-11: 日志分析技術并不是新鮮的概念,發展的只是分析的支撐平臺(存儲計算),提高的是處理量級與效率,(機器學習算法暫不評價,因為并未深入),分析的核心還 是分析者的專業知識與經驗(特別是經驗,安全防御是特別需要經驗的,處理的case多了,大多數事情就能hold住了)。
第11技 使用更為友好的ModSecurity 的審計控制平臺AuditConsole
第12技 被動的漏洞識別方案-通過讀取漏洞庫(例如OSVDB)來識別漏洞從而進行防御 2015-12-11: 安全防御總體說是漏洞驅動的,瞧瞧有多少做漏洞平臺的,無論官方的還是地下的 小小的感慨下,安全從業人員的增多并沒有使得網絡安全環境變好反而是惡化,賞金制度的挖洞,催發出多少未授權的滲透行為,對漏洞平臺人員所說的漏洞平臺會引導黑帽子持質疑的態度。
拋開個人情緒,漏洞庫在防御上非常有用。第4技有說明
第13技 主動的漏洞識別方案-調用掃描器(例如Arachni)來識別漏洞從而進行防御
第14技 ?將掃描器結果手動轉化為防御規則
第15技 ?將掃描器結果自動轉化為防御規則 使用 Arachi2modsec.pl腳本將arachi掃描報告轉換為ModSecurity規則
?
第16技 實時調用掃描器(例如Arachni RPC)進行防御第17技 設置honeypot,新開監聽端口
第18技 設置honeypot,偽造robots.txt disallow 項與偽造401請求身份驗證的請求 腦洞:其實在中國區也發生過“正規”搜索引擎不遵守robots協議,爬取disallow路徑的案例
第19技 設置honeypot,偽造HTML注釋 腦洞:黑客一般會在HTML代碼注釋區找敏感信息,Burpsuite就專門提供了"find comments"功能。例如在注釋區增加一個不存在的uri來捕獲黑客
第20技 設置honeypot,偽造隱藏表單域(hidden form fields) 例如增加一個隱藏表單字段debug,如果HTTP請求中包含這個隱藏表單,說明請求就有攻擊意向
第21技 設置honeypot,偽造cookie
第22技 使用IP信譽庫,查詢訪問者IP信息 腦洞: MaxMind IP庫,估計沒有人沒聽說過
?
第23技 使用IP信譽庫,識別惡意惡意代理第24技 調用在線RBL(real-time blacklist)庫(例如sbl-xbl.spamhaus.org),識別惡意IP 在線查詢國際反垃圾郵件組織提供的IP黑庫,或者調用開源的IP黑名單收集蜜罐API接口HTTPBL(Honeypot HTTP Blacklist)進行IP信譽查詢
第25技 創建自己的RBL 使用jwall-rbld創建自己的RBL,https://jwall.org/ 提供了不少java編寫的web安全工具
第26技 調用URI黑庫(例如URIBL,Google Safe Browsing API),識別惡意URI 腦洞:BAT,360,金山等大的互聯網公司都陸續開放了自己的惡意網址庫接口
第27技 按需解析HTTP請求體 HTTP請求體的檢測是非常消耗性能的,所以要加上各種優化限制,例如檢測體長度限制,緩存到本地文件系統的請求體是否解析(像naxsi就不解析這種),是否解析XML實體類型等
第28技 識別不符合協議規范帶有潛在惡意的請求體 無法為協議解析組件所解析的請求體都有惡意的可能性,例如在multipart-form類型的文件上傳包中構造惡意格式繞過上傳文件類型的限制
第29技 規范化Unicode編碼 WAF繞過技巧中有一大分支-編碼繞過,使用編碼映射規范化編碼是個不錯的點子
第30技 識別多重編碼 例如兩次urlencode
第31技 識別異常編碼 驗證是否為規范編碼
第32技 識別異常的HTTP請求方法 制定HTTP請求白名單,例如只允許GET、POST、HEAD
第33技 識別不符合RFC 2616定義的URI格式
第34技 識別HTTP請求頭異常 例如HTTP請求頭缺失、請求頭排列順序異常、請求頭取值異常
第35技 通過多余參數識別攻擊
第36技 通過缺失參數識別攻擊
第37技 通過重復參數(HPP)識別攻擊 腦洞:正常的應用也會出現重復參數的情況,why!!!
第38技 通過參數取值長度異常識別攻擊
第39技 通過參數取值字符類型異常識別攻擊 采取參數取值白名單的方式來防御
第40技?識別HTTP響應頭異常 例如5xx錯誤的比例,HTTP響應拆分,惡意的重定向
第41技 預防HTTP響應頭中的信息泄漏 移除或偽造服務簽名響應頭,例如Server,X-Powerd-By,X-AspNet-Version
第42技 按需解析HTTP響應體 響應體的檢測是極其消耗性能的,所以要參照安全級別謹慎設置如何解析HTTP響應體
第43技 檢測網頁篡改-標題篡改
第44技 檢測網頁篡改-響應體長度異常 網頁內容被篡改或后端DB被拖庫時,響應體的大小會發生明顯的變化 2015-12-11: ?掛馬并不會發生大的變化,常見拖庫行為是否會引發明顯變化,需要試驗后給出結論(也是繼webshell檢測后計劃試驗的)
第45技 檢測網頁篡改-響應體動態內容篡改 例如在表單注入一段<script>alert(document.cookie);</script>,檢查響應體中會出現新的JS標簽,我們根據標簽個數便能發現攻擊。
第46技 檢測響應體中的源碼泄漏 例如php-cgi源碼泄漏漏洞CVE-201201823
第47技 檢測響應體中的信息泄漏 例如響應體中泄漏源碼絕對路徑,數據庫信息
第48技 通過異常的響應時間來發現攻擊 例如基于時間的SQL盲注waitfor delay會造成異常的響應時間
第49技 檢測響應體中的用戶數據泄漏 例如信用卡號
第50技 檢測木馬、后門、webshell連接嘗試
第51技 監測使用常用賬號進行的登錄嘗試
例如使用admin administrator root system等作為用戶名來嘗試登錄第52技 監測登錄口橫向暴力破解 使用同一個密碼,不同的用戶名來嘗試暴力破解
第53技 監測失敗的登錄嘗試
第54技 監測高頻率的登錄嘗試
第55技 使用統一的登錄失敗提示,避免有用信息泄漏 像錯誤的用戶名或錯誤的密碼這種提示會給暴力破解提供有效信息
第56技 啟用密碼復雜度檢測
第57技 分析一個會話期,登錄嘗試的用戶名來發現登錄口異常
第58技 檢測異常的cookie取值 基于會話的攻擊,包括可猜測的會話ID取值(burpsuite就集成了會話sequence分析工具)
第59技 檢測來自cookie字段的攻擊 例如cookie字段的SQL注入
第60技 設置會話有效期 防御會話固定攻擊
第61技 檢測一個會話期,請求者IP的GEO信息的變化
第62技 檢測一個會話期,請求者指紋的變化
該技術一般用于反欺詐系統用于識別用戶身份,包括訪問者屏幕大小,時區,語言設置,瀏覽器插件?
第63技 檢測請求者中的非ASCII字符 例如NULL字符%00 腦洞:看過naxsi基礎規則文件的會發現,90%的規則都是檢測非ASCII字符第64技 檢測目錄遍歷攻擊 2015-12-11: ?猜后臺目錄/漏洞path是比較有效的滲透方法
第65技 ?檢測非正常流程的網站資源訪問 控制URL進行橫向權限提升,縱向權限提升操作 可以使用加密token(例如url hash)來防御任意資源訪問,如下所示 https://www.REDACTED.com/Cust/cust_5.php/222557/20040216?rv_token=abfb508403bbf7d78c3f8de1735d49f01b90eb71
第66技 檢測SQL注入攻擊 SQL注入的防御方法一般有三種 (1)SQL關鍵字過濾器 (2)SQL語義分析 (3)樸素貝葉斯異常分類(使用機器學習算法的異常檢測) 2015-12-11: ?
第67技 檢測遠程文件包含漏洞 當URI包含以下情況時,極可能是一次攻擊請求 IP地址,例如/a.php?libdir=http://89.238.174.14/fx.txt??? PHP函數,例如/?id={${include("http://xxx.xx.xx/fx.txt??)}} 多個?號,例如/a.php?libdir=http://xxx.xx.xx/cgi??? 包含的host與Host頭的字段不符,例如/a.php?libdir=http://www.example.com
第68技 檢測操作系統命令執行漏洞
第69技 檢測HTTP Request Smuggling HRS攻擊
第70技 檢測HTTP響應拆分漏洞
第71技 檢測XML攻擊 例如XPath注入
?
第72技 使用CSP策略防御第73技 檢測XSS攻擊 XSS的防御方法一般有三種 (1)XSS關鍵字過濾器 (2)X-XSS-PROTECTION (3)javascript沙盒
第74技 檢測CRSF攻擊 CSRF防御方法:加密token
第75技 防御UI Redressing(clickjacking) clickjacking防御方法: (1)X-Frame-Options(2)frame-busting javascript
第76技 防御盜號木馬-中間人攻擊 盜號木馬一般會截獲HTTP請求,偽造登錄界面來盜取賬號,而對這種釣魚攻擊的防御靈感來源于文件完整性檢測工具tripwires,使用JS注入響應體md5值附加在登錄頁面來驗證頁面完整性。
第77技 限制上傳文件的大小,避免超大文件上傳造成服務器的拒絕服務攻擊
第78技 限制上傳文件的數目,避免過多文件上傳造成服務器的拒絕服務攻擊
第79技 集成病毒掃描工具(例如ClamAV),檢測上傳文件是否為惡意文件
第80技 HTTP DDoS(CC)攻擊識別 比較有名的攻擊工具有low orbit ion cannon LOIC,high orbit ion cannon HOIC 注意與第8技相同只監控動態頁面,因為靜態資源的請求一般會緩存到CDN節點而到不了源站
第81技 HTTP slow DDoS攻擊識別 比較有名的攻擊工具有slowloris
第82技 通過檢測后續請求的響應時間是否過快來檢測CSRF攻擊 例 如CSRF?<img src="http://bank.example.com/withdraw?account=bob&amount=1000000&for=alice"> 受害者訪問圖片標簽的同時就發送了一個GET請求,兩個請求的間隔時間非常短
第83技 檢測異常的HTTP請求次序 自動化攻擊往往會最小化操作步驟,我們可以參照第2技,第65技,增加token來預防自動化攻擊
2015-12-11: ?基于圖的異常檢測方式比較有效,比如檢測孤立點來發現webshell(注意不能只有這個特征),比如監測非常規路徑來發現越權訪問
第84技 識別網站特定資源訪問量的異常 當網站的某個資源的訪問量出現異常的時候,往往意味著攻擊發生了,例如新浪微博CSRF蠕蟲攻擊中自動發微博接口的自動調用
第85技 多個HTTP請求之間的聯動分析
啟用協同檢測模式(規則評分制),例如單個IP/會話觸發的規則情況第86技 動態開啟WAF日志審計 例如當收到來自IP黑名單的請求時,開啟日志審計功能
第87技 email發送WAF協同防御細節給站長 可以調用外部email發送腳本也可以使用AuditConsole平臺(第11技中提到)發送
第88技 將WAF事件信息通過請求頭分享給其他安全組件來進行聯動分析 當捕獲一個安全級別較低的攻擊時,直接攔截就不是個好的選擇了,這時候就可以將WAF事件信息分享給其他安全組件進行聯動分析來執行合理的應對措施,而通過HTTP請求頭傳遞WAF事件信息就是個不錯的方案(這種方法叫做request header tagging)。
第89技 將攻擊請求重定向到用戶友好的自定制攔截頁面
第90技 斷開攻擊者的網絡連接 該措施常用于拒絕服務攻擊,例如CC攻擊
第91技 使用IP黑名單阻塞工具阻塞惡意用戶訪問 一般會將User-Agent與IP地址聯合起來來阻塞惡意用戶訪問 常見的黑名單阻塞工具有jwall-Rbld,Jwall?AuditConsole,?blacklist,samtool(snortsam)
第92技 動態啟用基于IP-GEO信息的分級防御 例如發現大量攻擊者來自X國,對X國啟用高級防御
第93技 通過延遲對請求的響應時間來減緩自動化攻擊,給防御者爭取時間來應對攻擊
第94技 偽造攻擊成功的返回頁面來迷惑攻擊者,給防御者爭取時間來應對攻擊 集成honeypot的防御思想
第95技 將攻擊請求代理到honeypot
第96技 當檢測到會話異常時,強制攻擊者登出 例如當會話期間useragent發生變化時,強制攻擊者登出
第97技 當攻擊事件發生時,鎖定攻擊者賬號一段時間?
第98技 使用JS注入cookie阻塞流量性攻擊(例如CC攻擊)
第99技 使用驗證碼阻塞自動化(機器)攻擊 例如自動注冊,自動發送垃圾貼等機器人行為 腦洞:注意驗證碼服務器要足夠健壯,以免招受拒絕服務攻擊時導致這一措施失效
第100技 集成BeFF(browser exploit framework)來分析惡意用戶請求
?
終于寫完了,我們會發現這100個防御技巧中出現了以下工具(規范或方法)
WAF(web 應用防火墻),Snort(入侵檢測系統),OSVDB(開源漏洞庫),honeypot(蜜罐),Arachni(漏洞掃描器),BeFF(漏洞挖掘框 架),ClamAV(殺毒軟件),tripwires(文件完整性校驗工具,在web領域可以用來預防HTTP請求數據篡改,釣魚頁面偽造和自動化提交請 求),RBL(實時IP黑庫,IP信譽庫),URIBL Google Safe Browsing API(惡意網址庫),javascript sandbox(沙箱),SIEM(安全信息與事件管理平臺), SQL詞法分析器 ,HTTP RFC規范,編碼映射表,樸素貝葉斯分類算法
于是,可以很容易發現web安全防御是個整體,需要將各個組件(關卡)有效地聯動起來形成壁壘,安全防御方法也是沒有嚴格的領域區分的,客戶端的安全技巧可以用于web,反之亦然,同時在解決某個安全問題時,如果找不到完善的單獨解決方案,不妨同時使用不同的有缺陷的防御方案,三個臭皮匠頂個諸葛亮。
?
2015-12-11: ? 現在出來了不少新概念的安全產品,仔細研究下來基本屬于以下兩種 (1)通用型安全產品:安全組件大禮包,比如說集成web漏洞檢測、惡意軟件檢測、惡意網址檢測、DNS/DDoS檢測、情報信息(包括漏洞/攻擊事件feed,信息泄漏集成),將網絡層面的流量信息/系統層面的進程日志信息 定向到安全組件中進行檢測,將結果聚合后展示在控制面板上(目前還沒有看到什么產品做到強聚合) 這種產品的特性是對誤報容忍性差,靜態檢測規則為主(2)垂直型安全產品:這種客戶都有著高端或更直接的安全需求,例如欺詐識別為主的業務安全、金融產品安全(比如說支付終端漏洞,支付木馬),金融企業安全(針對金融行業的專業黑客攻擊)
這種產品的特性是對漏報容忍性差,個人感覺是研發代價比較大的數據安全分析技術更能發揮作用的地方
from: 碳基體
轉載于:https://www.cnblogs.com/elautoctrl/p/5047014.html
總結
以上是生活随笔為你收集整理的web应用安全防御100技 好书再次阅读, 变的只是表象,被概念迷惑的时候还是静下心来回顾本质...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: break 与continue 语句
- 下一篇: SwipeRefreshLayout和R