文章目錄
? ? Web應用防火墻(Web Application Firewall, WAF),通過對HTTP(S)請求進行檢測,識別并阻斷SQL注入、跨站腳本攻擊、網頁木馬上傳、命令/代碼注入、文件包含、敏感文件訪問、第三方應用漏洞攻擊、CC攻擊、惡意爬蟲掃描、跨站請求偽造等攻擊,保護Web服務安全穩定。
列舉常見的攻擊和安全漏洞列表
攻擊(漏洞)名稱 | 攻擊(漏洞)說明 |
跨站點腳本攻擊 | 黑客通過篡改網頁,注入惡意JS 腳本,在用戶瀏覽網頁時,控制用戶瀏覽器進行惡意操作的一種攻擊方式。 |
SQL注入攻擊 | 在 HTTP 請求中注入惡意 SQL 命令(drop table users;),服務器用請求參數構造數據庫 SQL 命令時,惡意 SQL 被一起構造,并在數據庫中執行。 |
跨站點請求偽造 | 攻擊者通過偽造合法用戶身份,進行非法操作,如轉賬交易、發表評論等。 |
注釋與異常信息泄露 | 在返回給用戶的響應中,HTML注釋或者500異常內容包含系統敏感信息,使非法分子利用這些信息發現系統的脆弱之處,進而進行攻擊。 |
越權訪問 | 水平越權、垂直越權 一個用戶A一般只能夠對自己本身的信息進行增刪改查,然而由于后臺開發人員的疏忽,沒有在信息進行增刪改查時候進行用戶判斷,從而導致用戶A可以對其他用戶進行增刪改查等等操作。 |
列舉場景的攻擊類型
類型 | 名稱 |
SQL | SQL注入攻擊 |
XSS | 跨站點腳本攻擊,JS注入 |
CSC | 注釋與異常信息泄露 |
CSRF | 跨站點請求偽造 |
FB | 路徑遍歷與強制瀏覽 |
BAC | 越權訪問 |
攻擊流程和常見應用防火墻處理流程
SQL 注入攻擊的原理如下
攻擊者在 HTTP 請求中注入惡意 SQL 命令(drop table users;),服務器用請求參數構造數據庫 SQL 命令時,惡意 SQL 被一起構造,并在數據庫中執行。??
如果在Web頁面中有個輸入框,要求用戶輸入姓名,普通用戶輸入一個普通的姓名Benjamin,那么最后提交的HTTP請求如下:
http://www.test.com?username=benjamin
正常服務器在處理計算后,向數據庫提交的SQL查詢命令如下:
Select id from users where username = "Benjamin";
但是惡意攻擊者可能會提交這樣的HTTP請求:
http://www.test.com?username=benjamin';drop table users;--
即輸入的username是:
Benjamin';drop table users;--
SQL注入服務器處理后,最終生成的SQL語句如下:
Select id from users where username = "Benjamin";drop table users;--";
事實上,這是兩條SQL,一條select查詢SQL,一條drop table刪除表SQL。數據庫在執行完查詢后,就將users表刪除了,系統崩潰了。
PS:常用越權查詢使用關鍵字
' or 1 = 1
從請求中匹配到SQL注入攻擊內容后,可以設置跳轉錯誤頁面,也可以選擇消毒replace替換關鍵字。
SQL注入關鍵字漏洞定義,防范替換字符串表
SQL注入攻擊字符串 | replace替換字符串 |
= | = |
> | > |
< | < |
@ | @ |
' | ' |
" | " |
( | ( |
) | ) |
????????簡稱:JS注入攻擊,特殊符號注入,代碼注入等
演示
攻擊示例(未防范):
? ? 1、輸入攻擊字符串并提交
? ? 2、當其他用戶或管理員登陸后臺查看提交內容時,管理提交彈窗提示
攻擊演示代碼示例:????????
<script>alert(“Attack!”)</script>
????????XSS 攻擊即跨站點腳本攻擊(Cross Site Script),指黑客通過篡改網頁,注入惡意 JavaScript腳本,在用戶瀏覽網頁時,控制用戶瀏覽器進行惡意操作的一種攻擊方式。
????????常見的 XSS 攻擊類型有兩種,一種是反射型,攻擊者誘使用戶點擊一個嵌入惡意腳本的鏈接,達到攻擊的目的,如圖
????????攻擊者發布的微博中有一個含有惡意腳本的 URL(在實際應用中,該腳本在攻擊者自己的服務器 www.test.cn上,URL 中包含腳本的鏈接),用戶點擊該 URL,腳本會自動關注攻擊者的新浪微博 ID,發布含有惡意腳本 URL 的微博,攻擊就被擴散了。
? ?另外一種 XSS 攻擊是持久型 XSS 攻擊,黑客提交含有惡意腳本的請求,保存在被攻擊的 Web 站點的數據庫中,用戶瀏覽網頁時,惡意腳本被包含在正常頁面中,達到攻擊的目的,如圖
關鍵字漏洞定義,防范替換字符串表
XSS攻擊字符 | replace替換字符 |
= | = |
: | : |
- | - |
( | ( |
) | ) |
< | < |
> | > |
! | ! |
[ | [ |
] | ] |
. | . |
@ | @ |
????????在XSS攻擊字符前后加上“ ”字符串,使得攻擊腳本無法運行,同時在瀏覽器顯示的時候不會影響顯示內容。
?
????????CSRF(Cross Site Request Forgery,跨站點請求偽造),攻擊者通過跨站請求,以合法用戶的身份進行非法操作,如轉賬交易、發表評論等,如圖
?CSRF 的主要手法是利用跨站請求,在用戶不知情的情況下,以用戶的身份偽造請求。其核心是利用了瀏覽器 Cookie 或服務器 Session 策略,盜取用戶身份。?
防攻擊策略是過濾器自動在所有響應頁面的表單form中添加一個隱藏字段(Django中 csrf_token),合法用戶在提交請求的時候,會將這個隱藏字段發送到服務器,防火墻檢查隱藏字段值是否正確,來確定是否為CSRF攻擊。惡意用戶的請求是自己偽造的,無法構造這個隱藏字段,就會被防火墻攔截。
Python Django關鍵示例講解
后端Django框架settings.py配置部分
MIDDLEWARE = [
'django.middleware.csrf.CsrfViewMiddleware',
]
用戶前端web頁面隱藏字段示例
?前端對用戶隱藏,每次刷新網頁會獲取新的完全不同的token,已便驗證請求連續非偶然構造,每次提交請求優先校驗token是否與預期一致。當然改字段除了隱藏到前端,也可以設置再cookies中前端獲取再提交。
cookies中示例
csrf_token 驗證不通過示例(已開啟debug)
????????為調試程序方便或其他不恰當的原因,有時程序開發人員會在 前端頁面程序中使用 HTML 注釋語法進行程序注釋,這些 HTML 注釋就會顯示在客戶端瀏覽器, 給黑客造成攻擊便利。?
許多 Web 服務器默認是打開異常信息輸出的,即服務器端未處理的異常堆棧信息會直接輸出到客戶端瀏覽器,這種方式雖然對程序調試和錯誤報告有好處,但同時也給黑客造成可乘之機。通過故意制造非法輸入,使系統運行時出錯,獲得異常信息,從而尋找系統漏洞進行攻擊。?
匹配HTML注釋的正則表達式如下:
?“<!--(.|
|
)*-->”
如果匹配到HTML注釋,就用空字符串replace該注釋。
對于異常信息泄露檢查響應狀態碼,如果為400,500系列錯誤則會進一步匹配響應體內容,是否存在錯誤堆棧信息。
Python Django關鍵示例講解
后端Django框架中settings.py配置部分
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
前端頁面異常 暴露請求路徑
前端數據異常 暴露SQL配置信息?
????????一些網站的業務需求,可能提供文件查看或下載功能,如果對用戶查看或下載的文件不做限制,那么用戶就能夠查看和下載任意文件,可以使源代碼文件、敏感文件等。
路徑遍歷漏洞成因:
如果應用程序使用用戶可控制的數據,以危險的方式訪問位于引用程序服務器或其后端文件系統中的文件和目錄,就會出現路徑遍歷漏洞。
詳細描述
目錄遍歷是通過操作URL強行訪問web目錄以外的文件,目錄和命令,攻擊者可以在目標機器的任何位置訪問文件,執行命令。
? ? 最基本的目錄遍歷攻擊技術是在URL中使用"../"序列,改變訪問資源的路徑,訪問到web目錄以外的文件。
例如:
http://www.test.com/../../../../some/file
http://www.test.com/..%255c..%255c/some/file
正常請求為:
http://www.test.com/test.cgi?look=intex.html
如果存在目錄遍歷漏洞,攻擊者可以訪問
http://www.test.com/test.cgi?look=test.cgi
解決辦法
過濾請求數據中"../"字符序列及其各種變形。
驗證用戶請求中提交的需要訪問的文件是否在限定的范圍內
更佳方案?自行查閱第三方文檔或提供的服務
????????越權訪問(Broken Access Control,BAC)是web中一種常見的漏洞,且越權漏洞屬于邏輯漏洞,是由于權限校驗的邏輯不夠嚴謹導致的,所以越權漏洞很難通過掃描工具發現,往往需要通過手動進行測試,而且也是滲透測試過程中必不可少的一步
????????越權漏洞是在測試過程中遇到比較多的漏洞,簡易理解越權漏洞,一個用戶A一般只能夠對自己本身的信息進行增刪改查,然而由于后臺開發人員的疏忽,沒有在信息進行增刪改查時候進行用戶判斷,從而導致用戶A可以對其他用戶進行增刪改查等等操作。
????????越權漏洞分為:水平越權、垂直越權
水平越權
????????其稱作訪問控制攻擊漏洞.Web應用程序在接收到用戶的請求時,我們在增刪改查某條數據時候,沒有判斷數據所對應的用戶,或者在判斷數據的用戶時是通過從用戶表單參數中獲取userid來實現的,可以修改userid來實現水平越權。
????????一般在增刪改查,登陸,更新的地方尋找越權漏洞。
????????漏洞修復建議:如果使用token來作為后續身份識別的令牌的話,應該是在提交密碼或者驗證碼的數據包中而且驗證通過后返回token,否則可以利用token直接進行越權訪問。另外可通過鑒權表每次校驗請求用戶是否有相應權限實現攔截。
垂直越權
????????垂直越權又叫做權限提升攻擊,具體原因就是web應用沒有做用戶權限控制,或者只是在菜單上做了權限控制,導致惡意用戶只要猜測到其他管理頁面的URL,就可以訪問或者控制其他角色擁有的數據或者頁面,達到權限提升的目的。漏洞為繞過登陸驗證直接訪問后臺。
沒有絕對安全的系統
|