nginx文件解析漏洞测试

embedded/2024/9/23 21:09:56/

环境条件:ubuntu14,已安装docker,docker pull ubuntu:14.04.5

一、Nginx配置

1、使用docker启动容器:

docker run -itd --name ubuntu -p 8088:80 ubuntu:14.04.5

2、进入容器:

docker exec -it ubuntu /bin/bash

3、然后使用以下语句安装相关环境:(注意是在容器中执行)

①apt-get update # 更新源

②apt-get install vim #安装vim

③apt-get install nginx#安装nginx

④service nginx start#启动nginx服务

⑤apt-get install php5-fpm#安装php5-fpm

配置方法:

刚安装好的Nginx是不能解析php的,需要修改配置文件:/etc/nginx/sites-available/default:

①cd  /etc/nginx/sites-available/

②vim default

修改以下四项(不要忘记loaction也要打开)

Nginx的两种启动方式

第五行如果打开,就是使用tcp方式启动,php-fpm将会本地监听9000端口如果倒数第三行打开,则

是使用套接字方式启动。

现在使用/etc/init.d/php5-fpm start启动web服务然后到web目录中写一个测试的php文件,重启

nginx服务:尝试访问,如果可以解析,则环境配置成功。

③/etc/init.d/php5-fpm start

④cd /usr/share/nginx/html   进入web目录

创建测试程序

⑤vim   info.php

<?php phpinfo();?>

重启nginx服务

⑥service nginx restart

访问:192.168.129.136:8088/info.php

相关目录

/usr/share/nginx/html#默认web目录

/etc/nginx/# 配置文件目录

/etc/php5/fpm # php配置文件目录

/var/log/nginx/access.log #访问日志

/var/log/nginx/error.log # 错误日志

原理

1、对任意文件名,在后面添加/任意文件名.php的解析漏洞,比如原本文件名是test.jpg,可以添加

为test.jpg/x.php 进行解析攻击。

2、对低版本的Nginx 可以在任意文件名后面添加%00.php 进行解析攻击。

3、Nginx下,请求文件/shell.gif时在后面加个*.php,即/shell.gif/1.php,可能会被当作PHP代码执行。

4、和Apache一样,Nginx也是通过mime.types识别文件:文件在/etc/nginx/mime.types

示例:

创建一个1.jpg,然后访问1.jpg/1.php显示:"Access denied."为什么?

Nginx拿到文件路径/1.jpg/1.php后,一看后缀是.php,便认为该文件是php文件转交给php去处理。

php一看/1.jpg/1.php不存在,便删去最后的/1.php,又看/1.jpg存在,便把/1jpg当成要执行的文件

了,又因为后缀为jpg,php认为这不是php文件,于是返回“Access denied.

从宿主机上传图片到容器

5、 docker cp /root/桌面/202405241631779.png 071eeea207dd:/usr/share/nginx/html


cgi.fix_pathinfo,该值默认为1,表示开启。

用途:对文件路径进行“修理’

当php遇到文件路径“/aaa.xxx/bbb.yyy/ccc.zzz”时,若然后判断“/aaa.xxx/bbb.yyy/ccc.zzz”不存在,

则会去掉最后的“/ccc.zzz”当做文件“/aaa.xxx/bbb.yyy”是否存在

若存在,则把“/aaa.xxx/bbb.yyy"/aaa.xxx/bbb.yyy/ccc.zzz",若“/aaa.xxx/bbb.yyy”仍不存在,则继

续去掉"/bbb.yyy”,以此类推。

配置:

cgi.fix_pathinfo这个配置在php.ini 中可以修改,默认是开启的

/etc/php5/fpm/php.ini

默认是1,不需要修改

在vim编辑器中/ 查找关键词

配置/etc/php5/fpm/pool.d/www.conf中security.limit_extensions允许解析其他格式文件为PHP

改为空

注意:把注意去掉

测试

再次访问1.png/1.php

这应该是尝试解析成php失败

文件解析漏洞修复方法:

1.将php.ini文件中的cgi.fix _pathinfo的值设为0。这样php在解析1jpg/1.php这样的目录时,只要

1.php不存在就会显示404。

2.将/etc/php5/fpm/pool.d/www.conf中security.limit extensions后面的值设为.php。

Nginx配置

配置方法:

相关目录

原理

配置:

文件解析漏洞修复方法:



http://www.ppmy.cn/embedded/43082.html

相关文章

Python3 笔记:IDLE的几个基本设置

1、设置字体&#xff1a; Options > Configure IDLE > Fonts 2、设置文字颜色&#xff08;设置高亮&#xff09;&#xff1a; Options > Configure IDLE > Highlights 3、设置背景颜色&#xff1a; Options > Configure IDLE > Highlights 4、设置窗口&a…

Divisibility Part2(整除理论2)

Divisibility Part2 本节内容是Part1的进阶内容&#xff0c;主要讲的是整除在竞赛中的一些常用的技巧。 数的分解 一、带余除法 对于任意两个整数 a 、 b ( b ≠ 0 ) a、b(b\neq 0) a、b(b0)&#xff0c;都有唯一确定的整数 q , r q,r q,r&#xff0c; 满足 a q b r (…

如何学习一个新技能

1. 提出想法 2.找到学习方法&#xff0c;学习路径 3.开始学 参考视频&#xff1a;如何成为超速学习者&#xff1f;快速学会任何新技能&#xff01;_哔哩哔哩_bilibili

Android基础-SharedPreferences介绍

Android中SharedPreferences的功能和作用 SharedPreferences是Android平台上一个轻量级的存储类&#xff0c;用于存储应用程序的轻量级数据。其主要功能和作用体现在以下几个方面&#xff1a; 数据存储&#xff1a;SharedPreferences能够保存一组原始数据的名、值对&#xff…

迪普科技:量子安全“先行者”退场?

今年4月&#xff0c;迪普科技&#xff08;300768 SHE&#xff09;接受机构调研时被问及“公司对量子通讯所必需的安全产品在继续研究吗”时表示&#xff1a;“公司曾为量子通讯网络提供安全产品解决方案&#xff0c;从这点说与其他领域的安全产品区别不大”。换句话说&#xff…

vue项目报错:internal/modules/cjs/loader.js:892 throw err;

前言&#xff1a; vue项目中无法正常使用git&#xff0c;并报错情况。 报错信息&#xff1a; internal/modules/cjs/loader.js:892throw err;^ Error: Cannot find module D:\project\sd_wh_yth_front\node_modules\yorkie\src\runner.js 报错处理&#xff1a; npm install y…

超市进销存|基于SprinBoot+vue的超市进销存系统(源码+数据库+文档)

超市进销存系统 目录 基于SprinBootvue的超市进销存系统 一、前言 二、系统设计 三、系统功能设计 1 登录注册 2 管理员功能模块 3员工功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#x…

力扣 滑动窗口题目总结

Leetcode3.无重复字符的最长子串 思路&#xff1a; 这道题主要用到思路是&#xff1a;滑动窗口 什么是滑动窗口&#xff1f; 其实就是一个队列,比如例题中的 abcabcbb&#xff0c;进入这个队列&#xff08;窗口&#xff09;为 abc 满足题目要求&#xff0c;当再进入 a&#x…