常見的數(shù)據(jù)庫攻擊包括弱口令、SQL注入、提升權(quán)限、竊取備份等。對數(shù)據(jù)庫日志進(jìn)行分析,可以發(fā)現(xiàn)攻擊行為,進(jìn)一步還原攻擊場景及追溯攻擊源。
0x01 MSSQL日志分析
首先,MSSQL數(shù)據(jù)庫應(yīng)啟用日志記錄功能,默認(rèn)配置僅限失敗的登錄,需修改為失敗和成功的登錄,這樣就可以對用戶登錄進(jìn)行審核。
登錄到SQL Server Management Studio,依次點(diǎn)擊 管理--SQL Server 日志
雙擊日志存檔文件即可打開日志文件查看器,并可以對日志進(jìn)行篩選或者導(dǎo)出等操作。
另外,MSSQ提供了一個工具SQL Server Profiler ,方便查找和發(fā)現(xiàn)SQL執(zhí)行的效率和語句問題。
日志分析案例:
在日志文件查看器中,選擇篩選,在篩選設(shè)置中源設(shè)置為“登錄”,應(yīng)用篩選器,確定。
篩選后的結(jié)果,可以很清晰的識別用戶登錄信息,記錄內(nèi)容包括用戶登錄時間、登錄是否成功、登錄使用的賬號以及遠(yuǎn)程登錄時用戶使用的IP地址。
如下圖:客戶端:192.168.204.1進(jìn)行嘗試弱口令登錄,并發(fā)現(xiàn)其中有一條登錄成功的記錄。
0x02 SQL注入入侵痕跡
在利用SQL注入漏洞的過程中,我們會嘗試?yán)胹qlmap的--os-shell參數(shù)取得shell,如操作不慎,可能留下一些sqlmap創(chuàng)建的臨時表和自定義函數(shù)。我們先來看一下sqlmap os-shell參數(shù)的用法以及原理:
1、構(gòu)造一個SQL注入點(diǎn),開啟Burp監(jiān)聽8080端口
sqlmap.py -u http://192.168.204.164/sql.asp?id=1 --os-shell --proxy=http://127.0.0.1:8080
HTTP通訊過程如下:
創(chuàng)建了一個臨時表sqlmapoutput,調(diào)用存儲過程執(zhí)行系統(tǒng)命令將數(shù)據(jù)寫入臨時表,然后取臨時表中的數(shù)據(jù)展示到前端。
通過查看數(shù)據(jù)庫中最近新建的表的結(jié)構(gòu)和內(nèi)容,可以判斷是否發(fā)生過sql注入漏洞攻擊事件。
檢查方法:
1、數(shù)據(jù)庫表檢查
2、檢查xp_cmdshell等存儲過程
xp_cmdshell在mssql2005之后的版本中是默認(rèn)禁止的,查看xp_cmdshell是否被啟用。
`Exec master.dbo.xp_cmdshell 'whoami'
3、需要結(jié)合web日志,通過查看日志文件的大小以及審計日志文件中的內(nèi)容,可以判斷是否發(fā)生過sql注入漏洞攻擊事件。