WEB攻防-通用漏洞-文件上传之中间件解析、编辑器安全
IIS6.0解析漏洞
解析漏洞原理介绍:
1.当建立*.asa、*.asp格式的文件夹时,其目录下的任意文件都被IIS当作ASP文件进行解析 |
我们以一个实例来进行演示,如下所示,当上传一个普通的文件的时候,我们发现保存的路径为http://xxxxxxxx/xxxxxx.gif
,同时我们发现可疑值filepath=/
我们修改filepath
的值,可以发现会进行地址拼接,所以我们可以利用这个点来进行构造asp解析文件
我们将filepath
的值修改为x.asp;.
,再发包,会出现下面的情况
此时我们成功触发asp的代码,IIS可以把其当作asp代码进行解析,如下所示
当然我们也可以将filepath
修改为/x.asp/
,即构造一个asp目录,使得其目录内的文件全部被当作asp文件进行解析,但是这个要配合权限设置,即对方开启了创建目录的权限,否则无法利用这个漏洞
Apache解析漏洞
换行解析漏洞
apache的换行解析漏洞的出现是由于apache在修复第一个后缀名解析漏洞的时候,使用正则表达式匹配后缀,在解析php时将xxx.php\x0A当作PHP后缀进行解析,导致绕过安全策略
CVE-2017-15715漏洞复现
我们使用vulhub进行漏洞复现,在具有docker环境下的ubuntu或者kali进行搭建,搭建命令如下所示
git clone https://github.com/vulhub/vulhub.git //拉取镜像 |
找到8080端口,访问即可,如下所示
我们首先随便上传一个php文件,然后抓包看看是什么情况
当我们提交一个php文件的时候,会给我们返回一个badfile,即我们上传不上去,这里我们利用换行解析进行绕过,如下所示,我们首先切换到HEX模式,在evil.php
后面添加一个换行符,即0a
点击发送,发现不返回badfile
,证明我们成功绕过
我们去访问这个文件,输入evil.php%0a
,成功上传
多后缀解析漏洞
Apache解析文件的规则是从右往左开始判断解析,如果后缀名为不可识别文件解析,就再从左往右进行判断。比如test.php.a.b
的.a
和.b
这两种后缀是apache不可识别的,所以apache会将其解析成test.php
影响版本:apache 1.x apache 2.2.x
下面以一个实例进行演示
apache_parsing_vulnerability复现
我们首先看到apache版本号,初步判断有文件上传漏洞
我们将文件命名加上.jpg
,发现成功上传,访问该文件,发现apache将其当作php文件进行执行
当然,如果要保证这个效果,还需要我们上传之后不会对其进行重命名,否则该漏洞也失效,即不会对attack.php
进行重命名
Nginx文件上传漏洞
Nginx文件名逻辑漏洞
CVE-2013-4547漏洞是由于非法字符空格和截止符号导致Nginx在解析URL时的有限状态机混乱,导致攻击者可以通过一个非编码空格绕过后缀名限制
http://xxxxxxxxx/123.png \0.php |
从代码层面来说,我们请求的url中123.png[0x20][0x00].php
正好与location模块中的.php相匹配,但进入该模块后Nginx确认为请求的文件名是123.png
,就设置其为script_name的值交给CGI进行解析,最终造成解析漏洞
影响版本:Nginx 0.8.41-1.4.3/1.5.0-1.5.7
CVE-2013-4547漏洞复现
随便上传一个文件,查看ngnix版本号
符合我们的影响版本范围,我们直接进行操作,将20
改成00
即可
成功上传,我们访问一下试试
Nginx解析漏洞
对于任意文件名,在后面添加/abc.php
(abc为任意字符)后,即可将文件作为php解析
Nginx的解析漏洞的出现和Nginx的版本没有关系,漏洞的产生是由于php配置问题导致的。
影响的范围:全版本 Nginx拿到文件路径(URI)/test.jpg/abc.php
后,一看后缀是.php,便认为该文件是php文件,转交给 php去处理。php一看/test.jpg/abc.php
不存在,便删去最后的/abc.php
,又看/test.jpg
存在,便 把/test.jpg
当成要执行的文件了
nginx_parsing_vulnerability复现
首先限制了我们上传图片,我们试着能不能通过MIME进行绕过
MIME可以绕过第一层,但是还是会检测后缀,这个时候就要利用解析漏洞了
我们首先上传一个png,然后在访问的时候在后面随机加上php后缀文件,如下所示
成功利用
Ueditor文件上传安全
主要是编辑器是否存在漏洞,跟源码和中间件无关,我们首先要看哪里有上传点,看到哪里有上传点后,看编辑器的类型是哪一种,然后找历史漏洞,现在一般也很少见了
具体利用过程参考这一篇文章: