利用条件:

1.iis版本为6.0 

2.上传文件名不会重命名

利用:

上传一个jpg木马图片 名字为:cs.asp:.jpg 注意是: 默认windows是不允许文件字含:(冒号)的 所以需要抓包后改下!!

上传成功后,iis会忽略掉:后面的字符,也就是成了cs.asp .但是在接收判断文件后缀还是可以检测的.jpg 绕过了 后缀检测 。

iis截取到的数据是完整的cs.asp:.jpg 但是上传过去的文件应该由于windows不允许带:文件名 所以iis直接去掉了:后面的 这个和%00截断应该不是一样,%00截断是直接截断了后面的 这样的话如果在前面有检测就无法通过检测了。

附上测试代码

 <form action=”.asp?s=ys” method=”post”
enctype=”multipart/form-data” name=”form1″>
file:<input name=”FormNameItem” type=”file” />
<button type=”submit”>提交</button>
</form>
<%
if len(Request(“s”))> then
Set oFileObj = New UpFileClass
oFileObj.GetData
For Each FormNameItem in oFileObj.File
FileName = oFileObj.File(FormNameItem).FileName
FileExtName = oFileObj.File(FormNameItem).FileExt
FileContent = oFileObj.File(FormNameItem).FileData
oFileObj.File(FormNameItem).SaveToFile server.MapPath(“\”) &
Response.Write server.MapPath(“\”) & “\.asp:.jpg OK!”
.Next
end if
Dim UpFileStream
Class UpFileClass
Dim Form,File,Err
Private Sub Class_Initialize
Err = -
End Sub
Private Sub Class_Terminate
’清除变量及对像 www.2cto.com
If Err < Then
Form.RemoveAll
Set Form = Nothing
File.RemoveAll
Set File = Nothing
UpFileStream.Close .Set UpFileStream = Nothing
End If .End Sub
Public Property Get ErrNum()
ErrErrNum = Err .End Property
Public Sub GetData ()
’定义变量
Dim RequestBinData,sSpace,bCrLf,sObj,iObjStart,iObjEnd,tStrea
Dim iFileSize,sFilePath,sFileType,sFormValue,sFileName
Dim iFindStart,iFindEnd
Dim iFormStart,iFormEnd,sFormName
’代码开始56.If Request.TotalBytes < Then ‘如果没有数据
Err =
Exit Sub
End If
Set Form = CreateObject (“Scripting.Dictionary”)
Form.CompareMode =
Set File = CreateObject (“Scripting.Dictionary”)
File.CompareMode =
Set tStream = CreateObject (“ADODB.Stream”)
Set UpFileStream = CreateObject (“ADODB.Stream”)
UpFileStream.Type =
UpFileStream.Mode =
UpFileStream.Open
dim ReadedBytes,ChunkBytes
ReadedBytes=
ChunkBytes=* ’100K分块上传方案
Do While ReadedBytes < Request.TotalBytes
UpFileStream.Write Request.BinaryRead(ChunkBytes)
ReadedBytesReadedBytes = ReadedBytes + ChunkBytes
If ReadedBytes > Request.TotalBytes Then ReadedBytes = Reque
Loop
’UpFileStream.Write (Request.BinaryRead(Request.TotalBytes))
UpFileStream.Position =
RequestBinData=UpFileStream.Read
iFormEnd = UpFileStream.Size
bCrLf = ChrB () & ChrB ()
.’取得每个项目之间的分隔符84.sSpace=Mi
RequestBinData,bCrLf)-) .iStart=LenB (sSpace)
iFormStart = iStart+ .’分解项目
Do
iObjEnd=InStrB(iFormStart,RequestBinData,bCrLf & bCrLf)+
tStream.Type =
tStream.Mode =
tStream.Open .UpFileStream.Position = iFormStart
UpFileStream.CopyTo tStream,iObjEnd-iFormStart
tStream.Position =
tStream.Type = .tStream.CharSet = “gb2312″
sObj = tStream.ReadText
’取得表单项目名称100.iFormStart = InStrB (iObjEnd,RequestBinData,sSpace)-
iFindStart = InStr (,sObj,”name=”"”,1)+6
iFindEnd = InStr (iFindStart,sObj,”"”",)
sFormName = Mid (sObj,iFindStart,iFindEnd-iFindStart)
’如果是文件105.If InStr (,sObj,”filename=”"”,1) > 0 Then 106.Set oFileObj = new FileObj_Class
’取得文件属性
iFindStart = InStr (iFindEnd,sObj,”filename=”"”,1)+10
iFindEnd = InStr (iFindStart,sObj,”"”",)
sFileName = Mid (sObj,iFindStart,iFindEnd-iFindStart)
oFileObj.FileName = Mid (sFileName,InStrRev (sFileNam
oFileObj.FilePath = Left (sFileName,InStrRev (sFileName,
oFileObj.FileExt = Mid (sFileName,InStrRev (sFileName, “
iFindStart = InStr (iFindEnd,sObj,”Content-Type: “,)+
iFindEnd = InStr (iFindStart,sObj,vbCr)
oFileObj.FileType = Mid (sObj,iFindStart,iFindEnd-iFindSt
oFileObj.FileStart = iObjEnd
oFileObj.FileSize = iFormStart -iObjEnd -
oFileObj.FormName = sFormName
File.add sFormName,oFileObj
else
’如果是表单项目
tStream.Close
tStream.Type =
tStream.Mode =
tStream.Open
UpFileStream.Position = iObjEnd
UpFileStream.CopyTo tStream,iFormStart-iObjEnd-
tStream.Position =
tStream.Type =
tStream.CharSet = “gb2312″
sFormValue = tStream.ReadText
If Form.Exists(sFormName)Then
Form (sFormName) = Form (sFormName) & “, ” & sForm
else
form.Add sFormName,sFormValue
End If
End If
tStream.Close
iFormStartiFormStart = iFormStart+iStart+
’如果到文件尾了就退出
Loop Until (iFormStart+) >= iFormEnd
RequestBinData = “”
Set tStream = Nothing
Set KS=Nothing
End Sub
End Class
’—————————————————————
’文件属性类
Class FileObj_Class
Dim FormName,FileName,FilePath,FileSize,FileType,FileS
’保存文件方法154.Public Function SaveToFile (Path)
’On Error Resume Next
Dim oFileStream
Set oFileStream = CreateObject (“ADODB.Stream”)
oFileStream.Type =
oFileStream.Mode =
oFileStream.Open
UpFileStream.Position = FileStart
UpFileStream.CopyTo oFileStream,FileSize
oFileStream.SaveToFile Path,
oFileStream.Close
Set oFileStream = Nothing
Set KS=Nothing
End Function
’取得文件数据
Public Function FileData
UpFileStream.Position = FileStart
FileData = UpFileStream.Read (FileSize)
End Function
End Class
%>

IIS6.0使用冒号上传漏洞利用的更多相关文章

  1. phpcms v9.6.0任意文件上传漏洞(CVE-2018-14399)

    phpcms v9.6.0任意文件上传漏洞(CVE-2018-14399) 一.漏洞描述 PHPCMS 9.6.0版本中的libs/classes/attachment.class.php文件存在漏洞 ...

  2. Dedecms v5.7包含上传漏洞利用

    Title:Dedecms v5.7包含上传漏洞利用 --2012-09-21 10:16 注册,登录,免邮箱验证. up.htm ---------------------------------- ...

  3. 【代码审计】JTBC(CMS)_PHP_v3.0 任意文件上传漏洞分析

      0x00 环境准备 JTBC(CMS)官网:http://www.jtbc.cn 网站源码版本:JTBC_CMS_PHP(3.0) 企业版 程序源码下载:http://download.jtbc. ...

  4. kindeditor<=4.1.5 文件上传漏洞利用

    kindeditor<=4.1.5 文件上传漏洞 - Kindeditor <=4.1.5 file upload vulnerability and use 漏洞存影响版本:小于等于4. ...

  5. phpcms v9.6.0任意文件上传漏洞

    距离上一次写博客已经过去很长一段时间了,最近也一直在学习,只是并没有分享出来  越来越发现会的东西真的太少了,继续努力吧. 中午的时候遇到了一个站点,看到群里好多人都在搞,自己就也去试了试,拿下来后发 ...

  6. GLPI 0.85.5 上传漏洞分析

    在exp-db上面看到的漏洞,这是原文链接:https://www.exploit-db.com/exploits/38407/ 但是POC给的很简单,这是原来的描述: " The appl ...

  7. 时尚起义开源话题微博系统 v.0.4.5 上传漏洞

    漏洞出现在/action/upload.php文件中 <?php /** ** **By QINIAO **/ !defined('QINIAO_ROOT') && exit(' ...

  8. PHPcms9.6.0任意文件上传漏洞直接getshell 利用教程

    对于PHPcms9.6.0 最新版漏洞,具体利用步骤如下: 首先我们在本地搭建一个php环境,我这里是appserv或者使用phpnow (官网下载地址:http://servkit.org/) (只 ...

  9. 【渗透测试】PHPCMS9.6.0 任意文件上传漏洞+修复方案

    这个漏洞是某司的一位前辈发出来的,这里只是复现一下而已. 原文地址:https://www.t00ls.net/thread-39226-1-1.html 首先我们本地搭建一个phpcms9.6.0的 ...

随机推荐

  1. Vuex,从入门到...

    Vuex 是什么? 官方是这么说的:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 不懂? ...

  2. Sublime Text 3 中实现编译C语言程序

    这个是真坑,感觉用devc++写c程序特别的不爽,所以就用了sublime,但是,编译的时候又有不少问题, 下面就把我踩的坑记录下来 tools>Build System>New Buil ...

  3. 使用Consul做leader选举的方案

    在分布式集群部署模式下,为了维护数据一致性,通常需要选举出一个leader来进行协调,并且在leader挂掉后能从集群中选举出一个新的leader.选举leader的方案有很多种,对Paxos和Raf ...

  4. OAuth2.0摘要

    一.简介 不使用oauth2.0协议,资源所有者直接给需要使用资源的第三方应用共享凭据时,有这些问题: 需要直接共享给第三方应用凭据 需要服务器支持密码身份验证 凭据的访问权限过大,失去对访问时间和范 ...

  5. 微信小程序中scroll-view的几个坑

    微信小程序中scroll-view的几个坑 1:设置scroll-x时,却不能横向滚动,因为view是block组件,但是这里用了flex就不能滚动了(想用flex布局,请开启属性enable-fle ...

  6. NN and the Optical Illusion-光学幻觉 CodeForce1100C 几何

    题目链接:NN and the Optical Illusion 题目原文 NN is an experienced internet user and that means he spends a ...

  7. video.js 使用中抛出异常:DOMException: "'#1098942864706113536' is not a valid selector"

    原因:video.js 在获取页面元素时使用的是querySelector方法,由于querySelector是按css规范来实现的,所以它传入的字符串中第一个字符不能是数字. 解决:元素Id在赋值时 ...

  8. Spring 梳理 - @Component

    使用@Component注解,表示该类定义为Spring管理Bean,使用默认value(可选)属性表示Bean标识符.如果不指定标识符,默认为首字母小写类名.例如类UserController的标识 ...

  9. Mysql INSTR函数

    在Mysql中,可以使用INSTR(str,substr)函数,用于在一个字符串(str)中搜索指定的字符(substr),返回找到指定的字符的第一个位置(index),index是从1开始计算,如果 ...

  10. tomcat 配置jvm参数

    设置JVM参数在Windows下,在$TOMCAT_HOME/bin/catalina.bat,Linux下,在$TOMCAT_HOME/bin/catalina.sh的前面,增加如下设置: JAVA ...