近日發現我的WEB服務器遭到攻擊,篡改了我的首頁信息,杯具的是不是我先發現的,是我的同事發現了這一信息。
我打開首頁后發現,篡改的首頁信息是隱藏的。右擊查看源碼在最下面找到了一些莫名奇妙的友情連接,就去WEB服務器上查找可疑的文件,并查看WEB的access.log 沒有發現問題(馬虎)。 查看網站的主目錄發現有可疑文件,分別在網站的主目錄下和FCK下有一下0.jsp 1.jsp 00.php文件,并在FCK文件夾里發現有可疑的exe文件,分別有三個文件cmd.exe和FindPass.exe 看到這里心想完了,系統不保了,看了一下文件的上傳日期就再次查看了一下access.log文件,發現有可疑的地方并執行了一個jsp的文件,馬上復制這個地址在瀏覽器上打開發現 是一個“小馬” 能執行成功。“小馬”上傳上去以后他們就可以接著上次“大馬”和其他的他們用到的程序了,看來是我們WEB部署的程序上有上傳的漏洞。被人家拿到了webshell。
環境:windows+apache+php+tomcat+jk
分析:
由于環境是支持jsp和php的所以在jsp的環境運行php是可以的,在php的環境下運行jsp也是可以運行的。上傳目錄的權限也有執行的權限。程序上也沒有做真實的文件類型驗證。
做修復工作:
服務上優化:
把運行jsp的目錄禁止php的運行,把上傳目錄的腳本解析權限去掉。
apache的配置文件設置的太糙。
以前設置apache的配置文件是,除了.jpg .js .png .html等一些靜態的文件又apache來處理,以外的所有有tomcat來處理。
現在要修改tomcat來處理的一些用到的擴展名,其它都由apache來處理。
這樣才能拒絕擴展名的執行,因為apache和tomcat一起工作時 apache會將tomcat處理的文件名先給tomcat然后在看禁止權限規則。由于我們的網站都是動態的地址所以用不到jsp后綴名,所以.jsp的后綴名可以交給apache來處理,可以拒絕這個擴展名也可以不拒絕,就是不拒絕這個jsp擴展名的文件打開以后他也不會執行,他會顯示這個jsp文件的內容。即使他改成jsp1 也是不能執行的。
然后再限制一下php
php就好限制了,網上有很多。把php_flag engine off 加到不想讓php執行的目錄權限里就可以了
最終的配置文件:
#vi uriworkermap.properties
###這里是交給我們的tomcat來處理的后綴名
JkMount /*.key tomcat
JkMount /*.aaa tomcat
……
httpd.conf 配置文件修改
#vi httpd.conf
###這個目錄不允許運行php腳本,和禁止運行.jsp*、.php*的后綴名
<Directory "D:\opt\www\webroot">
php_flag engine off
<Files ~ "\.(php|jsp)">
Order allow,deny
Deny from all
</Files>
</Directory>
重啟apache服務,測試吧!!!
以上配置都親自測試過。哪里寫的不好的、看不明白的請多多指點。
程序上優化:
程序上的優化就是來做真實的文件類型來判斷是否能夠上傳。