本溪做网站 淘宝店,小程序制作单位,电商知识网,网站单页面制作文章目录 Nginx 解析漏洞1. 空字节漏洞1.1 漏洞描述1.2 漏洞复现1.3 修复方案 2. Nginx 解析漏洞复现2.1 漏洞描述2.2 漏洞复现2.3 获取GetShell2.4 修复方案 3. Nginx 文件名逻辑漏洞3.1 漏洞描述3.2 漏洞原理3.3 漏洞复现3.3.1 环境启动3.3.2 漏洞验证 3.4 漏洞利用3.5 修复方… 文章目录 Nginx 解析漏洞1. 空字节漏洞1.1 漏洞描述1.2 漏洞复现1.3 修复方案 2. Nginx 解析漏洞复现2.1 漏洞描述2.2 漏洞复现2.3 获取GetShell2.4 修复方案 3. Nginx 文件名逻辑漏洞3.1 漏洞描述3.2 漏洞原理3.3 漏洞复现3.3.1 环境启动3.3.2 漏洞验证 3.4 漏洞利用3.5 修复方案 Nginx 解析漏洞
1. 空字节漏洞
1.1 漏洞描述
说明内容漏洞编号漏洞名称Nginx解析漏洞漏洞评级高危影响范围0.5.,0.6., 0.7 0.7.65, 0.8 0.8.37漏洞描述当使用PHP-FastCGI执行PHP时遇到url里面存在%00空字节时与FastCGI的处理不一致导致可在非PHP文件中嵌入PHP代码通过访问url%00.PHP来执行其中的PHP代码修复方案升级组件
1.2 漏洞复现
启动环境 访问页面
看到如下页面及启动成功 在nginx_0.7.65目录下的html目录中有一个info.png 从后缀名来看这个是一个图片但是如果从文件内容的角度来看是一个phpinfo。 这个图片是无法直接进行访问的。 使用bp抓取数据包然后在文件后缀名末尾添加%00.php 该文件即可执行。
解析此处这个漏洞属于00截断漏洞文件系统在处理寻找文件的时候会有偏差PHP语言的底层是通过C语言来实现的C语言字符串结束是00。PHP解释引擎在访问这个文件的时候遇到了00认为该文件在%00处就结束了所以读取的是png文件但是是以php方式执行的。
1.3 修复方案
为了修复此漏洞可以考虑以下方案
更新 NGINX 版本 确保您的 NGINX 版本已升级到最新版本。NGINX 团队通常会修复安全漏洞并发布相关的更新补丁。及时更新可帮助解决已知的漏洞。安装安全模块 NGINX 支持许多第三方安全模块例如 ModSecurity 或 NAXSI。这些模块可以帮助检测和阻止恶意请求包括空字节注入攻击。过滤输入 对于用户提供的输入进行适当的输入验证和过滤。对于文件路径、文件名等参数应该对空字节进行处理或过滤以防止攻击者利用空字节绕过文件类型检查。
2. Nginx 解析漏洞复现
链接地址Vulhub - 用于漏洞环境的 Docker-Compose 文件。
2.1 漏洞描述
说明内容漏洞编号漏洞名称Nginx解析漏洞漏洞评级高危影响范围Nginx 1.x 最新版PHP 7.x最新版漏洞描述该漏洞与Nginx、php版本无关属于用户配置不当造成的解析漏洞。修复方案升级组件
2.2 漏洞复现
环境启动 访问页面 上传一个php文件页面显示我们只能上传图像文件。 修改文件后缀名Content-Type类型为image/png最后在文件内容的头部添加GIF89a。 上传成功并且显示出了文件的上传路径。
页面访问上传路径但是文件并没有执行。 增加后缀被解析成PHP文件/.php。 漏洞原因开启了cgi.fix_pathinfo选项后本身是一个png文件但是加上/.php后会把整个文件当中php文件来执行。 2.3 获取GetShell
还可以上传一个一句话木马 使用bp抓取数据包并进行修改 然后使用蚁剑进行连接即可。 2.4 修复方案
将php.ini文件中的cgi.fix_pathinfo的值设为0
3. Nginx 文件名逻辑漏洞
链接地址Vulhub - Docker-Compose file for vulnerability environment。
3.1 漏洞描述
说明内容漏洞编号CVE-2013-4547漏洞名称Nginx 文件名逻辑漏洞漏洞评级高危影响范围Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7漏洞描述该漏洞存在于Nginx于PHP的配置上如果配置不当容易使得Nginx实现对%00等特殊字符解析出现问题造成Nginx将特殊构造的URL交给PHP来进行处理而Nginx则因为特殊字符的问题无法接收含有特殊字符的URL或者是造成了在%00位置处的截断从而造成了客户上传的文件被当作PHP代码来解析。修复方案升级组件
3.2 漏洞原理
主要原因是错误地解析了请求的URI错误地获取到用户请求的文件名导致出现权限绕过、代码执行的连带影响。
比如Nginx匹配到.php结尾的请求就发送给fastcgi进行解析常见的写法如下
location ~ \.php$ {include fastcgi_params;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;fastcgi_param DOCUMENT_ROOT /var/www/html;
}正常情况下关闭pathinfo的情况下只有.php后缀的文件才会被发送给fastcgi解析。而存在Nginx 文件名逻辑漏洞的情况下我们请求1.gif[0x20][0x00].php这个URI可以匹配上正则\.php$可以进入这个Location块但进入后Nginx却错误地认为请求的文件是1.gif[0x20]就设置其为SCRIPT_FILENAME的值发送给fastcgi。
fastcgi根据SCRIPT_FILENAME的值进行解析最后造成了解析漏洞。
3.3 漏洞复现
3.3.1 环境启动 环境启动后访问http://your-ip:8080/即可看到一个上传页面。 上传一个php文件页面显示我们上传的文件类型不支持。这个环境是黑名单验证我们无法上传php后缀的文件。 3.3.2 漏洞验证
开启Burpsuit抓取数据包截获文件上传的数据包后修改文件后缀名为gif格式然后在文件后缀名的后面添加一个空格这样文件上传后也会出现一个空格。 访问http://your-ip:8080/uploadfiles/wuhu.gif[0x20][0x00].php在bp中将文件修改为uploadfiles/wuhu.gif[0x20][0x00].php。这里的[0x20]为空格[0x00]为\0起到了截断的作用。 即可发现PHP已被解析 3.4 漏洞利用
上传木马文件 在文件的后缀名后面添加一个空格 访问上传文件 shell.jpg[0x20][0x00].php时将文件修改为 shell.jpg[0x20][0x00].php[0x20]为空格[0x00]为\0起到截断作用 命令执行成功 3.5 修复方案
更新 Nginx 版本 确保 Nginx 版本已升级到最新版本。Nginx 团队通常会修复安全漏洞并发布相关的更新补丁。及时更新可帮助解决已知的漏洞。该问题已经在 Nginx 1.5.7 和 1.4.4 版本中修复。
补丁链接地址