责任编辑接著上三期的文档上载展开再进一步的自学,须要信息安全可靠幻灯片数据资料+小厂复试研究课题能朋友圈我!
文档导出安全可靠漏洞简述
文档导出安全可靠漏洞,是指Web罐子(Apache、Nginx、IIS等)将许多特定文档导出成脚责任编辑档格式,引致普通用户能借助该安全可靠漏洞同时实现违法文档的导出。
导出安全可靠漏洞的展开分类
常用的导出安全可靠漏洞分成 IIS导出安全可靠漏洞,Apache导出安全可靠漏洞和Nginx导出安全可靠漏洞
IIS导出安全可靠漏洞
IIS(Internet Information Services)是谷歌公司出品的灵巧、安全可靠、更易管理工作的Web伺服器。
安全可靠漏洞概要
IIS 6.0 在处置所含标点符号的文档方向时能再次出现方法论严重错误,进而引致文档导出安全可靠漏洞。而此安全可靠漏洞有三种全然相同的借助形式:
/test.asp/test.jpg 产品目录导出 会将 test.jpg 导出为 asp 文档 test.asp;.jpg 文档导出 , 此类文档在Windows下不允许存在,:.jpg默认不导出,剩下/xx.asp iis把asa,cdx,cer导出成asp文档的原因:这四种扩展名都是用的同一个asp.dll文档来执行。环境
一般为 IIS/6.0 搭配 windows 2003
修复方法
阻止创建.asp类型的文档夹
阻止上载 xx.asp;.jpg 类型的文档名
阻止上载.asa, .cer,.cdx 后缀的文档
环境搭建和复现
记得 连接 windows2003 的CD
安装 windows 2003
开始→控制面板→添加或删除程序→添加/删除windows组件】。找到应用【程序伺服器】,选中,点击【详细信息】,选中第一个【ASP.NET】,点确定,
下一步,完成。(中间会让选择IIS6.0文档包里的文档) 记得勾选
在网站产品目录中新建一个a.asp的文档,然后用记事本打开写入<%=now()%>
测试时发现报错,根据提示打开 Active service pages
测试没有问题后,新建asp webshell,测试导出安全可靠漏洞
产品目录导出
创建产品目录为b.asp 的文档夹,在创建的文档夹下创建文档a.jpg , 内容为:<%eval>
蚁剑连接
文档导出
创建文档 :test.asp;.jpg 内容为:<%eval>
IIS 7.0/7.5 CGI导出安全可靠漏洞
IIS7/7.5的安全可靠漏洞与nginx的类似,都是由于php配置文档中,开启了cgi.fix_pathinfo,而这并不是nginx或者iis7/7.5本身的安全可靠漏洞。
安全可靠漏洞条件
php.ini 里的 cgi.cgi_pathinfo=1
IIS7 在fast-cgi 运行模式下
测试(这个安全可靠漏洞我会在nginx详细叙述 大家往下看)
在站点根产品目录创建 webshell.jpg文档,文档内容为:配置CGI模式在php.ini文档里将cgi.fix_pathinfo 取消注释并把值改为1更改网站的处置程序映射 管理工作工具 –> IIS -> WIN-5RQ4P819403 -> 处置程序映射访问 webshell.jpg/.php, webshell.jpg 成功被导出<?php$a = ;file_put_contents(123.php,$a);?>然后访问test.jpg/.php或test.jpg/abc.php
当前产品目录下就会⽣成⼀句话⽊马123.php。修复方法
1、 将php.ini文档中的cgi.fix_pathinfo的值设置为0,这样php再导出1.php/1.jpg这样的产品目录时,只要1.jpg不存在就会显示404页面
2、 php-fpm.conf中的security.limit_extensions后面的值设置为.php
环境搭建和复现
搭建IIS7.0
忘记添加 能在这里添加
安装完成后,点击 处置程序映射
这里须要安装php,直接 装个 phpstudy-iis版
这里要注意,如果windows上安装了mssql,也会占用80端口,
例如:
发现占用80端口的确是 SQL Server 2008 里面的组件——SQL Server Reporting Services (MSSQLSERVER)。是 SQL Server 的日志系统,
关闭方法: 在运行框中输入 services.msc ,进入服务窗口。或者直接在开始菜单里面的搜索框中输入“服务”即可打开。然后找到 SQL Server Reporting Services (MSSQLSERVER) 这个服务,然后停止,被占用的80端口就被释放出来了。你也能设置它的启动形式为“禁用”。
测试一下
访问webshell.php
没有问题
添加 处理程序映射
Apache 导出安全可靠漏洞-多后缀导出安全可靠漏洞
安全可靠漏洞描述:Apache 导出⽂件的规则是从右到左开始判断导出,如果后缀名为不可识别⽂件导出,就再往左导出,直到碰到认识的扩展名为⽌,如果都不认识,则会暴露其源代码。这种⽅法能绕过基于⿊名单的检查。
比如:test.php.x1.x2.x3 ,Apache将从右至左开始判断后缀,若x3非可识别后缀,再判断x2,直到找到可识别后缀为止,然后将该可识别后缀进导出 test.php.x1.x2.x3 则会被导出为php
我们能全然上载⼀个 xxx.php.abc 这样名字的 webshell ,Apache仍然会当做PHP来导出。
Apache 能够识别的文档在mime.types文档里。
影响版本
Apache 2.0.x <= 2.0.59
Apache 2.2.x <= 2.2.17
Apache 2.2.2 <= 2.2.8
修复方法
后缀验证尽量使用白名单的形式,这样即使使用不存在的后缀名,也无法绕过。
Apache配置问题
如果在Apache的 /etc/apache2/apache2.conf里有这样的配置<FilesMatch “shell.jpg”> SetHandlerapplication/x-httpd-php这时只要文档名是shell.jpg,会以php 来执行。
如果在Apache的 conf 里有这样一行配置AddHandler php5-script .php这时只要文档名里包含.php 即使文档名是qwzf.php.jpg也会以php 来执行。如果在 Apache 的 conf 里有这样一行配置AddType application/x-httpd-php .jpg , 即使扩展名是.jpg,也会以php来执行。Apache提供了一种很方便的、可作用于当前产品目录及其子产品目录的配置文档——.htaccess(分布式配置文档) 将Apache的/etc/apache2/sites-available/default里AllowOverride None改为AllowOverride All
AllowOverride All开启rewrite_mod
a2enmodrewrite这样.htaccess文档就会生效。
在win 下 必须先开启mod_rewrite功能
先开启httpd.conf 将下面这个行的注解拿掉#LoadModule rewrite_module
modules/mod_rewrite.soAllowOverride controls what directives may be placed in .htaccess files.# It can be “All”, “None”, or any combination of the keywords: # Options FileInfo AuthConfig Limit #将搜索
AllowOverrideNone修改为AllowOverride All
****
重启伺服器服务能让.htaccess档案生效
测试
方法1: SetHandler application/x-httpd-php 方法2: AddHandler php5-script .php 方法3: AddType application/x-httpd-php .jpg方法2 :上载 webshell.php.jpg
方法1和方法3: 上传webshell.jpg修复方法
1.apache配置文档,禁止.php.这样的文档执行,配置文档里面加入
Order Allow,Deny Deny from all2.关闭重写
a2dismodrewriteApache HTTPD 换行导出安全可靠漏洞
安全可靠漏洞概要:Apache HTTPD是美国阿帕奇(Apache)软件基金会的一款专为现代操作系统开发和维护的开源HTTP伺服器;Apache HTTPD是一款HTTP伺服器,它能通过mod_php来运行PHP网页。在导出PHP时,xx.php\x0A将被按照PHP后缀展开导出,引致能绕过许多伺服器的安全可靠策略。
条件:$_FILES[file][name],因为它会自动把换行去掉。
2、Apache版本为2.4.0到2.4.29
3、伺服器必须是linux系统,因为windows环境下不支持后缀名带有换行符\x0a
影响版本HTTPD :2.4.0~2.4.29
安全可靠漏洞原理
看完上面的源代码我们很容易就能知道我们上载xx.php%0a和xx.php是不一样的,我们上载xx.php%0a就能对文档上载的黑名单展开了绕过
SetHandlerapplication/x-httpd-php只要满足这么一个正则匹配,就会告知Apache将这个满足匹配的文档按PHP文档来导出
但是不巧的是这里还有一个东西就是$这个东西,它是用来匹配字符串结尾位置的,而且如果设置了RegExp 对象(正则表达式)的 Multiline(/m) 属性,则 $ 也匹配 ‘\n’ 或 ‘\r’。
所以如果我们设置了RegExp 对象的 Multiline 属性(\m)的条件下,$还会匹配到字符串结尾的换行符(也就是%0a),于是也就产生了这么一个换行导出安全可靠漏洞
测试
上载一个后缀末尾包含换行符的文档,绕过 FilesMatch
1.php\x0a => 1.php
apache通过mod_php来运行JAVA,其2.4.0-2.4.29中存在apache换行导出安全可靠漏洞,在导出php时xxx.php\x0A将被按照PHP后缀展开导出,引致绕过许多伺服器的安全可靠策略。该安全可靠漏洞属于用户配置不当产生的安全可靠漏洞,与具体中间件版本无关。
在1.php后面插入一个\x0A(注意,不能是\x0D\x0A,只能是一个\x0A),不再拦截:
社区版Burp点击1.php后面的一个字节,然后右键->Insert byte。再将插入的00修改为0a。
访问刚才上载的/1.php%0a,发现能够成功导出,但是这个文档的后缀不是php后缀,说明目标存在导出安全可靠漏洞
安全可靠漏洞修复1.升级到最新版本
2.将上载的文档重命名为时间戳+随机数+.jpg的格式并禁用上载文档产品目录执行JAVA权限