请遵守法律法规,文章旨在提高安全软件的应变策略,严禁非法使用
前言
文件上传与文件包含这种漏洞都是比较常见的漏洞,在学习过后对其进行简单总结。
漏洞相关信息
漏洞定义
文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。这种攻击方式是最为直接和有效的,文件上传 本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。
漏洞危害
网站被控制,对文件增删改查,执行命令,链接数据库如果服务器长久未更新,可以利用exp提权,导致服务器沦陷同服务器的其他网站沦陷漏洞常见利用方法1、修改限制的后缀名(前端js检测时可直接在浏览器中修改)
2、修改文件头绕过,即修改content-type与要求后缀一致(检测文件头时,即后端设置检测时)
3、修改.user.ini配置文件(当存在index.php文件时)
4、构造GIF89A添加到文件绕过图片检测(检测文件内容时)
5、修改.htaccess绕过(中间件解析漏洞)
5、%00截断绕过后缀检测
6、利用条件竞争绕过
7、二次渲染绕过
漏洞常用知识
1、一些黑名单被过滤时的替代方法
<1>在上传文件时,有时候php可能被过滤,而php文件的的格式是,因此这里的话我们可以用短标签=来进行替代,或者有时候可以用大小写或者双写(例如:phphpp),从而实现绕过。
<2>在上传文件时,有时候会上传日志文件,当过滤var这种的时候,我们可以用.来进行绕过,即构造log为lo’.’g
<3>在写文件内容时,有时候会被过滤空格,这时候我们有以下几种绕过方法
/**/%09(php环境)${IFS}//加$是为了隔断,IFS是shell已经定好的,功能就是分隔变量,默认就是对字段起分隔作用$IFS$92、中间件解析漏洞
<1>apache解析漏洞
(1)Apache 是从右到左开始判断解析,如果为不可识别解析,就再往左判断
举个栗子
当我们输入文件名为1.php.rar时,由于apache不识别解析rar文件,因此这里就等同于上传的文件名为1.php,但我们访问的话仍是1.php.rar,访问这个文件就可以发现我们上传文件成功
(2)Apache中的.htaccess文件
.htaccess的定义
概述来说,htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
我们这里的话利用的就是改变文件拓展名
在这里的话它的含义就是将其他文件解析为php给执行,内容修改后大致是这样
AddTypeapplication/x-httpd-php .jpg<2>IIS解析漏洞
(1)文件解析漏洞(5.x-6.0版本)
举个栗子
我们上传1.asp;.jpg,此时也可能会出现匹配最后.后面的后缀的情况,从而认为上传的文件是jpg,但IIS不看分号后的内容,所以它理解的文件名其实就是1.asp
(2)目录解析漏洞(5.x-6.0的版本)
依旧用栗子来说明
例如/123.asp/ddd.jpg,网站限制了上传文件的格式(只能jpg)在123.asp路径下的文件(如ddd.jpg)都会以asp文件解析
<3>Nginx解析漏洞
(1)Nginx中php配置错误导致的解析漏洞
再举个栗子
当我们构造一个文件,假如名字是test.jpg,写入内容为,此时我们访问test.jpg,其返回的是图片存在问题,无法显示,而当我们此时访问test.jpg/test.php时,回显Access denied,这个test.jpg不是目录,而且test.php更是一个都不存在的文件,此时却回显了访问被拒绝,这是为什么呢,因为这时Nginx会认为这是php文件,转交给php来处理,而php发现这个test.php文件不存在,就会删去test.php,此时就会访问test.jpg,php认为它不是php文件,就回显了拒绝访问。而当我们将配/etc/php5/fpm/php-fpm.conf文件中的security.limit_extensions添加上.jpg时就会回显出php配置信息
(2)%00截断
前提
php版本小于5.3.29magic_quotes_gpc = Off它的原理简单的来说就是url中的%00表示ascii码中的0,而ascii码中的0表示的就是字符串结束,不再往后面读取,此时就实现了截断的目的
举个栗子
假设此时我们想上传php文件,但允许上传的是jpg文件,我们此时就可以借助%00截断来实现
filename=1.jpg 此时上传的是1.jpg
加上%00
filename=1.php%00.jpg 此时上传的是1.php(突破限制)
实战
修改后缀名绕过(前端修改js代码)
进入靶场,选择开发者模式,发现了允许格式,我们点击修改
将png修改为php
此时上传我们的木马文件
网站声明:文章内容来源于网络,本站不拥有所有权,请认真核实,谨慎使用,本站不承担相关法律责任。