1. 程式人生 > >開源WAF(mod_security)的搭建和分析

開源WAF(mod_security)的搭建和分析

重新 png family 項目 have 包含 必須 sql mat

背景

最近需要測試關於waf的工具,要知道waf是怎麽回事,必須搭建waf環境,同時才能看懂關於繞過waf的一些技術。

OWASP ModSecurity核心規則集(CRS)是一組用於ModSecurity或兼容的Web應用程序防火墻的通用攻擊檢測規則。CRS旨在保護Web應用程序免受各種攻擊,包括OWASP十大攻擊,並提供最少的虛假警報。

項目地址:https://github.com/SpiderLabs/owasp-modsecurity-crs

因為經常使用kali,因此環境全是在kali上面搭建,也不會再重新下載別的系統。

版本

~# cat /proc/version

Linux version 4.19.0-kali3-amd64 ([email protected]) (gcc version 8.2.0 (Debian 8.2.0-16)) #1 SMP Debian 4.19.20-1kali1 (2019-02-14)

安裝modsecurity

apt-get install modsecurity-crs

它會自動加載相關組件

技術分享圖片

配置modsecurity

修改/etc/modsecurity/下的modsecurity.conf

mv /etc/modsecurity/modsecurity.conf-recommended modsecurity.conf
將文件中
SecRuleEngine DetectionOnly修改為SecRuleEngine On

技術分享圖片

測試SQL註入

在上面的配置啟用之前也就是默認是僅檢測(DetectionOnly),我們先來看看效果

使用DVWA中sql註入測試即可,可看到存在sql註入

技術分享圖片

啟用安全規則引擎SecRuleEngine (SecRuleEngine On)之後,需重啟apache2

技術分享圖片

顯示403 Forbidden錯誤,可見waf已經生效。

工作原理

我們回過頭分析下它的一個配置

1.首先我們安裝了modsecurity-crs,它會自動安裝apache2的庫

技術分享圖片

跟進這個文件,我們看到它包含了剛才我們配置的文件,並且和它自己的安裝目錄

技術分享圖片

跟進安裝目錄,又包含了owasp-crs.load這個文件

技術分享圖片

繼續跟進這個owasp-crs.load文件,它包含了自己目錄下rules下的所有文件

技術分享圖片

規則文件

技術分享圖片

由此可以看出: 規則文件一共有如下幾類

1. request 請求

2. response 響應

3.錯誤 有iis的 java的php的

4.掃描類 sannner

5.unix-shell類,也就是木馬類

我們重新梳理下剛才的邏輯,也就是調用過程:

首選我們發了一個sql註入的請求給apache2 ,apach2發現庫中又引用security2.conf這個配置,於是調用所有與mod-security相關的規則集。最後經過一些列處理,返回了403錯誤,這個mod-security就這樣被調用起來了。

規則分析

我們打開apache2的日誌目錄,在/var/log/apach2下

發現存在一個mod-security的日誌,這個就是waf審計的日誌,它記錄了了所有攻擊日誌

技術分享圖片

我們發起一個sql註入探測攻擊之後,本應該返回給我們一個You have an error in your SQL syntax; check the manual tha…….等等的sql查詢錯誤的,為什麽返回給我們一個403呢

技術分享圖片

我們跟進下面的Pattern match,意思就是,它匹配到了如下規則目錄中的一些信息

技術分享圖片

我們可以看到好多Pattern match,打開其中一個response的規則

技術分享圖片

根據顯示第373行,我們打開該規則文件中的373行

技術分享圖片

可見,正是匹配到了該響應,它是由多個分隔符形成的,也就是它匹配到了規則其中的一個分隔符中的數據,所以才認為這是一個攻擊行為。

技術分享圖片

看了幾個規則文件和命名之後,至此,我們大概知道了它的一個檢測過程,至少分為以下3步

1.它首先會去檢測請求頭Request-Headers

2.它會去檢測請求Request

3.檢測響應response

如果以上三步都沒有問題,那麽會認為這是一個正常訪問,而非攻擊,只要其中有一個匹配上,那麽它將會返回403錯誤。

開源WAF(mod_security)的搭建和分析