❶ web日誌分析工具 怎麼確認被攻擊
Apache 伺服器
預安裝在Kali Linux
可以用以下命令開啟:
service apache2 start
Mysql
預安裝在Kali Linux
可以用以下命令開啟:
service mysql start
使用PHP-MySQL創建一個有漏洞的web應用
我使用PHP開發了一個有漏洞的web應用並且把它放在上面提到的 Apache-MySQL裡面。
上述設置完成後,我用了一些Kali Linux中的自動工具(ZAP、w3af)掃描這個有漏洞的應用的URL。
現在讓我們來看看分析日誌中的不同情況。
0x02 Apache服務中的日誌記錄
Debian系統上Apache伺服器日誌的默認位置為:/var/log/apache2/access.log
日誌記錄只是在伺服器上存儲日誌。我還需要分析日誌以得出正確結果。在接下來的一節里,我們將看到我們如何分析Apache伺服器的訪問日誌以找出web站點上是否有攻擊嘗試。
分析日誌
手動檢查
在日誌量較小的情況下,或者如果我們查找一個指定關鍵詞,可以使用像grep表達式這樣的工具觀察日誌。
在下圖中,我們在URL中試圖搜尋所有關鍵詞為「union」的請求。
從上圖中,我們可以看到URL中的「union select 1,2,3,4,5」請求。很明顯,ip地址為 192.168.56.105的某人嘗試了SQL注入。 類似地,當我們有自己的關鍵詞時可以搜索特殊的關鍵詞。
在下圖中,我們正在搜索試圖讀取「/etc/passwd」的請求,很明顯是本地文件包含嘗試。
如上面的截圖所示,我們有許多本地文件包含的嘗試,且這些請求發送自ip地址 127.0.0.1。
很多時候,能輕易通過日誌看出是否是自動化掃描器產生的。
舉例來說, IBM appscan在許多攻擊payload中使用「appscan」這個詞。所以,在日誌中查看這樣的請求,我們基本就可以判斷有人在使用appscan掃描網站。
Microsoft Excel也是一個打開日誌文件和分析日誌的不錯的工具。我們可以通過指定「空格」為分隔符以用excel打開日誌文件。
當我們手頭沒有日誌分析工具時,這個也挺好用的。
除了這些關鍵詞,在分析期間要了解HTTP狀態代碼的基礎知識。以下是關於HTTP狀態代碼的高級信息的表格。
0x03 Web shells
webshell是網站/伺服器的另一個問題。webshell可以已web server許可權控制伺服器。
在一些情況下,我們可以使用webshell來訪問所有放在相同伺服器上的其他站點。
以下截圖顯示了Microsoft Excel 中開啟相同的access.log文件。
我們清楚地看到有一個叫「b374k.php」的文件被訪問了。「b374k」是一個流行的webshell,因此這個文件是很可疑的。
查看相應代碼「200」,本行表明有人上傳了一個webshell並訪問了它。
在許多情況下,攻擊者重命名webshell的名字以避免懷疑。我們必須變得聰明點,看看被訪問的文件是否是常規文件或者是否他們看起來不太一樣。我們可以更進一步,如果任何文件看起來可疑的話,還可以查看文件類型和時間戳。
One single quote for the win
SQL注入是web應用中最常見的漏洞之一。大多數學習web應用安全的人是從學習SQL注入開始的。
識別一個傳統的SQL注入很容易,給URL參數添加一個單引號看看是否報錯。
任何我們傳遞給伺服器的東西都會被記錄,並且可以朔源。
以下截圖顯示了日誌當中記錄了有對參數user傳入單引號測試是否有SQL注入的行為。
%27是單引號的URL編碼。
出於管理目的,我們還可以運行查詢監視來查看資料庫中的哪個請求被執行了。
如果我們觀察以上圖片,傳遞一個單引號給參數「user」的SQL語句被執行了。
0x04 使用自動化工具分析
當存在大量日誌時。手動檢查就會變得困難。在這種情景下,除了一些手動檢查之外我們可以使用自動化工具。
雖然有許多高效的商業工具,但是我要向你們介紹一款被稱為「Scalp」的免費工具。
據他們的官方鏈接所說,Scalp是用於Apache伺服器,旨在查找安全問題的日誌分析器。主要理念是瀏覽大量日誌文件並通過從HTTP/GET中提取可能的攻擊。
Scalp可以從以下鏈接下載:
https://code.google.com/p/apache-scalp/
Scalp是python腳本,所以要求我們的機器中安裝python。
以下圖片顯示該工具的幫助。
如我們在上圖所見,我們需要使用標志-l來提供要分析的日誌文件。
同時,我們需要提供使用標志-f提供一個過濾文件讓Scalp在access.log文件中識別可能的攻擊。
我們可以使用PHPIDS項目中的過濾器來檢測任何惡意的嘗試。
該文件名為「default_filter.xml 」,可以從以下鏈接中下載:
https://github.com/PHPIDS/PHPIDS/blob/master/lib/IDS/default_filter.xml
以下代碼塊是取自上面鏈接的一部分。
1
2
3
4
5
6
7
8
9
10
11
<filter>
<id>12</id>
<rule><![CDATA[(?:etc\/\W*passwd)]]></rule>
<description>Detects etc/passwd inclusion attempts</description>
<tags>
<tag>dt</tag>
<tag>id</tag>
<tag>lfi</tag>
</tags>
<impact>5</impact>
</filter>
它是使用XML標簽定義的規則集來檢測不同的攻擊測試。以上代碼片段是檢測文件包含攻擊嘗試的一個示例。
下載此文件之後,把它放入Scalp的同一文件夾下。
運行以下命令來使用Scalp分析日誌。
1
python scalp-0.4.py –l /var/log/apache2/access.log –f filter.xml –o output –html
「output」是報告保存的目錄。如果不存在的話,由Scalp自動創建。-html是用來生成HTML格式的報告。 如我們在上圖看到的那樣,Scalp結果表明它分析了4001行,超過4024並發現了296個攻擊模式。
運行上述命令後在輸出目錄內生成報告。我們可以在瀏覽器內打開它並查看結果。 下面截圖顯示的輸出顯示了目錄遍歷攻擊嘗試的一小部分。
MySQL中的日誌記錄
本節論述了資料庫中的攻擊分析和監視它們的方法。
第一步是查看設置了什麼變數。我們可以使用「show variables;」完成,如下所示。
接下來顯示了上述命令的輸出。
如我們在上圖中看到的,日誌記錄已開啟。該值默認為OFF。
這里另一個重要的記錄是 「log_output」,這是說我們正在把結果寫入到文件中。另外,我們也可以用表。
我們可以看見「log_slow_queries」為ON。默認值為OFF。
所有這些選項都有詳細解釋且可以在下面提供的MySQL文檔鏈接里直接閱讀:
MySQL的查詢監控
請求日誌記錄從客戶端處收到並執行的語句。默認記錄是不開啟的,因為比較損耗性能。
我們可以從MySQL終端中開啟它們或者可以編輯MySQL配置文件,如下圖所示。
我正在使用VIM編輯器打開位於/etc/mysql目錄內的「my.cnf」文件。
如果我們向下滾動,可以看見日誌正被寫入一個稱為「mysql.log」的文件內。
我們還能看到記錄「log_slow_queries」 ,是記錄SQL語句執行花了很長時間的日誌。
現在一切就緒。如果有人用惡意查詢資料庫,我們可以在這些日誌中觀察到。如下所示:
上圖顯示了查詢命中了名為「webservice」的資料庫並試圖使用SQL注入繞過認證。