当前位置: 首页 > news >正文

nginx文件解析漏洞测试

环境条件: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配置

配置方法:

相关目录

原理

配置:

文件解析漏洞修复方法:


相关文章:

  • Python基于PyQt6制作GUI界面——按钮
  • MongoDB CRUD操作:内嵌文档查询
  • 前端基础入门三大核心之HTML篇 —— SVG的viewBox、width和height:绘制矢量图的魔法比例尺【含代码示例】
  • 【C++】STL快速入门基础
  • 基于Docker部署GitLab环境搭建
  • 使用JSON_EXTRACT匹配某个json类型字段中的某个具体字段
  • Java集合框架详解:深入探讨Java中的集合框架
  • 【栈】Leetcode 71. 简化路径【中等】
  • 美团Java社招面试题真题,最新面试题
  • Srping 历史
  • ROS学习笔记(16):夹缝循迹
  • 类 和 对象(二)
  • 分享10个国内可以使用的GPT中文网站
  • 工业4.0 企业级云MES全套源码,支持app、小程序、H5、台后管理端
  • 四川汇聚荣科技有限公司好不好?
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • JavaScript设计模式与开发实践系列之策略模式
  • Java多态
  • JS函数式编程 数组部分风格 ES6版
  • PV统计优化设计
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • SpingCloudBus整合RabbitMQ
  • Windows Containers 大冒险: 容器网络
  • 工程优化暨babel升级小记
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 盘点那些不知名却常用的 Git 操作
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 前言-如何学习区块链
  • 学习使用ExpressJS 4.0中的新Router
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • ​如何防止网络攻击?
  • #WEB前端(HTML属性)
  • (MTK)java文件添加简单接口并配置相应的SELinux avc 权限笔记2
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (二)fiber的基本认识
  • (转)ABI是什么
  • (转)使用VMware vSphere标准交换机设置网络连接
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .NET命令行(CLI)常用命令
  • .Net中间语言BeforeFieldInit
  • .Net组件程序设计之线程、并发管理(一)
  • /bin、/sbin、/usr/bin、/usr/sbin
  • ??myeclipse+tomcat
  • @manytomany 保存后数据被删除_[Windows] 数据恢复软件RStudio v8.14.179675 便携特别版...
  • @Mapper作用
  • @param注解什么意思_9000字,通俗易懂的讲解下Java注解
  • @Transactional 竟也能解决分布式事务?
  • [ vulhub漏洞复现篇 ] Celery <4.0 Redis未授权访问+Pickle反序列化利用
  • [AI aider] 打造终端AI搭档:Aider让编程更智能更有趣!
  • [Android Studio 权威教程]断点调试和高级调试
  • [BT]小迪安全2023学习笔记(第15天:PHP开发-登录验证)
  • [C#]OpenCvSharp 实现Bitmap和Mat的格式相互转换