前言 nginx和fastcgi的通信方式有两种,一种是TCP的方式,一种是unix socke方式。两种方式各有优缺点,这里先给出两种的配置方法,然后再对性能、安全性等做出总结。.../default) 将fastcgi_pass参数修改为127.0.0.1:9000,像这样: location ~ \.php$ { index index.php index.html...index.php; include fastcgi_params; } 第二步,编辑php-fpm配置文件 /etc/php5/fpm/pool.d/www.conf 将listen参数修改为...Unix domain sockets的接口和Internet socket很像,但它不使用网络底层协议来通信。Unix domain socket 的功能是POSIX操作系统里的一种组件。.../www.conf 将listen参数修改为/dev/shm/fpm-cgi.sock,像这样: listen=/dev/shm/fpm-cgi.sock 将listen.backlog参数改为-1,
Nginx连接fastcgi的方式有2种:unix domain socket和TCP,Unix domain socket 或者 IPC socket是一种终端,可以使同一台操作系统上的两个或多个进程进行数据通信...与管道相比,Unix domain sockets 既可以使用字节流和数据队列,而管道通信则只能通过字节流。...Unix domain sockets的接口和Internet socket很像,但它不使用网络底层协议来通信。Unix domain socket 的功能是POSIX操作系统里的一种组件。...下面是php 5.3以上版本将TCP改成socket方式的配置方法: 修改php-fpm.conf(/usr/local/php/etc/php-fpm.conf) ;listen = 127.0.0.1...:9000 listen = /dev/shm/php-cgi.sock 修改nginx配置文件server段的配置,将http的方式改为socket方式 location ~ .*.
将压缩包内的文件提取到 D:\WebServer\nginx 目录。...on; keepalive_timeout 120; server_tokens off; tcp_nodelay on; fastcgi_connect_timeout 300;...将压缩包内的文件提取到 D:\WebServer\php 目录。...在 D:\WebServer\php 目录,将 php.ini-production 重命名为 php.ini 并打开,找到下面的参数去掉注释(删掉每行前的 ; 符号): extension_dir =...将 WinSW.NET461.exe 复制到 D:\WebServer\nginx 目录,并重命名为 nginxservice.exe,然后新建一个名为 nginxservice.xml 的配置文件,添加文件内容如下
系统的Web项目部署,本篇以PHP项目为例,讲解如何使用IIS完成PHP项目的发布。...在服务器C盘里新建一个文件夹,命名php,把下载的压缩包解压到php文件夹里, 并在php文件夹里再新建一个www文件夹。...将 PHP 的根目录下的php.ini-production复制一份并改名为 php.ini,作为PHP的配置文件; 二、PHP配置设置 编辑php.ini,里面有很多配置要修改 1.修改扩展文件的路径...就在fastcgi的下面,取消; cgi.rfc2616_headers = 1的注释 取消后如图: 我们把修改好的php.ini文件复制一份,放到C盘的windows文件夹下 三、配置IIS的PHP部署环境...服务器管理器 => IIS => 添加角色和功能 => 安装CGI 进入IIS管理器 进入后依次配置处理程序映射、FastCGI设置、默认文档、身份验证。
如果使用 IIS 7 以下的版本,可能需要额外安装 FastCGI,下载地址 http://www.iis.net/expand/fastcgi。...PHP 5.4.42 因为 PHP 5.2.10 开始已经不再提供 php5isapi.dll,也即在 IIS 上只能使用 FastCGI 而能使用 ISAPI 方式了,所以选用 Non Thread...将 MySQL 服务成功停止后,找到 D:\discuz\MySQL\my.ini,将 datadir 修改为你想要放置数据库文件的地方,比如: datadir="D:/discuz/Database"...安装时会重启 IIS 服务。 部署 Discuz! 将前面下载的 Discuz! 包解压,把 upload 文件夹里的内容复制到 D:\discuz\wwwroot下,当然你也可以新建子目录来放置。...此时实际上是打开了「高级安全 Windows 防火墙」,右键「入站规则」,选择「新建规则」,规则类型选「端口」,协议和端口选择「TCP」和「特定本地端口:80」,操作选择「允许连接」,配置文件保持默认的全部勾选
如果使用 IIS 7 以下的版本,可能需要额外安装 FastCGI,下载地址 http://www.iis.net/expand/fastcgi。...PHP 5.4.42 因为 PHP 5.2.10 开始已经不再提供 php5isapi.dll,也即在 IIS 上只能使用 FastCGI 而能使用 ISAPI 方式了,所以选用 Non Thread...将 D:\discuz\PHP 文件夹内的 php.ini-development 拷贝一份为 php.ini,找到并修改下列内容如下: fastcgi.impersonate = 1 cgi.fix_pathinfo...将 MySQL 服务成功停止后,找到 D:\discuz\MySQL\my.ini,将 datadir 修改为你想要放置数据库文件的地方,比如: datadir="D:/discuz/Database"...此时实际上是打开了「高级安全 Windows 防火墙」,右键「入站规则」,选择「新建规则」,规则类型选「端口」,协议和端口选择「TCP」和「特定本地端口:80」,操作选择「允许连接」,配置文件保持默认的全部勾选
而如果以PHP-FPM(比如搭配Nginx或者Apache的mod_fastcgi) 或者PHP-CGI(比如搭配Apache的mod_fcgid或者Win上的IIS)来运行PHP,则一般都不需要TS...若IIS,以isapi模式运行PHP使用TS版,以FastCGI模式运行PHP使用NTS版。...要在IIS6上使用高版本PHP,必须安装FastCGI 扩展,然后使IIS6支持FastCGI。...phps # 将目录的默认索引页面改为index.php DirectoryIndex index.php index.html # 如果php-fpm使用的是TCP socket,那么在httpd.conf...,而在mysql8以后的加密规则为caching_sha2_password #可以将mysql用户登录的加密规则修改为mysql_native_password ALTER USER 'root'@'
#define NGINX_VER "IIS/" NGINX_VERSION #这里修改的是软件名称,我将原有的nginx改为了IIS。..." CRLF #将原有的nginx改为IIS "" CRLF "" CRLF #更改完成后,保存退出即可 [root@nginx nginx-1.14.0...fastcgi_cache 的作用是缓存 fastcgi 生成的内容,很多情况是 php 生成的动态的内容。...fastcgi_cache缓存减少了nginx与php的通信的次数,更减轻了php和数据库(mysql)的压力。...允许将 TIME-WAIT sockets 重新用于新的 TCP 连接。这对于服务器来说很有意义,因为服务器上总会有大量 TIME-WAIT 状态的连接。
版本: IIS6.0 2、漏洞复现 1) 开启WebDAV 和写权限 ? ? 2) 利用burp测试 抓包,将GET请求改为OPTIONS ? 3)利用工具进行测试 ?...3、 漏洞修复 1) 将php.ini文件中的cgi.fix_pathinfo的值设为0.这样php在解析1.php/1.jpg这样的目录时,只要1.jpg不存在就会显示404; 2) 将/etc/php5...3、 漏洞修复 将/etc/nginx/sites-avaliable/default里的autoindex on改为autoindex off (四) CRLF注入 1、 漏洞简介及成因 CRLF时“...访问127.0.0.1:8080,burp抓包,send to Repeater,将请求方式改为PUT,创建一个122.jsp,并用%20转义空格字符。...八、 其它中间件相关漏洞 (一) FastCGI未授权访问、任意命令执行 1、 漏洞简介及成因 服务端使用fastcgi协议并对外网开放9000端口,可以构造fastcgi协议包内容,实现未授权访问服务端
众所周知,在网站分类中存在一种分类就是静态网站和动态网站,两者的区别就是静态网站只需要通过浏览器进行解析,其中的页面是一对一的(一个内容对应一个页面),而动态网站需要一个额外的编译解析的过程,网页上的数据是从数据库中或者其他地方调用...PHP-FPM攻击实现原理 想要分析它的攻击原理需要从FastCGI协议封装数据内容来看,这里仅对攻击原理做简要描述,CGI 和 FastCGI 协议的运行原理这篇文章中详细介绍了FastCGI协议的内容...,php://input也就是POST的内容,这个我们可以在FastCGI协议的body控制为恶意代码,这样就在理论上实现了php-fpm任意代码执行的攻击。...MySQL连接方式 MySQL分为服务端和客户端,客户端连接服务器使存在三种方法: •Unix套接字•内存共享/命名管道•TCP/IP套接字 •在Linux或者Unix环境下,当我们输入mysql –...•在Windows系统中客户端和Mysql服务器在同一台电脑上,可以使用命名管道和共享内存的方式。
如何将文件上传到 Windows 云服务器,请参考 上传文件到 Windows 云服务器。以下操作步骤以 PHP 5.2.13 版本为例。...在 “Web Server Setup” 界面,选择 IIS FastCGI,单击 Next。如下图所示:图片按照安装界面的指引,完成 PHP 的安装。....zipMicrosoft Visual C++ Redistributable for Visual Studio 2015 x86版本安装配置将已下载的 PHP zip 安装包解压缩。...例如,解压缩至 C:\PHP 目录下。复制 C:\PHP 目录下的 php.ini-production 文件,并将该文件的后缀修改为 .ini(即重命名为php.ini文件)。...如下图所示:图片在打开的编辑 FastCGI 应用程序窗口中,将监视对文件所做的更改设置为 php.ini 文件的路径。
环境: 操作系统:Windows 2003 Server SP2 PHP 版本:php-5.2.6-Win32 1.下载 FastCGI For IIS6 http://www.iis.net...fcgiext.dll – fastcgi处理程序 fcgiext.ini – 配置文件 fcgiconfig.js – FastCGI的控制脚本 同时在 IIS 的 “Web 服务扩展”里多了...2.下载 PHP5.2.14 Windows 版 http://www.php.net/downloads.php 下载 .zip 格式的版本,下载后解压至 c:\PHP 目录,并给 IIS 启动帐户组或用户赋予读取和运行权限...配置 php.ini 将 C:\PHP\php-5.2.14-Win32\php.ini-recommended 复制一个,然后重命名为 D:\PHP\php.ini 打开 C:\PHP\php-5.2.14...-Win32\php.ini,修改: extension_dir = "C:\PHP\php-5.2.14-Win32\ext" fastcgi.impersonate = 1 其它的根据实际需要对
如果是动态资源(比如.aspx,asp,php等等),则通过扩展名从IIS的脚本影射(Script Map)找到相应的ISAPI Dll。 ?...它是Windows 2003的TCP/IP网络子系统的一部分,从结构上,它属于TCP之上的一个网络驱动程序。...至于IIS下的监听器,除了基于网络驱动的HTTP.SYS提供HTTP请求监听功能外,WCF提供了3种类型的监听器:TCP监听器、命名管道(Named Pipes)监听器和MSMQ监听器,分别提供了基于TCP...、命名管道和MSMQ传输协议的监听功能。...的激活请求,包含TCP监听器和对应的监听适配器; NetPipeActivator:为WAS提供基于命名管道的激活请求,包含命名管道监听器和对应的监听适配器; NetMsmqActivator:为WAS
和nginx的php5_module、CGI、FastCGI,给IIS的ISAPI,以及Shell的CLI 经过不断的技术升级,目前搭建高性能的PHP Web服务器,最佳的方式是Apache/Nginx...协议发送 CGI 环境变量和标准输入数据给 这个CGI 解释器进程 CGI 解释器进程完成处理后将标准输出和错误信息从同一连接返回 Web 服务器 CGI 解释器进程接着等待并处理来自 Web 服务器的下一个连接...上述原理图中提到的Socket 通信即为此模式 配合文章开头的漏洞演示来看,我们利用SSRF漏洞攻击FastCGI是在TCP模式下进行 0x02.FastCGI攻击原理 FastCGI协议 HTTP协议是浏览器和服务器中间件进行数据交换的协议...,类比HTTP协议来说,fastcgi协议则是服务器中间件和某个语言后端(如PHP-FPM)进行数据交换的协议 Fastcgi协议由多个record组成,record也有header和body一说,服务器中间件将这二者按照...>:/_后接TCP数据流 当后接TCP数据流为我们构造的恶意FastCGI协议报文,即可执行恶意命令 根据上一章节的FastCGI攻击原理分析,我们需要满足三个条件
PHP-FPM(FastCGI Process Manager):FastCGI进程管理器,是 PHP(Web Application)对 Web Server 提供的 FastCGI 协议的接口程序,...所以,CGI就是规定要传哪些数据,以什么样的格式传递给后方处理这个请求的协议。仔细想想,你在PHP代码中使用的用户从哪里来的。 也就是说,CGI就是专门用来和 web 服务器打交道的。...CGI的好处就是完全独立于任何服务器,仅仅是做为中间分子。提供接口给apache和php。他们通过cgi搭线来完成数据传递。这样做的好处就是尽量减少了这两个程序的关联,使他们变得更独立。...4)FastCGI子进程完成处理后,将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。...五、PHP-FPM PHP-FPM 是对于 FastCGI 协议的具体实现,他负责管理一个进程池,来处理来自Web服务器的请求。目前,PHP5.3版本之后,PHP-FPM是内置于PHP的。
enabled="false"/> 4.安装服务 最后powershell中运行命令: nginx-service.exe install 更方便的方法...毕竟windows服务器的IIS默认就把80端口占了,只要被占用就会安装失败。...这里算是一点骚操作:您只需要编辑上面的这个脚本,把80修改为一个未被占用的端口。然后回到刚才没有选择Y的命令窗口,选择Y,继续执行,就能安装成功。...http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1...127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME
不知道从什么时候开始的,部署IIS的WEB服务器居然可以兼容PHP了,这个还真不知道,孤陋寡闻了,我记得我在使用win服务器的时候,只能使用Apache去搭建web服务器,这几天需要在Windows服务器重新部署...安装PHP: 将下载的php版本解压,我们环境所需是7.3,所以我下载的是7.3.23版本x64的,根据实际情况按照准备链接进行下载,这里说下,因为win默认没有解压软件,默认可以直接打开zip文件,我以为是文件夹...,怎么复制和粘贴都不对,后来才看见是zip,,, 解压php-7.3.32-nts-Win32-VC15-x64.zip文件,重命名文件夹为php73,把php73文件夹拷贝到指定的磁盘目录,我们在E...\php-cgi.exe 名称:FastCGI 其中可执行文件,在选择的时候设置(*.exe)或者直接把目录换成你的php目录,其他直接粘贴就行。...设置FastCGI,找到中间的IIS部分,打开“FastCGI设置” 右键选中“E:\phpmysql\php73\php-cgi.exe”然后选择编辑,监视对文件所做的更改:E:\phpmysql
php默认提供了很多种sapi,常见的提供给apache和nginx的php5_module、CGI、FastCGI,给IIS的ISAPI,以及Shell的CLI。...这样做的好处了尽量减少2个的关联,使他们2变得更独立。...(CGI程序和FastCGI程序,可以理解成遵循CGI协议和FastCGI协议编写的程序) FastCGI的工作原理: FastCGI接口方式采用C/S结构,可以将HTTP服务器和脚本解析服务器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程...(4)FastCGI子进程完成处理后,将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。...3、PHP-FPM 首先要说的是:fastcgi是一个协议,php-fpm实现了这个协议。 大家都知道,PHP的解释器是php-cgi。
这样将php的request_terminate_timeout设置为较大的值或0,可减少因php脚本执行时行过长导致nginx产生Connection reset by peer错误。...3.5 FastCGI缓冲配置主要参数 fastcgi_buffers 4 64k 这个参数指定了从FastCGI进程到来的应答,本地将用多少和多大的缓冲区读取,假设一个PHP或JAVA脚本所产生页面大小为...这个错误日志recv() failed (104: Connection reset by peer)是在后端为IIS的情况下抛出的,抓包发现IIS并不会发fin包来断开链接,而是在超时后发RST包重置连接..., NULL, NULL, NULL, 0, 1 }, 将最后一行的1改为0即可,根据数据结构分析可得知,这个1代表启用keepalived,所以客户端才不会主动断开连接...,因为这是tcp的端口连通性检查,不需要keepalived,将其改为0禁止keepalived即可。
shell 文件名地址可以从数据库中读取出来 ? Getshell 成功 ?...Nginx 解析漏洞 PHP CGI 解析漏洞 Fastcgi 协议分析 && PHP-FPM 未授权访问漏洞 && Exp 编写 https://www.leavesongs.com/PENETRATION...-e$php_url.php) { return403; } 2、升级到最新版本的 nginx IIS5.x-6.x 解析漏洞 使用 iis5.x-6.x 版本的服务器,大多为 windows server...IIS7.5解析漏洞 IIS7.5 的漏洞与 nginx 的类似,都是由于 php 配置文件中,开启了 cgi.fix_pathinfo,而这并不是 nginx 或者 iis7.5 本身的漏洞。...可以配合操作系统文件命名规则,上传不符合 windows 文件命名规则的文件名 test.asp. test.asp(空格) test.php:1.jpg test.php:: $DATA 会被 windows