位置: IT常识 - 正文

文件上传漏洞及绕过检测的方式(文件上传漏洞及解决方案)

编辑:rootadmin
文件上传漏洞及绕过检测的方式 文章目录一、什么是文件上传漏洞?二、目标会对文件上传做哪些防护?(一)客户端检测(二)服务端检测(三)白名单和黑名单的区别三、绕过后端黑名单检测(一)换一个后缀名绕过黑名单检测(二)用.htaccess文件巧妙绕过黑名单(三)用大小写绕过后缀名检测(四)文件后缀加空格或点绕过后缀名检测(五)构造文件后缀绕过后缀名检测(六)双写绕过后缀名检测(七)Windows文件流绕过后缀名检测四、绕过白名单检测(一)%00截断和00截断(二)绕过Content-Type检测(三)用图片木马绕过白名单检测(四)用gif文件绕过二次渲染(五)利用条件竞争绕过白名单五、小结一、什么是文件上传漏洞?

推荐整理分享文件上传漏洞及绕过检测的方式(文件上传漏洞及解决方案),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:文件上传漏洞的防范措施,文件上传漏洞及解决方案,文件上传漏洞总结,文件上传 漏洞,文件上传漏洞总结,文件上传漏洞及解决办法,文件上传漏洞及怎么修复,文件上传漏洞及解决方案,内容如对您有帮助,希望把文章链接给更多的朋友!

文件上传本身是指一个功能,比如用户可以上传头像、上传资料等。而如果能够上传任意文件,则可能存在上传漏洞(注意是可能,不是一定)。 任意文件上传漏洞的产生需要满足三个条件: 1、文件能上传; 2、文件能被服务器解析(你传的文件要能被当做后端脚本处理); 3、能访问得到上传的文件,如果访问不到,则无法对文件进行控制,也就没有漏洞的说法。(文件路径通常只有在根目录里面才能访问到) 任意文件上传漏洞,首先要有能上传文件的的地方,即要有文件上传点。有一些网站虽然貌似没有上传点,但是其实存在上传代码的。虽然没有明确使用上传功能 ,但使用了上传有关的函数,这种情况需要通过代码审计去看。 文件上传一般是要先登陆目标网站,用管理员账号或者普通账号都可以,最常见的就是上传头像。

二、目标会对文件上传做哪些防护?

一般目标网站都会有一些防护。现在我们来介绍一下网站常见的防护方法,知道了网站是如何防护该漏洞的,有利于我们更好地开展渗透测试。 对文件上传的防护大体上可以分为两类,一类是客户端检测,另一类是服务端检测。

(一)客户端检测

客户端检测是指依靠浏览器,用JS代码去检测。一般是在网页上写一段Js脚本,用Js去检测,在文件未上传时,校验文件的后缀名,检测的方式有白名单和黑名单两种。 那么如何判断是否为客户端检测? 在浏览加载文件,但还未点击上传按钮时便弹出对话框,内容如:只允许上传.jpg/.jpeg/.png后缀名的文件,而此时并没有发送数据包,所以可以通过抓包来判断,如果弹出不准上传,但是没有抓到数据包,那么就是采用了前端验证。 从安全的角度来看,前端验证非常不可靠,传正常文件再改数据包就可以绕过,甚至关闭JS都可以尝试绕过。很多程序员使用JavaScript来拒绝非法文件的上传,这种验证方式对一些普通用户防止上传错误还可以,但是对专业的技术人员来硕,这是非常低级的验证方式。攻击者可以用非常多的方法来突破客户端的验证。 由于前端代码对用户完全开放,因此很容易通过分析前端代码来绕过,所以相当于没有检测。可以用以下三种方式去绕过或者删除前端的检测: 1、用burp抓个返回包然后把前端代码里面文件检测的部分代码删掉(这种方式也叫中间人攻击); 2、点检查,然后找到文件检测部分的JS代码,删掉即可,(但是最保险的办法还是抓包后再去删); 3、根据前端代码允许上传的类型,预先把木马文件后缀改成相应的后缀,比如jpg,通过前端代码的检测以后,会自动往服务器发包,然后通过burp去拦截这个包,把后缀名改回来。

(二)服务端检测

服务端检测是先将文件上传到服务器,然后服务器依靠后端代码去检测上传的文件是否合规。服务器脚本一般会检测文件的MIME类型、扩展名是否合法,甚至可能会去检测文件中是否嵌入恶意代码。 服务端检测几个常见的手段有:检查Content-Type(内容类型)、检查后缀(检查后缀是主流,根据后缀来决定用什么方式来处理这个文件)、检查文件头等。

(三)白名单和黑名单的区别

黑名单:不允许某某类型的文件上传; 白名单:只允许某某类型的文件上传。 显然白名单的方式比黑名单更安全,黑名单很容易就会被绕过。 那么如何判断目标是黑名单还是白名单呢,其实很简单,只要上传一个莫名其妙的后缀,比如1.czczxca,这个后缀的文件肯定不存在,所以如果能上传成功,说明目标是黑名单检测,如果上传失败,则目标是白名单检测。

三、绕过后端黑名单检测

假如后端代码采用黑名单检测,那么开发人员往往会预先设置一些后缀名作为黑名单,不允许某些后缀名的文件上传,那么此时就需要去尝试各种不同的绕过方法了。

(一)换一个后缀名绕过黑名单检测

假设我们要上传的文件为php文件,那么就要去尝试,看看什么样的后缀名会被当成php文件解析。实际上,除了后缀为.php的文件会被当成php文件解析, 还有phtml php3 php4 php5之类的后缀也会,可以都去尝试一下,看看能否上传成功。 对于不同的文件,可以采用不同的后缀去测试,虽然概率很小,但万一成功了呢?

(二)用.htaccess文件巧妙绕过黑名单

假如开发者把后端代码写的很严格,甚至后缀名的大小写也写进了黑名单,那么就可以尝试用.htaccess文件来绕过了。 .htaccess全称是Hypertext Access(超文本入口)。htaccess文件也被称为分布式配置文件,是Apache特有的的针对目录改变配置的方法。通过在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。该文件可以针对不同的目录采用不同的策略。 一般后端的黑名单不会过滤把.htaccess后缀写进去,那么我们可以先上传一个.htaccess文件上去,提前设置好让它把.jpg文件当做php文件来解析,这样后续只需要上传.jpg文件就可以了。 .htaccess文件的内容如下:

AddType application/x-httpd-php .jpg文件上传漏洞及绕过检测的方式(文件上传漏洞及解决方案)

这个指令代表着.jpg文件会当做php文件来解析。 很多windows操作系统是禁止将文件名设置为空的,但是我们可以用cmd命令来实现。首先新建一个名为1.txt的文件,然后输入上述代码。接着在该文件夹下打开cmd窗口,输入:

ren 1.txt .htaccess(三)用大小写绕过后缀名检测

对于那种老版本的WEB容器,是区分大小写的,所以这种方法只对WEB容器非常古老的版本有效。原理很简单,在解析的时候,windows的文件和文件夹都是不区分大小写的,而WEB容器区分大小写,因此上传的时候就有可能绕过该WEB容器,从而实现绕过后缀名检测。

(四)文件后缀加空格或点绕过后缀名检测

在文件名后面留一个空格,然后上传上去后空格会被自动的省略,但是看源码可知道,源码中黑名单中没有过滤空值,那么php和php空格,当然是不一样的。 注意:windows会自动去除文件末尾的空格,所以需要先上传正常的文件,然后抓包在后缀名的地方加空格,再放包,就可以了。这里的空格改成点也是一样的。

(五)构造文件后缀绕过后缀名检测

这种情况下需要对目标检测方式的源代码有一定的了解,要么了解目标网站的开发风格,要么知道源代码是如何对后缀名进行处理的,从而根据处理规则,巧妙绕过后缀名的检测。来看下面一段代码:

$deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess");$file_name = trim($_FILES['upload_file']['name']); //$_FILES['upload_file']['name'] //获取上传的文件名,比如 1.jpg$file_name =deldot($file_name);//删除文件名末尾的点 1.jpg $file_ext = strrchr($file_name, '.'); //查找指定字符在字符串中的最后一次出现,并返回从该位置到字符串结尾的所有字符,这里实际上就是取后缀名$file_ext = strtolower($file_ext); //转换为小写$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA$file_ext = trim($file_ext); //首尾去空if (!in_array($file_ext, $deny_ext)) {if (move_uploaded_file($_FILES['upload_file']['tmp_name'], $UPLOAD_ADDR . '/' . $_FILES['upload_file']['name'])) {$img_path = $UPLOAD_ADDR . '/' . $file_name;$is_upload = true;}} else { $msg = '此文件不允许上传'; }

根据以上代码,假如输入的文件后缀名为1.php.空格.,则处理过后会剩下1.php. 在windows中,1.php.会自动变为1.php,从而实现了绕过后缀名的检测。

(六)双写绕过后缀名检测

来看一段源代码:

$file_name = str_ireplace($deny_ext,"", $file_name);

这里的意思就是把检测到的危险字符替换为空,php被替换为空,那么假设上传的文件后缀名为pphphp,被替换为空后就会变为php,从而实现了绕过。

(七)Windows文件流绕过后缀名检测

windows下硬盘格式主要有FAT16、FAT32、NTFS等。ADS(NTFS交换数据流)是NTFS磁盘格式的一个特性,在NTFS文件系统下,每个文件都可以存在多个数据流。通俗的理解,就是其它文件可以“寄宿”在某个文件身上,而在资源管理器中却只能看到宿主文件,找不到寄宿文件。 我们先新建一个1.txt,里面没有内容,然后在当前文件夹打开cmd,输入:

echo 123>1.txt

这表示将123写入1.txt 继续输入:

echo 123>1.txt:a.txt

这样在1.txt中没有123,并且该txt文件的大小没有变化。 那么如何访问刚才写入的文件呢? 输入:

notepad 1.txt:a.txt

就可以看见刚才输入的123 如果要显示这个文件,可以在cmd命令里输入:

dir /r

这种方式可以用来藏资料。(但是还不是最好的方法) 注意,实际上在windows中, a.txt::$DATA就是默认不修改文件流的情况,相当于a.txt。对于windows系统而言,这两种写法没什么区别。但是对于后端的检测而言,这两种写法完全不一样。所以生成一个正常的a.txt,利用windows特性,可在后缀名中加::$DATA绕过。注意,上传成功以后,要访问时,就直接访问该文件,不要再加::$DATA 注意:只有windows可以这么操作。

四、绕过白名单检测(一)%00截断和00截断

了解%00之前我们要先了解0x00。 00截断:类似我们用对讲机或者电报通话时,说完一句话会用over表示一句话说完了,而电脑也需要一个截断的信号,而这个信号就是00截断。 0x是一个十六进制表示方式,

本文链接地址:https://www.jiuchutong.com/zhishi/287277.html 转载请保留说明!

上一篇:google浏览器应用程序无法启动,因为应用程序的并行配置不正确的完美解决方案(chrome谷歌浏览器)

下一篇:在湿地中跳跃的欧洲野兔,荷兰 (© Jim Brandenburg/Minden Pictures)(湿地上有什么植物)

  • 淘宝怎么签到(淘宝怎么签到领优惠券)

    淘宝怎么签到(淘宝怎么签到领优惠券)

  • vivo手机的镜像怎么打开(vivo手机的镜像配置在哪里)

    vivo手机的镜像怎么打开(vivo手机的镜像配置在哪里)

  • vivo手机怎么语音唤醒(vivo手机怎么语音解锁密码)

    vivo手机怎么语音唤醒(vivo手机怎么语音解锁密码)

  • 钉钉直播开小窗会计算时间吗(钉钉直播开小窗算时间吗)

    钉钉直播开小窗会计算时间吗(钉钉直播开小窗算时间吗)

  • vivo x27充不进去电是什么原因(vivox27充不了电)

    vivo x27充不进去电是什么原因(vivox27充不了电)

  • 把qq空间注销情侣空间还在不(qq空间注销后有什么后果)

    把qq空间注销情侣空间还在不(qq空间注销后有什么后果)

  • 微信为什么会出现请注意核实对方身份证(微信为什么会出现点赞未发送)

    微信为什么会出现请注意核实对方身份证(微信为什么会出现点赞未发送)

  • 抖音刷到的视频是随机的吗(抖音刷到的视频找不到了怎么办)

    抖音刷到的视频是随机的吗(抖音刷到的视频找不到了怎么办)

  • 对方无应答是拉黑吗(对方无应答是什么)

    对方无应答是拉黑吗(对方无应答是什么)

  • 快手表情包为什么没了(快手表情包为什么那么糊)

    快手表情包为什么没了(快手表情包为什么那么糊)

  • 微信交电费最晚多久到账(微信交电费最晚到几点)

    微信交电费最晚多久到账(微信交电费最晚到几点)

  • 笔记本电脑开机蓝屏出现一堆英文怎么解决(笔记本电脑开机进不了系统怎么办)

    笔记本电脑开机蓝屏出现一堆英文怎么解决(笔记本电脑开机进不了系统怎么办)

  • 平板自动关机怎么回事(平板自动关机怎么设置密码)

    平板自动关机怎么回事(平板自动关机怎么设置密码)

  • iphone如何自定义闹钟(iphone如何自定义闹钟铃声)

    iphone如何自定义闹钟(iphone如何自定义闹钟铃声)

  • word怎么输入下角标(word怎么输入下标字母)

    word怎么输入下角标(word怎么输入下标字母)

  • 手机来电图片怎么设置(手机来电图片怎么变大)

    手机来电图片怎么设置(手机来电图片怎么变大)

  • 手机通话被限制是怎么回事(手机通话被限制服务宽带会停吗?)

    手机通话被限制是怎么回事(手机通话被限制服务宽带会停吗?)

  • OPPO k5怎么打开网络共享(OPPOk5怎么打开快充)

    OPPO k5怎么打开网络共享(OPPOk5怎么打开快充)

  • 企业微信如何创立子部门(企业微信如何创建群)

    企业微信如何创立子部门(企业微信如何创建群)

  • 怎么样制作ppt文稿(怎样制作ppt文稿)

    怎么样制作ppt文稿(怎样制作ppt文稿)

  • word怎么生成参考文献(word文档制作生成)

    word怎么生成参考文献(word文档制作生成)

  • word目录在哪个选项卡(word目录哪里找)

    word目录在哪个选项卡(word目录哪里找)

  • 如何让文字竖着居中(如何让文字竖着在中间)

    如何让文字竖着居中(如何让文字竖着在中间)

  • 苹果不想更新系统怎么取消红点(苹果不想更新系统怎么关)

    苹果不想更新系统怎么取消红点(苹果不想更新系统怎么关)

  • 抖音不被转载怎么设置(抖音禁止转载)

    抖音不被转载怎么设置(抖音禁止转载)

  • 视频原声怎么下载(视频原声怎么下载下来)

    视频原声怎么下载(视频原声怎么下载下来)

  • hd上面有个电话是什么意思怎么关(hd上面有个电话怎么打开)

    hd上面有个电话是什么意思怎么关(hd上面有个电话怎么打开)

  • 在Mac OS X中快速安装TEX的一种新的方法(macos快捷键一览)

    在Mac OS X中快速安装TEX的一种新的方法(macos快捷键一览)

  • 小规模纳税人的企业所得税税率
  • 改革性补贴是否属于规范的津贴补贴
  • 岗位津贴和岗位补贴
  • 个人销售货物缴增值税吗
  • 一般增值税纳税人和小规模纳税人
  • 公司合并是不是先变更股权
  • 员工工资薪金会计如何核算?
  • 小规模个人所得税怎么申报
  • 递延所得税负债是什么意思
  • 实际缴纳增值税税额是什么意思
  • 三八妇女节要求小班幼儿到校怎么分享
  • 分公司不独立核算怎么报税
  • 开手续费发票开多了怎么做账
  • 计提应付利息编制记账凭证用什么原始凭证?
  • 企业交纳房产税,土地使用税、车船使用税应借记( )账户
  • 购进农产品再销售
  • 土地使用权对外出租还摊销吗
  • 购入土地建厂房要交的税
  • 公司账户里的钱有利息吗
  • win10鼠标在哪
  • 激活windows11怎么激活
  • 网件R6400路由器怎么样?网件R6400上网与传输评测的教程
  • win10怎么更换版本
  • 社保退回的工伤怎么赔偿
  • 固定资产财产损失的账务处理
  • 使用过的固定资产出售,怎么处理
  • 应税销售额含增值税吗
  • macos big sur值得升级吗
  • http://与www.开头的网站有何区别
  • php自定义表单系统
  • electron-vue官网
  • 小规模企业应交税费
  • 预算会计的核算对象是什么
  • 预付账款的会计处理
  • 给员工分红是否交税
  • python中的列表和元祖有什么区别
  • python文档怎么查看
  • 交易性金融资产入账价值怎么计算
  • 递延所得税资产和负债怎么计算
  • 国家税务总局就是国税局吗?
  • 采购人员费用计入什么科目
  • 企业的存货清查包括
  • 企业所得税季度申报数据怎么来
  • 如何评价福建省
  • 个体户也需要纳税吗
  • 购买产品样品计入什么科目
  • 企业合并中或有对价的会计处理
  • 疫情期间减免的六大行业
  • 经营一家淘宝店需要多少钱
  • 企业利润总额计算例题及答案
  • 管理费用包括哪些税
  • 发票冲红的会计怎么处理
  • 普通发票采购分录
  • 营改增后工程项目计价规则也随之发生了改变对错
  • 饭店会计做账流程
  • 存货盘亏进项税额转出会计分录
  • 商品流通企业的含义与特点
  • sqlserver not in 语句使程充崩溃
  • mysql alter table命令修改表结构实例
  • 电脑操作系统win7
  • windows10创意者更新
  • xp电脑启动项怎么设置启动项
  • macbookpro查看硬盘
  • drvceox86.exe
  • vi编辑器的三种模式
  • hpzts04.exe是什么进程 有什么作用 hpzts04进程查询
  • 在win8下能直接装win7吗
  • ftpr
  • windows设备管理器在哪里打开
  • linux查看命令帮助信息的方式
  • javascript例题
  • 国际安卓应用市场
  • dos rd命令
  • python数字图像处理库
  • python中二维列表的定义
  • python设计教程
  • jq拖拽功能
  • 地方税务局稽查局卢永胜
  • 核定征收申报表填写
  • 江西省地税局官方网站
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设