| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> PHP知识库 -> 上传漏洞-解析漏洞 -> 正文阅读 |
|
[PHP知识库]上传漏洞-解析漏洞 |
目录 Apache解析漏洞目前解析漏洞主要存在于三大WEB服务程序,分别是IIS、NGINX和APACHE。 IIS6.0下主要是有两个解析漏洞,一个是目录解析,形如/xx.asp/xx.jpg,另一个就是文件解析,形如xx.asp;.jpg,可通过此漏洞上传shell,对服务器危害较大。 Apache解析漏洞。这个实验也是测试的这个漏洞。环境是php+apache Apache是从右到左开始判断解析,如果为不可识别解析,就再往左判断。比如xxx.php.rar对apache来说rar是不可解析的,所以就会解析成xxx.php。具体见实验步骤。 通过简单上传页面证明apache解析漏洞 登录客户机,用浏览器打开,这是根目录下的upload目录,也是要上传的文件目录,现在是空的 然后再打开http://10.1.1.31/upload.html,这就是上传页面 现在开始测试。在客户机中新建一个test.php.rar内容是<?php phpinfo();?>然后上传 ?看看是否上传成功。访问一下试试 Apache并不认识rar后缀名,对它来说会看成test.php。解析成功。其实整个漏洞的关键就是apache的"合法后缀"到底是哪些,不是"合法后缀"的都可以被利用。 通过修改apache配置文件进行防御 由上面可知,在http://10.1.1.31/upload/下已经成功上传了test.php.rar,并且可错误解析成php。 现在对apache的配置文件做适当修改,在文件中添加下面几行代码 禁止*.php.*文件的访问权限 保存并重启apache。现在再来测试
目录下也看不到了 通过修改程序文件来修改漏洞 访问另一個地址,这是经过代码加强过后的上传页面 再次上传test.php.rar ?看看后端代码 其实就是增加了这个验证文件类型的代码,这种防御也有缺点,并非不可绕过。就比如bp的抓包就可以改類型還是比較好繞過的。 Fastcgi安全(Fast?Common?Gateway?Interface/FastCGI)快速通用网关接口是一种让交互程序与Web服务器通信的协议,FastCGI致力于减少网页服务器与CGI程式之间互动的开销,从而使服务器可以同时处理更多的网页请求。 简单的来说下Nginx+FastCGI运行原理,FastCGI默认监听的是127.0.0.1:9000,是Nginx和动态脚本程序的桥梁。用户打开浏览器,发送请求来到了Nginx,Nginx即将请求发送到后端的FastCGI接口,FastCGI接口将请求发给FastCGI,FastCGI再将请求交给脚本解释程序执行,然后原路返回给Nginx,Nginx将结果交给客户端,大致就是这么一个过程。 Nginx是通过套接字文件socket来将动态请求发送给wrapper,使用的是Tcp协议。wrapper通过CGI接口来接受请求。这样web服务器和解释程序之间完全可以独立开发,这样避免了解释程序直接调用服务器的接口而导致的出错和崩溃以及安全性问题。而且可以使Nginx专心处理静态页面请求和转发动态请求,而将脚本解释器安装在另一台服务器,使服务器的压力得到分摊。 实验环境: Linux01 ? ip:?10.1.1.76?? (Nginx+FastCGI+PHP) Linux02 ? ip:?10.1.1.243 登录Linux02机器(ip地址为10.1.1.243),漏洞利用脚本的使用。 ?对目标机器Linux01进行端口扫描
使用漏洞利用脚本,对目标机器进行测试。(读取passwd文件) ?一起来看配置文件 两个关键配置文件的路径: /u/nginx/conf/nginx.conf /u/php5/etc/php-fpm.conf 圈起部分为关键,也是我要介绍的,这里其实就是fastcgi监听的ip和端口。 我这里配置的是本地,也可以是远程,也可以有多个用来做负载均衡。 再来看下php-fpm.conf这个文件吧,这个文件,我只介绍两个参数:
上面我截取了两段配置文件,第一个“listen?=?127.0.0.1:9000”,表示的是监听的ip和端口,第二个其实很重要的,它fastcgi的安全机制,默认是允许所有的ip连接。其实我们这个只要设置nginx的ip就好了,只让nginx过来的请求接入就安全了。 |
|
PHP知识库 最新文章 |
Laravel 下实现 Google 2fa 验证 |
UUCTF WP |
DASCTF10月 web |
XAMPP任意命令执行提升权限漏洞(CVE-2020- |
[GYCTF2020]Easyphp |
iwebsec靶场 代码执行关卡通关笔记 |
多个线程同步执行,多个线程依次执行,多个 |
php 没事记录下常用方法 (TP5.1) |
php之jwt |
2021-09-18 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 6:56:10- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |