Archive for 五月, 2010

Bug&Exp Nginx-scan Perl扫描器

23 Comments

#!usr/bin/perl -w
#来源1: http://www.80sec.com/nginx-securit.html
#来源2:  http://www.1141643.com
#用处:测试nginx是否存在该漏洞
use LWP;
use LWP::ConnCache;
my $browser = LWP::UserAgent->new;
$browser->timeout( 15 );
my $conncache = LWP::ConnCache->new; 
$browser->conn_cache($conncache);

#先用列表吧,没有用记事本保存列表再读再扫嘿嘿
my @bbslist1;
push @bbslist1,”http://bbs.xxx.com/robots.txt“;
push @bbslist1,”http://bbs.yyy.com/robots.txt” ;
push @bbslist1,’http://bbs.pctutu.com/robots.txt’;
push @bbslist1,’http://bbs.yahoo.cn/robots.txt’;

#Server: nginx/0.8.13
#Content-Type: text/html

print “\t\tNginx漏洞扫描程序 \n\n”;
foreach my $url (@bbslist1){
  print “目前正在扫描:$url\n”;
 my $response= $browser->get( $url);
 $response->is_success or say(“Failed to get ‘$url’:\n”, $response->status_line);
 my $servertype = $response->server;
  print “$servertype\n”;
 if ($servertype=~/nginx/){
  my $typeold=$response->content_type;
  print “$typeold\n”;
  my $url2=$url.’/xysky.php’;
  my $response2 = $browser->get( $url2);
  $response2->is_success or say(“Failed to get ‘$url2′:\n”, $response->status_line);
  my $typenew=$response2->content_type;
  print “$typenew\n”;
  if ($typeold eq $typenew){
    print “站点 $url 暂没有发现漏洞.\n\n”;
  }else{
    print “站点 $url 存在该漏洞.\n\n”;
  }
 }else{
 print “站点不是nginx,Sorry!\n\n”;
 }
}

Bug&Exp IIS源码泄露及文件类型解析错误

1 Comment

漏洞介绍:IIS是微软推出的一款webserver,使用较为广泛,在支持asp/asp.net的同时还可以较好的支持PHP等其他语言的运行。但是80sec发现在IIS的较高版本中存在一个比较严重的安全问题,在按照网络上提供的默认配置情况下可能导致服务器泄露服务器端脚本源码,也可能错误的将任何类型的文件以PHP的方式进行解析,使得恶意的攻击者可能攻陷支持PHP的IIS服务器,特别是虚拟主机用户可能受的影响较大。
漏洞分析:
IIS支持以CGI的方式运行PHP,但是此种模式下,IIS处理请求的时候可能导致一些同80sec提到的nginx安全漏洞一样的问题,任何用户可以远程将任何类型的文件以PHP的方式去解析,你可以通过查看Phpinfo中对php的支持方式,其中如果为CGI/FAST-CGI就可能存在这个问题。

黑盒访问
 

http://www.80sec.com/robots.txt/1.php

查看文件是否存在和返回的HTTP头就可以知道是否存在此漏洞。

同时,如果服务器支持了PHP,但应用中使用的是asp就可以通过如下方式来直接查看服务端asp源码
 

http://www.80sec.com/some.asp/1.php

漏洞厂商:http://www.microsoft.com

解决方案:

我们已经尝试联系官方,但是此前你可以通过以下的方式来减少损失

关闭cgi.fix_pathinfo为0

Bug&Exp nginx文件类型错误解析漏洞

0 Comments

漏洞介绍:nginx是一款高性能的web服务器,使用非常广泛,其不仅经常被用作反向代理,也可以非常好的支持PHP的运行。80sec发现其中存在一个较为严重的安全问题,默认情况下可能导致服务器错误的将任何类型的文件以PHP的方式进行解析,这将导致严重的安全问题,使得恶意的攻击者可能攻陷支持php的nginx服务器。
漏洞分析:nginx默认以cgi的方式支持php的运行,譬如在配置文件当中可以以


location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}

的方式支持对php的解析,location对请求进行选择的时候会使用URI环境变量进行选择,其中传递到后端Fastcgi的关键变量SCRIPT_FILENAME由nginx生成的$fastcgi_script_name决定,而通过分析可以看到$fastcgi_script_name是直接由URI环境变量控制的,这里就是产生问题的点。而为了较好的支持PATH_INFO的提取,在PHP的配置选项里存在cgi.fix_pathinfo选项,其目的是为了从SCRIPT_FILENAME里取出真正的脚本名。
那么假设存在一个http://www.80sec.com/80sec.jpg,我们以如下的方式去访问

将会得到一个URI

/80sec.jpg/80sec.php

经过location指令,该请求将会交给后端的fastcgi处理,nginx为其设置环境变量SCRIPT_FILENAME,内容为

/scripts/80sec.jpg/80sec.php

而在其他的webserver如lighttpd当中,我们发现其中的SCRIPT_FILENAME被正确的设置为

/scripts/80sec.jpg

所以不存在此问题。
后端的fastcgi在接受到该选项时,会根据fix_pathinfo配置决定是否对SCRIPT_FILENAME进行额外的处理,一般情况下如果不对fix_pathinfo进行设置将影响使用PATH_INFO进行路由选择的应用,所以该选项一般配置开启。Php通过该选项之后将查找其中真正的脚本文件名字,查找的方式也是查看文件是否存在,这个时候将分离出SCRIPT_FILENAME和PATH_INFO分别为

/scripts/80sec.jpg和80sec.php

最后,以/scripts/80sec.jpg作为此次请求需要执行的脚本,攻击者就可以实现让nginx以php来解析任何类型的文件了。

http://www.80sec.com/80sec.jpg/80sec.php

POC: 访问一个nginx来支持php的站点,在一个任何资源的文件如robots.txt后面加上/80sec.php,这个时候你可以看到如下的区别:

访问http://www.80sec.com/robots.txt

HTTP/1.1 200 OK
Server: nginx/0.6.32
Date: Thu, 20 May 2010 10:05:30 GMT
Content-Type: text/plain
Content-Length: 18
Last-Modified: Thu, 20 May 2010 06:26:34 GMT
Connection: keep-alive
Keep-Alive: timeout=20
Accept-Ranges: bytes

访问访问http://www.80sec.com/robots.txt/80sec.php

HTTP/1.1 200 OK
Server: nginx/0.6.32
Date: Thu, 20 May 2010 10:06:49 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=20
X-Powered-By: PHP/5.2.6

其中的Content-Type的变化说明了后端负责解析的变化,该站点就可能存在漏洞。

漏洞厂商:http://www.nginx.org

解决方案:

我们已经尝试联系官方,但是此前你可以通过以下的方式来减少损失

关闭cgi.fix_pathinfo为0

或者

if ( $fastcgi_script_name ~ \..*\/.*php ) {
return 403;
}

NewS 360安全卫士招聘系统开发工程师(安全方向)

6 Comments

360安全卫士招聘系统开发工程师(安全方向)

朋友叫帮忙发的。需要的童鞋请自主联系。。。

职位要求:
1.良好的技术感觉,快速的学习能力;
2.精通php/shell/perl/python/c等至少一种语言;
3.对linux/Unix环境下的开发有一定经验;
4.对网络协议有一定的了解;
5.轻松阅读英文技术文档;
6.认可公司文化,有高度的责任心和良好的团队协作意识;
7.不限工作经验和学历。

满足如下要求有加分:
1.有网络渗透测试和防护经验;
2.有过open source项目的开发经历;
3.对网络安全有兴趣。

岗位描述:
1.公司内部网络安全防护和信息安全管理系统的开发;
2.参与安全事件的排查,跟踪与定位;
3.参与日常的信息安全管理工作。

联系方式:showrun.lee@gmail.com

工作地:北京

待遇:面议