最近临近面试,刚刚复习完文件上传漏洞,就寻思写一篇博客总结一下思路。
目录
前言
本文只是做一些总结性的内容,本文中提到的一些操作,均在我得另外两篇文章中有所提及,可以结合进行参考:
文件上传漏洞(全网最详细)_貌美不及玲珑心,贤妻扶我青云志的博客-CSDN博客
中间件解析漏洞总结_貌美不及玲珑心,贤妻扶我青云志的博客-CSDN博客
构成文件上传漏洞的满足条件
上传的后门文件,需要能被脚本语言解析执行。
- 说明一:对方服务器运行的PHP环境,你不能上传一个JAVA的后门代码。
- 说明二:你上传文件的目录可以被脚本语言解析执行,如果你上传的目录没有执行权限也不行
- 说明三:一般文件上传后会返回你一个地址,如果无妨链接到也不能构成文件上传漏洞。
还有例外情况,非脚本文件也能被成功解析。比如:上传了一个图片🐎,如果对方中间件上存在一些漏洞的话,配合这些漏洞可以实现图片文件按照脚本文件解析。
常见的检测面
针对上传的校验,大概有以下几处:
- 前端js校验
- 数据包 content-type字段校验,即文件类型
- 文件后缀校验
- 文件上传路径校验,一般情况下我们很少能控制文件上传的路径
- 文件内容校验
文件上传绕过检测思路
前端js校验:直接修改前端代码
后端检测Content-Type:直接抓包修改为 image/png or image/jpg
后端校验后缀:nginx中间件就结合.user.ini文件 apache就配合.htaccess文件
文件内容校验:
过滤关键字php:payload <?=eval($_POST[x]);?>
过滤关键字 [] : []=={}
过滤关键字 ; payload:<?=system("操作系统命令")?>
过滤关键字 () 使用反引号执行命令 paylaod:<?=`tac ../fl*`?>
如果以上都被过滤了,就要考虑远程文件包含,还有条件竞争
其它别的:
服务器可能会对上传的图片进行二次渲染,我们需要对上传的图片实现进行处理,防止payload被处理掉
实际测试思路
首先,尝试上传脚本文件,并且尝试绕过,二分思想测试检测点
如果针对文件的的检测很完善的话,还有两条思路,目的使非脚本文件解析为脚本文件
- 看看中间件上是否存在一些解析漏洞,进行尝试
- nginx尝试.user.ini文件进行包含,apache的话尝试.htaccess尝试进行包含
- 尝试包含日志文件
- 尝试条件竞争
最近发生了一些事,有点放不下。有句话送给我自己,也送给大家
在年少时,大概都会因求而不得的事物而困惑一生,愿终将在未来某一日可以因一事一物而解开心结,治愈自己。
最后,创作不易,求各位路过大佬点个赞支持一下,谢谢!!!