IIS6.0使用冒号上传漏洞利用
利用条件:
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使用冒号上传漏洞利用的更多相关文章
- phpcms v9.6.0任意文件上传漏洞(CVE-2018-14399)
phpcms v9.6.0任意文件上传漏洞(CVE-2018-14399) 一.漏洞描述 PHPCMS 9.6.0版本中的libs/classes/attachment.class.php文件存在漏洞 ...
- Dedecms v5.7包含上传漏洞利用
Title:Dedecms v5.7包含上传漏洞利用 --2012-09-21 10:16 注册,登录,免邮箱验证. up.htm ---------------------------------- ...
- 【代码审计】JTBC(CMS)_PHP_v3.0 任意文件上传漏洞分析
0x00 环境准备 JTBC(CMS)官网:http://www.jtbc.cn 网站源码版本:JTBC_CMS_PHP(3.0) 企业版 程序源码下载:http://download.jtbc. ...
- kindeditor<=4.1.5 文件上传漏洞利用
kindeditor<=4.1.5 文件上传漏洞 - Kindeditor <=4.1.5 file upload vulnerability and use 漏洞存影响版本:小于等于4. ...
- phpcms v9.6.0任意文件上传漏洞
距离上一次写博客已经过去很长一段时间了,最近也一直在学习,只是并没有分享出来 越来越发现会的东西真的太少了,继续努力吧. 中午的时候遇到了一个站点,看到群里好多人都在搞,自己就也去试了试,拿下来后发 ...
- GLPI 0.85.5 上传漏洞分析
在exp-db上面看到的漏洞,这是原文链接:https://www.exploit-db.com/exploits/38407/ 但是POC给的很简单,这是原来的描述: " The appl ...
- 时尚起义开源话题微博系统 v.0.4.5 上传漏洞
漏洞出现在/action/upload.php文件中 <?php /** ** **By QINIAO **/ !defined('QINIAO_ROOT') && exit(' ...
- PHPcms9.6.0任意文件上传漏洞直接getshell 利用教程
对于PHPcms9.6.0 最新版漏洞,具体利用步骤如下: 首先我们在本地搭建一个php环境,我这里是appserv或者使用phpnow (官网下载地址:http://servkit.org/) (只 ...
- 【渗透测试】PHPCMS9.6.0 任意文件上传漏洞+修复方案
这个漏洞是某司的一位前辈发出来的,这里只是复现一下而已. 原文地址:https://www.t00ls.net/thread-39226-1-1.html 首先我们本地搭建一个phpcms9.6.0的 ...
随机推荐
- IntelliJ IDEA 安装,配置,汉化
压缩包:加QQ:1594216971 一.先进行安装包下载安装(五步) 1.运行”IntelliJ IDEA 2018.1.exe“ 开始安装,点击next 2.选择idea安装目录(不建议安装在c盘 ...
- django 中namespace的问题
在早期的django版本中 urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^polls/', include('polls.urls' ...
- C# 缓存的实现
缓存的实现 我们不是做第三方比如Redis等的缓存实现,而是根据实际情况,基于C#上做一些环境变量的保存,方便项目使用. 1.系统全局变量 很多时候,在系统运行开始,需要对系统的运行参数进行保存,以便 ...
- DOM之节点操作
DOM提供了很多实用的API,这些API让我们可以轻松的访问HTML文档.所谓API(应用程序接口),简单来说,就是让我们可以直接使用它访问程序的一些属性或方法,而不用了解程序内部的运作过程和原理. ...
- html常见的块元素与内联(行内)元素用法说明(一)
html平时常见的块元素有:div, p, h1, h2, h3等,内联元素有:span, a, img等. 块元素的属性:无论内容是什么,都会独占一整行.主要用于页面布局. 内联元素的属性:只占自身 ...
- 代码审计之XSS及修复
xss在平时的测试中,还是比较重要的,如果存在储存型xss,就可以做很多事情了,打cookie,添加管理员等等很多操作. 以下所有代码都是我自己写的,可能有不美观,代码错误等等问题,希望大家可以指正. ...
- 自定义构建基于.net core 的基础镜像
先说一个问题 首先记录一个问题,今天在用 Jenkins 构建项目的时候突然出现包源的错误: /usr/share/dotnet/sdk/2.2.104/NuGet.targets(114,5): e ...
- Wordpress设置Pretty Permalink的方法
设置Wordpress的Pretty Permalink的关键点莫过于下面几点(本文是基于Apache httpd服务器). 1.Apache httpd要有rewrite module 在httpd ...
- Spring 梳理 - WebMvcConfigurerAdapter详解
参考:https://blog.csdn.net/weixin_43453386/article/details/83623242
- Nodejs 发送邮件 激活邮箱
1. 安装nodemailer npm install nodemailer 项目中引入nodemailer var nodemailer = require('nodemailer'); 2.QQ邮 ...