admin_scanshell.asp
上传用户:sking1122
上传日期:2020-09-24
资源大小:1005k
文件大小:14k
源码类别:

手机WAP编程

开发平台:

ASP/ASPX

  1. <!--#include file="admin_sb.asp"-->
  2. <!--#include file="inc/include.asp"-->
  3. <%
  4. '************** ASPSecurity ASP木马查找 ************
  5. ' Copyright 2006
  6. ' Create:2006-1-16
  7. ' Update:2006-8-03
  8. '***************************************************
  9. Server.ScriptTimeout = 600
  10. DimFileExt = "asp,cer,asa,cdx"
  11. Dim Report, Sun, SumFiles, SumFolders
  12. Sun = 0
  13. SumFiles = 0
  14. SumFolders = 1
  15. requestPath = request.Form("path")
  16. if requestPath = "" or InStr(requestPath,"..") then
  17. response.Write("No Hack")
  18. response.End()
  19. end if
  20. timer1 = timer
  21. if requestPath = "" then
  22. TmpPath = Server.MapPath("")
  23. elseif requestPath = "." then
  24. TmpPath = Server.MapPath(".")
  25. else
  26. TmpPath = Server.MapPath("") & "" & requestPath
  27. end if
  28. Call ShowAllFile(TmpPath)
  29. %>
  30. <html>
  31. <head>
  32. <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  33. <link rel="stylesheet" rev="stylesheet" href="inc/control.css" type="text/css" media="all" />
  34. </head>
  35. <body class="ContentBody">
  36. <div class="MainDiv">
  37. <table width="100%" border="0" cellpadding="0" cellspacing="0" class="CContent" style="word-break:break-all">
  38.   <tr>
  39.     <th class="CTitle">雷客图ASP站长安全助手 ASP木马搜索
  40.   </tr>
  41.   <tr>
  42.     <td class="CPanel">
  43.         <div id="updateInfo" style="background:ffffe1;border:1px solid #89441f;padding:4px;display:none"></div>
  44. 扫描完毕!一共检查文件夹<font color="#FF0000"><%=SumFolders%></font>个,文件<font color="#FF0000"><%=SumFiles%></font>个,发现可疑点<font color="#FF0000"><%=Sun%></font>个(<font color="#FF0000">红字</font>显示的为严重可疑)
  45. <br>
  46. <table width="100%" border="0" cellpadding="0" cellspacing="0">
  47.  <tr>
  48.  <td valign="top">
  49.  <table width="100%" border="1" cellpadding="0" cellspacing="0" style="padding:5px;line-height:170%;clear:both;font-size:12px">
  50.  <tr>
  51.    <td width="20%">文件相对路径</td>
  52.    <td width="20%">特征码</td>
  53.    <td width="40%">描述</td>
  54.    <td width="20%">创建/修改时间</td>
  55.    </tr>
  56.      <p>
  57.  <%=Report%>
  58.  <br/></p>
  59.  </table></td>
  60.  </tr>
  61. </table>
  62. </td></tr></table>
  63. <%
  64. timer2 = timer
  65. thetime=cstr(int(((timer2-timer1)*10000 )+0.5)/10)
  66. response.write "<br><font size=""2"">本页执行共用了"&thetime&"毫秒</font>"
  67. %>
  68. </div>
  69. </body>
  70. </html>
  71. <%
  72. '遍历处理path及其子目录所有文件
  73. Sub ShowAllFile(Path)
  74. If Not Response.IsClientConnected Then Response.End()
  75. Set FSO = CreateObject("Scripting.FileSystemObject")
  76. if not fso.FolderExists(path) then exit sub
  77. Set f = FSO.GetFolder(Path)
  78. Set fc2 = f.files
  79. For Each myfile in fc2
  80. If CheckExt(FSO.GetExtensionName(path&""&myfile.name)) Then
  81. Call ScanFile(Path&Temp&""&myfile.name, "")
  82. SumFiles = SumFiles + 1
  83. End If
  84. Next
  85. Set fc = f.SubFolders
  86. For Each f1 in fc
  87. ShowAllFile path&""&f1.name
  88. SumFolders = SumFolders + 1
  89.     Next
  90. Set FSO = Nothing
  91. End Sub
  92. '检测文件
  93. Sub ScanFile(FilePath, InFile)
  94. If InFile <> "" Then
  95. Infiles = "<font color=red>该文件被<a href=""http://"&Request.Servervariables("server_name")&"/"&tURLEncode(InFile)&""" target=_blank>"& InFile & "</a>文件包含执行</font>"
  96. End If
  97. temp = "<a href=""http://"&Request.Servervariables("server_name")&"/"&tURLEncode(replace(replace(FilePath,server.MapPath("")&"","",1,1,1),"","/"))&""" target=_blank>"&replace(FilePath,server.MapPath("")&"","",1,1,1)&"</a>"
  98. on error resume next
  99. Set tStream = Server.CreateObject("ADODB.Stream")
  100. tStream.type = 1
  101. tStream.mode = 3
  102. tStream.open
  103. tStream.Position=0
  104. tStream.LoadFromFile FilePath
  105. If err Then Exit Sub end if
  106. tStream.type = 2
  107. tStream.charset = "GB2312"
  108. Do Until tStream.EOS
  109. filetxt = filetxt & LCase(replace(tStream.ReadText(102400), Chr(0), ""))
  110. Loop
  111. tStream.close()
  112. Set tStream = Nothing
  113. Set FSOs = CreateObject("Scripting.FileSystemObject")
  114. if len(filetxt) >0 then
  115. '特征码检查
  116. filetxt = vbcrlf & filetxt
  117. 'Check "WScr"&DoMyBest&"ipt.Shell"
  118. If instr( filetxt, Lcase("WScr"&DoMyBest&"ipt.Shell") ) or Instr( filetxt, Lcase("clsid:72C24DD5-D70A"&DoMyBest&"-438B-8A42-98424B88AFB8") ) then
  119. Report = Report&"<tr><td>"&temp&"</td><td>WScr"&DoMyBest&"ipt.Shell 或者 clsid:72C24DD5-D70A"&DoMyBest&"-438B-8A42-98424B88AFB8</td><td><font color=red>危险组件,一般被ASP木马利用</font>"&infiles&"</td><td>"&GetDateCreate(filepath)&"<br>"&GetDateModify(filepath)&"</td></tr>"
  120. Sun = Sun + 1
  121. End if
  122. 'Check "She"&DoMyBest&"ll.Application"
  123. If instr( filetxt, Lcase("She"&DoMyBest&"ll.Application") ) or Instr( filetxt, Lcase("clsid:13709620-C27"&DoMyBest&"9-11CE-A49E-444553540000") ) then
  124. Report = Report&"<tr><td>"&temp&"</td><td>She"&DoMyBest&"ll.Application 或者 clsid:13709620-C27"&DoMyBest&"9-11CE-A49E-444553540000</td><td><font color=red>危险组件,一般被ASP木马利用</font>"&infiles&"</td><td>"&GetDateCreate(filepath)&"<br>"&GetDateModify(filepath)&"</td></tr>"
  125. Sun = Sun + 1
  126. End If
  127. 'Check Unicode
  128. If instr( filetxt, chr(-22048)) then
  129. Report = Report&"<tr><td>"&temp&"</td><td>无</td><td><font color=red>使用 Unicode 编码 ASP 代码</font>"&infiles&"</td><td>"&GetDateCreate(filepath)&"<br>"&GetDateModify(filepath)&"</td></tr>"
  130. Sun = Sun + 1
  131. End If
  132. 'Check .Encode
  133. Set regEx = New RegExp
  134. regEx.IgnoreCase = True
  135. regEx.Global = True
  136. regEx.Pattern = "bLANGUAGEs*=s*[""]?s*(vbscript|jscript|javascript).encodeb"
  137. If regEx.Test(filetxt) Then
  138. Report = Report&"<tr><td>"&temp&"</td><td>(vbscript|jscript|javascript).Encode</td><td><font color=red>似乎脚本被加密了,一般ASP文件是不会加密的<a href=plugins/decoder.asp?path="&server.URLEncode(filepath)&" target=_blank>[解密]</a></font>"&infiles&"</td><td>"&GetDateCreate(filepath)&"<br>"&GetDateModify(filepath)&"</td></tr>"
  139. Sun = Sun + 1
  140. End If
  141. 'Check my ASP backdoor :(
  142. regEx.Pattern = "bEv"&"alb"
  143. If regEx.Test(filetxt) Then
  144. Report = Report&"<tr><td>"&temp&"</td><td>Ev"&"al</td><td>e"&"val()函数可以执行任意ASP代码,被一些后门利用。其形式一般是:ev"&"al(X)<br>但是javascript代码中也可以使用,有可能是误报。"&infiles&"</td><td>"&GetDateCreate(filepath)&"<br>"&GetDateModify(filepath)&"</td></tr>"
  145. Sun = Sun + 1
  146. End If
  147. 'Check exe&cute backdoor
  148. regEx.Pattern = "[^.]bExe"&"cuteb"
  149. If regEx.Test(filetxt) Then
  150. Report = Report&"<tr><td>"&temp&"</td><td>Exec"&"ute</td><td><font color=red>e"&"xecute()函数可以执行任意ASP代码,被一些后门利用。其形式一般是:ex"&"ecute(X)</font><br>"&infiles&"</td><td>"&GetDateCreate(filepath)&"<br>"&GetDateModify(filepath)&"</td></tr>"
  151. Sun = Sun + 1
  152. End If
  153. 'Check .(Open|Create)TextFile
  154. regEx.Pattern = ".(Open|Create)TextFileb"
  155. If regEx.Test(filetxt) Then
  156. Report = Report&"<tr><td>"&temp&"</td><td>.Crea"&"teTextFile|.O"&"penTextFile</td><td>使用了FSO的CreateTextFile|OpenTextFile函数读写文件"&infiles&"</td><td>"&GetDateCreate(filepath)&"<br>"&GetDateModify(filepath)&"</td></tr>"
  157. Sun = Sun + 1
  158. End If
  159. 'Check .SaveT&oFile
  160. regEx.Pattern = ".SaveT"&"oFileb"
  161. If regEx.Test(filetxt) Then
  162. Report = Report&"<tr><td>"&temp&"</td><td>.Sa"&"veToFile</td><td>使用了Stream或者JMail的SaveToFile函数写文件"&infiles&"</td><td>"&GetDateCreate(filepath)&"<br>"&GetDateModify(filepath)&"</td></tr>"
  163. Sun = Sun + 1
  164. End If
  165. 'Check .&Save
  166. regEx.Pattern = ".Sa"&"veb"
  167. If regEx.Test(filetxt) Then
  168. Report = Report&"<tr><td>"&temp&"</td><td>.Sa"&"ve</td><td>使用了XMLHTTP的Save函数写文件"&infiles&"</td><td>"&GetDateCreate(filepath)&"<br>"&GetDateModify(filepath)&"</td></tr>"
  169. Sun = Sun + 1
  170. End If
  171. 'Check set Server
  172. regEx.Pattern = "sets*.*s*=s*servers"
  173. If regEx.Test(filetxt) Then
  174. Report = Report&"<tr><td>"&temp&"</td><td>Set xxx=Se"&"rver</td><td><font color=red>发现Set xxx=Ser" & jj & "ver,请管理员仔细检查是否调用.execute</font><br>"&infiles&"</td><td>"&GetDateCreate(filepath)&"<br>"&GetDateModify(filepath)&"</td></tr>"
  175. Sun = Sun + 1
  176. End If
  177. 'Check Server.(Transfer|Ex&ecute)
  178. regEx.Pattern = "Server.(Ex"&"ecute|Transfer)([ t]*|()[^""])"
  179. If regEx.Test(filetxt) Then
  180. Report = Report&"<tr><td>"&temp&"</td><td>Server.Ex"&"ecute</td><td><font color=red>不能跟踪检查Server.e"&"xecute()函数执行的文件。请管理员自行检查</font><br>"&infiles&"</td><td>"&GetDateCreate(filepath)&"<br>"&GetDateModify(filepath)&"</td></tr>"
  181. Sun = Sun + 1
  182. End If
  183. 'Check .Ru&n
  184. regEx.Pattern = ".R"&"unb"
  185. If regEx.Test(filetxt) Then
  186. Report = Report&"<tr><td>"&temp&"</td><td>.Ru"&"n</td><td><font color=red>发现 WScript 的 Run 函数</font><br>"&infiles&"</td><td>"&GetDateCreate(filepath)&"<br>"&GetDateModify(filepath)&"</td></tr>"
  187. Sun = Sun + 1
  188. End If
  189. 'Check .Exe&c
  190. regEx.Pattern = ".Ex"&"ecb"
  191. If regEx.Test(filetxt) Then
  192. Report = Report&"<tr><td>"&temp&"</td><td>.Ex"&"ec</td><td><font color=red>发现 WScript 的 Exec 函数</font><br>"&infiles&"</td><td>"&GetDateCreate(filepath)&"<br>"&GetDateModify(filepath)&"</td></tr>"
  193. Sun = Sun + 1
  194. End If
  195. 'Check .Shel&lExecute
  196. regEx.Pattern = ".Shel"&"lExecuteb"
  197. If regEx.Test(filetxt) Then
  198. Report = Report&"<tr><td>"&temp&"</td><td>.ShellE"&"xecute</td><td><font color=red>发现 Application 的 ShellExecute 函数</font><br>"&infiles&"</td><td>"&GetDateCreate(filepath)&"<br>"&GetDateModify(filepath)&"</td></tr>"
  199. Sun = Sun + 1
  200. End If
  201. Set regEx = Nothing
  202. 'Check include file with "
  203. Set regEx = New RegExp
  204. regEx.IgnoreCase = True
  205. regEx.Global = True
  206. regEx.Pattern = "<!--s*#includes*files*=s*"".*"""
  207. Set Matches = regEx.Execute(filetxt)
  208. For Each Match in Matches
  209. tFile = Replace(Mid(Match.Value, Instr(Match.Value, """") + 1, Len(Match.Value) - Instr(Match.Value, """") - 1),"/","")
  210. If Not CheckExt(FSOs.GetExtensionName(tFile)) Then
  211. Call ScanFile( Mid(FilePath,1,InStrRev(FilePath,""))&tFile, replace(FilePath,server.MapPath("")&"","",1,1,1) )
  212. SumFiles = SumFiles + 1
  213. End If
  214. Next
  215. Set Matches = Nothing
  216. Set regEx = Nothing
  217. 'Check include file with '
  218. Set regEx = New RegExp
  219. regEx.IgnoreCase = True
  220. regEx.Global = True
  221. regEx.Pattern = "<!--s*#includes*files*=s*'.*'"
  222. Set Matches = regEx.Execute(filetxt)
  223. For Each Match in Matches
  224. tFile = Replace(Mid(Match.Value, Instr(Match.Value, "'") + 1, Len(Match.Value) - Instr(Match.Value, "'") - 1),"/","")
  225. If Not CheckExt(FSOs.GetExtensionName(tFile)) Then
  226. Call ScanFile( Mid(FilePath,1,InStrRev(FilePath,""))&tFile, replace(FilePath,server.MapPath("")&"","",1,1,1) )
  227. SumFiles = SumFiles + 1
  228. End If
  229. Next
  230. Set Matches = Nothing
  231. Set regEx = Nothing
  232. 'Check include virtual with "
  233. Set regEx = New RegExp
  234. regEx.IgnoreCase = True
  235. regEx.Global = True
  236. regEx.Pattern = "<!--s*#includes*virtuals*=s*"".*"""
  237. Set Matches = regEx.Execute(filetxt)
  238. For Each Match in Matches
  239. tFile = Replace(Mid(Match.Value, Instr(Match.Value, """") + 1, Len(Match.Value) - Instr(Match.Value, """") - 1),"/","")
  240. If Not CheckExt(FSOs.GetExtensionName(tFile)) Then
  241. Call ScanFile( Server.MapPath("")&""&tFile, replace(FilePath,server.MapPath("")&"","",1,1,1) )
  242. SumFiles = SumFiles + 1
  243. End If
  244. Next
  245. Set Matches = Nothing
  246. Set regEx = Nothing
  247. 'Check include virtual with '
  248. Set regEx = New RegExp
  249. regEx.IgnoreCase = True
  250. regEx.Global = True
  251. regEx.Pattern = "<!--s*#includes*virtuals*=s*'.*'"
  252. Set Matches = regEx.Execute(filetxt)
  253. For Each Match in Matches
  254. tFile = Replace(Mid(Match.Value, Instr(Match.Value, "'") + 1, Len(Match.Value) - Instr(Match.Value, "'") - 1),"/","")
  255. If Not CheckExt(FSOs.GetExtensionName(tFile)) Then
  256. Call ScanFile( Server.MapPath("")&""&tFile, replace(FilePath,server.MapPath("")&"","",1,1,1) )
  257. SumFiles = SumFiles + 1
  258. End If
  259. Next
  260. Set Matches = Nothing
  261. Set regEx = Nothing
  262. 'Check Server&.Execute|Transfer
  263. Set regEx = New RegExp
  264. regEx.IgnoreCase = True
  265. regEx.Global = True
  266. regEx.Pattern = "Server.(Exec"&"ute|Transfer)([ t]*|()"".*"""
  267. Set Matches = regEx.Execute(filetxt)
  268. For Each Match in Matches
  269. tFile = Replace(Mid(Match.Value, Instr(Match.Value, """") + 1, Len(Match.Value) - Instr(Match.Value, """") - 1),"/","")
  270. If Not CheckExt(FSOs.GetExtensionName(tFile)) Then
  271. Call ScanFile( Mid(FilePath,1,InStrRev(FilePath,""))&tFile, replace(FilePath,server.MapPath("")&"","",1,1,1) )
  272. SumFiles = SumFiles + 1
  273. End If
  274. Next
  275. Set Matches = Nothing
  276. Set regEx = Nothing
  277. 'Check RunatScript
  278. Set XregEx = New RegExp
  279. XregEx.IgnoreCase = True
  280. XregEx.Global = True
  281. XregEx.Pattern = "<scr"&"ipts*(.|n)*?runats*=s*""?server""?(.|n)*?>"
  282. Set XMatches = XregEx.Execute(filetxt)
  283. For Each Match in XMatches
  284. tmpLake2 = Mid(Match.Value, 1, InStr(Match.Value, ">"))
  285. srcSeek = InStr(1, tmpLake2, "src", 1)
  286. If srcSeek > 0 Then
  287. srcSeek2 = instr(srcSeek, tmpLake2, "=")
  288. For i = 1 To 50
  289. tmp = Mid(tmpLake2, srcSeek2 + i, 1)
  290. If tmp <> " " and tmp <> chr(9) and tmp <> vbCrLf Then
  291. Exit For
  292. End If
  293. Next
  294. If tmp = """" Then
  295. tmpName = Mid(tmpLake2, srcSeek2 + i + 1, Instr(srcSeek2 + i + 1, tmpLake2, """") - srcSeek2 - i - 1)
  296. Else
  297. If InStr(srcSeek2 + i + 1, tmpLake2, " ") > 0 Then tmpName = Mid(tmpLake2, srcSeek2 + i, Instr(srcSeek2 + i + 1, tmpLake2, " ") - srcSeek2 - i) Else tmpName = tmpLake2
  298. If InStr(tmpName, chr(9)) > 0 Then tmpName = Mid(tmpName, 1, Instr(1, tmpName, chr(9)) - 1)
  299. If InStr(tmpName, vbCrLf) > 0 Then tmpName = Mid(tmpName, 1, Instr(1, tmpName, vbcrlf) - 1)
  300. If InStr(tmpName, ">") > 0 Then tmpName = Mid(tmpName, 1, Instr(1, tmpName, ">") - 1)
  301. End If
  302. Call ScanFile( Mid(FilePath,1,InStrRev(FilePath,""))&tmpName , replace(FilePath,server.MapPath("")&"","",1,1,1))
  303. SumFiles = SumFiles + 1
  304. End If
  305. Next
  306. Set Matches = Nothing
  307. Set regEx = Nothing
  308. end if
  309. set fsos = nothing
  310. End Sub
  311. %>