Linux的應急加固
一、JS劫持
獲取JS劫持域名
JS劫持,JavaScript Hijacking介紹:
攻擊者通過某種方式篡改網頁中的JavaScript代碼,從而使網頁跳轉到惡意域名。
常見攻擊方式有:
- 中間人攻擊,在網絡傳輸過程中攔截并修改js代碼
- 惡意注入,通過XSS漏洞向頁面注入惡意JS代碼
- 第三方庫篡改
- DNS劫持,將JS文件請求重定向到惡意服務器
訪問目標網站,自動跳轉到惡意網站,這個惡意網站的域名就是被用于JS劫持的惡意域名。
二、黑客首次webshell密碼
登錄目標服務器,隨手查看根目錄文件,發現ls命令并不是默認展示形式,可能遭到篡改
進行日志分析,/var/log/nginx/access.log
1.可以下載后使用日志分析工具logparser分析,也可以使用linux命令
分析日志中出現的腳本文件,在正則表達式中.是通配符,需要借助/轉義字符,否則會匹配其他字符
gerp -E '\.php|\.jsp|\.asp|\.aspx' ./access.log
2.日志記錄了文件上傳位置,可以去查看是否有異常文件
3.網站被劫持,抓包訪問該網站,發現利用某個文件完成了網站跳轉
查詢第二個webshell,可以借助awk指令,查詢.php但是非第一個webshell的日志
awk '/\.php/ && !/first\.php/ {print $0}' access.log
斜杠表示正則,反斜杠表示轉義.,!表示排除,{print $0}表示打印當前行所有內容。{print $m,n} ,m,n!=0表示打印第m、n個字段
三、黑客首次入侵方式
日志分析獲取了黑客的IP,查找首次入侵的嘗試。
GET是沒有請求體的,只能請求資源,這里Webshell已經上傳成功了,這里的POST請求是蟻劍連接。
這里可以看到蟻劍流量特征。
篩選IP,審計日志,發現攻擊特征
在線日志分析網站 ,不知道logparser為什么不能解析這個日志,明顯的NCSA格式。
首次嘗試為反射型XSS
常見的日志格式 | 樣例 |
---|---|
NCSA | 192.168.1.1 - - [10/Oct/2023:12:34:56 +0800] “GET / HTTP/1.1” 200 1234 |
W3C/IIS | 2023-10-10 12:34:56 192.168.1.1 GET / 200 |
四、黑客服務器的信息
找到黑客留下的后門中黑客服務器的IP和端口號
后門往往通過反彈shell執行命令
- 查看可疑進程
ps -aux
- 發現有啟動進程的指令異常
ps -aux:查看系統運行的進程信息(ps -u user,查看user啟動的進程)
ps查看進程狀態,ss查看網絡連接(ss -tulnp,查看tcp、udp、監聽端口、不顯示服務名、進程信息)
五、修復MySQL可getshell漏洞
MySQL的getshell:就是在某些情況下,通過sql語句,能夠寫入shell code
修復漏洞,讓前提條件中的任何一個(或全部)不滿足即可
MySql的getshell方式 | 前提條件 |
---|---|
利用文件寫入功能 into outfile into dumpfile(查詢結果以二進制形式寫入) | secure_file_priv為空(未設置,NULL表示完全禁止) 知道網站絕對路徑 當前用戶需要有文件寫入權限FILE |
利用通用查詢日志 general log | 執行操作的用戶具有FILE權限 知道網站的絕對路徑 |
慢查詢日志 slow query log | 默認查詢超過10s的記錄會被記入慢查詢日志中 第一步,開啟日志,設置日志文件目錄 第二步,通過查詢將指令寫入日志 |
提權方式 | |
利用UDF提權 | 通過create function 創建用戶自定義函數,從而利用包含惡意代碼的UDF庫文件(Linux的.so文件、Windows的.dll文件) 這些包含惡意代碼的UDF庫文件包含系統命令調用的實現 |
利用MOF提權 | 利用低版本Windows系統中,每幾分鐘會執行mof文件的特性 |
getShell和提權是兩件事情,比如,利用MySQLgetShell后。發現Mysql以root權限運行,通過UDF獲取root權限。
這的用戶是MySQL用戶,由MySQL自行管理,存儲在mysql.user表中
FILE權限決定該用戶能否執行文件操作命令
六、黑客的賬號
找到黑客添加的賬號并刪除
cat /etc/passwd 查看用戶
awk '/\$1|\$6/{print $1}' /etc/shadow 查看具有遠程登錄權限的用戶
刪除用戶
userdel -r user,遞歸刪除user目錄
七、黑客篡改的命令
修復黑客篡改的命令,并刪除篡改命令生成的免殺馬
linux一切皆文件,指令也一樣如此,可能黑客只是給原本的命令修改了名稱,并自定義一個命令,cat同樣可以查看command信息
Linux指令存放目錄 | 用途 |
---|---|
/bin | 存放系統基礎命令(如ls、cp、mv),所有用戶可用 |
/sbin | 存放系統管理命令(如iptables、reboot),通常需要root權限 |
/usr/bin | 存放用戶級應用程序/命令(如python、curl等),系統啟動后加載 |
/usr/sbin | 存放非關鍵的超級用戶命令(如useradd、userdel、usermod) |
/usr/local/bin | 用戶手動安裝的軟件(優先級高于/usr/bin) |
/usr/local/sbin | 手動安裝的系統管理命令 |
which ls 或 whereis ls 顯示命令路徑
八、修復JS劫持
有兩種方法查詢到異常的JavaScript代碼
- 進入網站根目錄 /var/www/html
使用命令find .| xargs grep -ri '<script type=text/javascript">' -l|sort|uniq -c
依次查看文件,刪除其中的惡意JavaScript代碼 - 訪問目標網站,使用burpsuite抓包,響應包中會觸發惡意JavaScript
這種方式可能只適用靶場,因為被入侵會斷網
vim快速刪除8,9行之間的內容:8,9d