nginx host绕过的三种方式
目录
- 实验环境
- 实验背景
- 绕过方式1
- 绕过方式2(高版本失效)
- 绕过方法3
实验环境
- CentOS7
- Nginx1.23.3
- MySQL8.0.32
- PHP5.4.16
实验背景
在一个LNMP架构下的注册页面中存在sql注入漏洞,通过抓包修改host进行注入,但由于修改了host,nginx无法正确处理此请求,以默认服务器处理,返回404,注入失败。
绕过方式1
由于Nginx在处理Host的时候,会将Host用冒号分割成hostname和port,port部分被丢弃。所以,我们可以设置Host的值为2023.mmrrj.com:aaa'"2023.mmrrj.com
,这样就能访问到目标Server块。
可以看到已经触发了注入报错
绕过方式2(高版本失效)
Nginx与PHP-FPM对Host的处理不同,当我们传入两个Host头的时候,Nginx将以第一个为准,而PHP-FPM将以第二个为准。
也就是说,如果我传入:
Host: 2023.mmrrj.com Host: aaa'"@2023.mmrrj.com
Nginx将认为Host为2023.mmrrj.com
,并交给目标Server块处理;但PHP中使用$_SERVER['HTTP_HOST']
取到的值却是aaa'"@mmrrj.com
。这样也可以绕过。
但很遗憾,在高版本的Nginx中已经修复了该漏洞,一旦识别到两个Host,就会返回400错误(Bad Request)
如果遇到较低版本的nginx还是可以尝试一下的
绕过方法3
这个方法相对更高级,需要nginx支持SNI,网站也必须配置HTTPS。
SNI是用来解决一个服务器拥有多个域名的问题,在HTTPS握手时提供Host,而无需请求头中的Host。
直接发送必然是404错误。
点击右上角的铅笔图标,勾选“Use HTTPS”
确定后再次发送请求
sql注入报错就又出现了,说明绕过成功。
到此这篇关于nginx host绕过的三种方式的文章就介绍到这了,更多相关nginx host绕过内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
nginx配置多个虚拟主机vhost的方法示例
在nginx下配置虚拟主机vhost非常方便.主要在nginx的配置文件nginx.conf中添加一个server即可 比如我想配置两个虚拟主机,通过域名linux.com和linux2.com访问,分别对应的目录是/usr/htdocs/linux 和/usr/htdocs/linux2 (这个目录下是放你开发项目文件哦) 因为我安装的本地虚拟机,所以我先在hosts文件中添加两个重定向: 192.168.20.250 linux.com //192.168.20.250是我虚拟机的ip,用的
-
Nginx 配置多站点vhost 的方法
假设你想在Linux Nginx中用不同的域名访问不同的目录,这时就要配置多个vhost,具体配置如下,假设网站根目录设定在/var/www/ 1.在/var/www/下新建两个目录 /var/www/ushark.net /var/www/ushark.wang 2.编辑/etc/nginx/nginx.conf http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format mai
-
nginx配置虚拟主机vhost的方法详解
前言 所谓虚拟主机,是说通过几个不同的url地址,都能到达nginx环境,只不过针对不同的url,处理的逻辑不同. nginx支持虚拟主机,但是浏览器等客户端不知道,所以虚拟主机的几个地址,应该是都指向nginx所在的ip地址,虚拟主机功能才能正常. 环境 系统环境:CentOS6.7 nginx version: nginx/1.8.1 方案 例如配置文件位于: /opt/nginx/conf/nginx.conf 在http {}的最后,添加如下行: include vhosts/*.con
-
nginx host绕过的三种方式
目录 实验环境 实验背景 绕过方式1 绕过方式2(高版本失效) 绕过方法3 实验环境 CentOS7 Nginx1.23.3 MySQL8.0.32 PHP5.4.16 实验背景 在一个LNMP架构下的注册页面中存在sql注入漏洞,通过抓包修改host进行注入,但由于修改了host,nginx无法正确处理此请求,以默认服务器处理,返回404,注入失败. 绕过方式1 由于Nginx在处理Host的时候,会将Host用冒号分割成hostname和port,port部分被丢弃.所以,我们可以设置Hos
-
Nginx 虚拟主机配置的三种方式(基于域名)
Nginx配置虚拟主机支持3种方式:基于IP的虚拟主机配置,基于端口的虚拟主机配置,基于域名的虚拟主机配置. 详解Nginx 虚拟主机配置的三种方式(基于IP) https://www.jb51.net/article/149774.htm 详解Nginx 虚拟主机配置的三种方式(基于端口) https://www.jb51.net/article/14978.htm 3.Nginx基于域名的虚拟主机配置 使用基于域名的虚拟主机配置是比较流行的方式,可以在同一个IP上配置多个域名并且都通过80端
-
详解Nginx 虚拟主机配置的三种方式(基于IP)
Nginx配置虚拟主机支持3种方式:基于IP的虚拟主机配置,基于端口的虚拟主机配置,基于域名的虚拟主机配置. 详解Nginx 虚拟主机配置的三种方式(基于端口) https://www.jb51.net/article/14977.htm 详解Nginx 虚拟主机配置的三种方式(基于域名) https://www.jb51.net/article/14978.htm 1.基于IP的虚拟主机配置 如果同一台服务器有多个IP,可以使用基于IP的虚机主机配置,将不同的服务绑定在不同的IP上. 1.1
-
详解Nginx 虚拟主机配置的三种方式(基于端口)
Nginx配置虚拟主机支持3种方式:基于IP的虚拟主机配置,基于端口的虚拟主机配置,基于域名的虚拟主机配置. 详解Nginx 虚拟主机配置的三种方式(基于IP) https://www.jb51.net/article/14974.htm 详解Nginx 虚拟主机配置的三种方式(基于域名) https://www.jb51.net/article/14978.htm 2.Nginx基于端口的虚拟主机配置 如一台服务器只有一个IP或需要通过不同的端口访问不同的虚拟主机,可以使用基于端口的虚拟主机配
-
Android 打包三种方式实例详解
Android 打包三种方式实例详解 前言: 现在市场上很多app应用存在于各个不同的渠道,大大小小几百个,当我们想要在发布应用之后统计各个渠道的用户下载量,我们就要进行多渠道打包. 01.应用的打包签名什么是打包? 打包就是根据签名和其他标识生成安装包. 签名是什么? 1.在android应用文件(apk)中保存的一个特别字符串 2.用来标识不同的应用开发者:开发者A,开发者B 3.一个应用开发者开发的多款应用使用同一个签名 就好比是一个人写文章,签名就相当于作者的署名. 如果两个应用都是一
-
PHP连接MySQL数据库的三种方式实例分析【mysql、mysqli、pdo】
本文实例讲述了PHP连接MySQL数据库的三种方式.分享给大家供大家参考,具体如下: PHP与MySQL的连接有三种API接口,分别是:PHP的MySQL扩展 .PHP的mysqli扩展 .PHP数据对象(PDO) ,下面针对以上三种连接方式做下总结,以备在不同场景下选出最优方案. PHP的MySQL扩展是设计开发允许php应用与MySQL数据库交互的早期扩展.MySQL扩展提供了一个面向过程的接口,并且是针对MySQL4.1.3或者更早版本设计的.因此这个扩展虽然可以与MySQL4.1.3或更
-
浅谈MySQL8.0 异步复制的三种方式
本实验中分别针对空库.脱机.联机三种方式,配置一主两从的mysql标准异步复制.只做整服务器级别的复制,不考虑对个别库表或使用过滤复制的情况. 实验环境 [root@slave2 ~]# cat /etc/hosts 192.168.2.138 master 192.168.2.192 slave1 192.168.2.130 slave2 mysql> select version(); +-----------+ | version() | +-----------+ | 8.0.16 |
-
解决SpringBoot跨域的三种方式
一.什么是跨域 1.1.为什么会出现跨域问题 出于浏览器的同源策略限制.同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现.同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互.所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port) 简单说A应用只能访问
-
Java后端之俯瞰数据接收的三种方式
目录 一.前言 二.正文部分 第一种方法: 第二种方法: 第三种方法: 三种方法概览图: 一.前言 前面我们说了一些网页表单的功能,现在我们先来讲解数据的传输,如何进行前后端的联系 (建议先看完上篇) 二.正文部分 首先我们要先打开我们idea,如图,在jsp下的<form>也就是问卷的哪里加上action=" ", 这是在给这个弄个地址," "内容是任意的 第二步:在Demo下的Demo类下输入划线内容,只需输入@R看着选到即可回车 第三步:输入下列画
-
Python写入MySQL数据库的三种方式详解
目录 场景一:数据不需要频繁的写入mysql 场景二:数据是增量的,需要自动化并频繁写入mysql 方式一 方式二 总结 大家好,Python 读取数据自动写入 MySQL 数据库,这个需求在工作中是非常普遍的,主要涉及到 python 操作数据库,读写更新等,数据库可能是 mongodb. es,他们的处理思路都是相似的,只需要将操作数据库的语法更换即可. 本篇文章会给大家分享数据如何写入到 mysql,分为两个场景,三种方式. 场景一:数据不需要频繁的写入mysql 使用 navicat 工
随机推荐
- Git使用基础篇(一些常用命令和原理)
- js实现温度计时间样式代码分享
- Apache默认是不支持SSI如何给Apache增加SSI支持
- 支持ASP.NET MVC、WebFroM的表单验证框架ValidationSuar使用介绍
- 基于PHP中自带的字符串操作函数合集
- jsp实现cookie的使用
- 使用记事本编写java程序全过程图解
- 基于canvas粒子系统的构建详解
- jsp网页搜索结果中实现选中一行使其高亮
- JS之日历实践附实现代码
- Java 语言实现清除带 html 标签的内容方法
- jquery设置表单元素为不可用的简单代码
- javascript中普通函数的使用介绍
- WinXP注册表与驱动程序优化全集
- web服务器集群(多台web服务器)session同步、共享的3种解决方法
- 在winform下实现左右布局多窗口界面的方法
- Android 媒体库数据更新方法总结
- vue中动态设置meta标签和title标签的方法
- struts2中simple主题下<s:fieldError>标签默认样式的移除方法
- 惹我你就死定了(韩国)迅雷高速下载