文件上传漏洞的原理和利用 |
您所在的位置:网站首页 › php文件解析漏洞是什么类型的 › 文件上传漏洞的原理和利用 |
(一)文件上传基础1、文件上传的概念 将客户端数据以文件形式封装,通过网络协议发送到服务端,文件在服务端被解析,最终作为真实文件保存在服务端硬盘上。 2、产生漏洞的原因①服务器配置不当 ②文件上传限制被绕过 ③开源编译器的上传漏洞 ④文件解析漏洞导致文件执行 3、文件上传漏洞的危害攻击者通过上传恶意文件传递给解释器执行,进而可以在服务器上执行恶意代码,进行数据库执行、服务器文件管理、命令执行等恶意操作,甚至控制网站、服务器;这个恶意文件称为WebShell。 4、文件上传漏洞可能存在的位置①图片上传功能 ②头像上传功能 ③文档上传功能 5、文件上传漏洞检测方式①客户端JavaScript检测 ②服务端MIME类型检测 ③服务端目录路径精测 ④服务端文件扩展名检测 ⑤服务端文件内容检测 (二)绕过客户端检测原理:通常在上传页面含有专门检测文件上传的JavaScript代码,最常见的就是检测文件类型和文件扩展名是否合法。 绕过:①在本地浏览器客户端禁用JS即可(火狐浏览器的插件JavaScript Switcher专门用于禁用JS)。 ②修改前端JS代码。 ③使用合法的文件扩展名通过前端验证再用bp抓包将文件扩展名改非法的扩展名,如上传xx.jpg使用bp改为xx.php。 (三)绕过服务端检测1、MIME类型常见的MIME类型: .html文件 text/html .txt文件 text/plain .php文件 application/octer-stream .jpg文件 image/jpg .png文件 image/png .gif文件 image/gif 原理: 检测文件上传中http请求包的Content-Type字段的值判断上传的文件是否合法。 绕过: 使用bp抓包修改http请求包中的Content-Type字段的值为合法MIME类型; 2、文件后缀——黑名单原理: 根据上传文件的后缀是否在一个包含非法后缀的黑名单中判断文件上传是否合法(在名单中则为非法)。 绕过: ①后缀大小写绕过:一般未对后缀名统一小写或大写处理,可通过后缀大小写绕过,如.PhP课绕过仅对.php的检测。 ②空格绕过:未对后缀名去空格处理,可利用windows文件名特性通过空格绕过,如.php (注意:这里有个空格)可绕过对.php的检测(需在bp中加空格)。 ③点绕过:未对后缀名去 .处理,利用windows文件名特性可绕过检测,如.php.可绕过对.php的检测(需在bp中加点)。 ④::$DATA绕过:未对后缀名去::$DATA处理,利用windows文件系统特性可绕过检测,如.php::$DATA可绕过对.php的检测(需在bp中加::$DATA)。 ⑤Apache解析漏洞:Apache解析文件名从右往左识别,指导识别到可用的后缀名,利用Apche这一解析特性可绕过检测,如.php.hei可绕过对.php的检测并且会被当做.php文件解析。 ⑥ .htaccess文件:.htaccess文件时当前目录的分布式配置文件,可上传自定义的.htaccess文件改变解析文件的配置,如修改配置把.jpg文件当做.php文件解析,这时上传的.jpg合法文件会被当做非法的.php文件执行。 Eg: //.htaccess文件内容如下,可把.jpg/.png文件当作.php文件执行 AddHandler application/x-httpd-php .jpg .png ⑦.user.ini文件:.user.ini可配置执行.php文件时自动包含指定文件,如上传配置为包含.jpg文件的.user.ini文件后,访问index.php时将自动包含.jpg文件(版本php>5.3)。 Eg: //.user.ini文件内容如下在执行.php文件时可自动包含3.jpg文件 auto_perpend_file=3.jpg ⑧特殊后缀绕过:.php3/.phtml/.phps/.php5/.pht等后缀名绕过。 ⑨双写绕过:服务器将检测到的非法后缀替换为空且只替换了一次,可以双写后缀名绕过,如.pphphp经服务器处理后为.php。 3、文件后缀——白名单原理: 只有当上传文件的后缀名在一个包含合法后缀的白名单中时,文件上传时合法的、能通过检测。 绕过: ①%00截断:服务器解析文件后缀时是从右往左的,而解析文件名是从左往右的,当文件名中包含%00时,可将通过检测的合法后缀截断并暴露出隐藏在文件名中的非法后缀,从而绕过检测实现非法文件的上传。如上传的文件hello.php%00.jpg能通过检测并在被截断后当做hello.php文件上传(版本php (四)Web解析漏洞1、Apache解析漏洞Apache解析文件后缀从右往左识别,直到识别到可用的后缀名,利用这一特性可绕过文件后缀名黑名单检测,如hello.php.hhh文件被解析为hello.php文件。 2、IIS 6.0解析漏洞目录解析 服务器默认会把.asp目录下的文件都解析未.asp文件,如xx.asp/xx.jpg中xx.jpg会被解析为xx.asp文件。 文件解析 服务器默认不解析;后的内容,如xx.sap;.jpg会被解析为xx.asp文件。 3、IIS 7.0解析漏洞在任意文件名后加/任意文件名.php可被解析为.php文件,如hello.jpg加/xx.php后可被解析为.php文件。 4、Nginx解析漏洞在任意文件名后加/任意文件名.php(或加%00.php)可被解析为.php文件,如hello.jpg加/xx.php(或加%00.php)后可被解析为.php文件。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |