如何修復被掛木馬的php網站

發表於2013-09-10

有個朋友的網站長期沒有人管理,而網站PR=4,於是網站被人攻陷,首頁加上了上百條黑鏈,找我幫忙修復

看到首頁密密麻麻的黑鏈,第一反應就是頭大。最簡單的辦法:格式化後重灌系統。但是這個伺服器web/資料庫都部署在同一臺上,資料規模有200多G,當初安裝的時候也沒有分割槽,線上遷移資料太麻煩了,只能硬著頭皮去修復問題,

修復步驟

  1. 停掉web服務,免得舊仇未報,又添新恨

  2. 找到被掛馬的漏洞。一定要找到,不然問題根本解決不了。伺服器被掛馬主要是兩種原因:sql注入或者某種系統性漏洞

    • sql注入,和程式碼有關係,不好查。但是隻要你的Nginx/PHP不是以root身份執行的,最多被拖庫,被掛馬的可能性不大

    • 系統性漏洞,這個破壞性很大,但是都會比較著名,馬上有人提供解決方案,搜尋一下就能找到

    所以,找到被掛馬的原因是: nginx檔案型別錯誤解析漏洞,這個漏洞很嚴重,php網站只要支援圖片上傳都會中招

  3. 修補漏洞,nginx檔案型別錯誤解析漏洞 這個漏洞比較好修復,在nginx configure檔案裡面配置一下即可

  4. 搜查木馬檔案,到程式碼安裝目錄執行下面命令

    find ./ -iname "*.php" | xargs grep -H -n "eval(base64_decode"

    搜出來接近100條結果,這個結果列表很重要,木馬都在裡面,要一個一個檔案開啟驗證是否是木馬,如果是,馬上刪除掉

    最後找到10個木馬檔案,存放在各種目錄,都是php webshell,功能很齊全,用base64編碼

  5. 清理現場, 去掉首頁上的黑鏈,重啟web服務

安全經驗

  • 普通伺服器被掛馬,不用緊張,按上述步驟進行修復
  • 關鍵伺服器(比如部署了使用者資金/轉賬/交易 等服務),被掛馬之後,必須要格式化重灌,因為webshell的功能實在是非常齊全,攻擊者很可能替換掉系統關鍵程式,比如sshd,nginx等,從此大門開啟,隨便進出
  • 伺服器安裝系統要分割槽,至少應該分 系統區和資料區 兩部分,這樣重灌系統的時候可以不用遷移資料
  • 凡是提供外部埠的服務程式(web server,gate server),一定要用獨立的使用者執行,千萬不要圖省事,直接用root 

相關文章