2007年9月9日星期日

[Tips]dz升级检测功能的黑盒测试

by superhei
2007-09-08
http://www.ph4nt0m.org

Text Mode

'dz的论坛程序升级通知'是个不错的功能,很多注意安全的程序都有类似的功能比如:wordpress
我们先看看dz功能的实现代码 :

\admin\global.func.php

00438: echo '<script language="JavaScript" 

src="http://customer.discuz.net/news.php?version=
'.rawurlencode(DISCUZ_VERSION).'&release='.rawurlencode(DISCUZ_RELEASE).'&php='.PHP_VERSION.'&mysql='.$dbversion.'&charset='.rawurlencode($charset).'&bbname='.rawurlencode($bbname).'&members='.$members.'&threads='.$threads.'&posts='.$posts.'&msn='.$msns.'&md5hash='.md5(preg_replace("/http:\/\/(.+?)\/.*/i", "\\1", 

$_SERVER
['HTTP_REFERER']).$_SERVER['HTTP_USER_AGENT'].DISCUZ_VERSION.DISCUZ_RELEASE.$bbname.$members.$threads.$posts).'"></script>';

提交版本以及一些论坛的信息利用js发送到customer.discuz.net来判断,我们抓个包:
GET /news.php?version=5.5.0&release=20070301&php=5.1.2&mysql=4.1.9-max&charset=gbk&bbname=Discuz%21%20Board&members=5&threads=21&posts=22&msn=0&md5hash=c322d618261ae0e89bece292886897d6 HTTP/1.1
Host: customer.discuz.net
User
-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.6) Gecko/20070725 (FoxPlus) Firefox/2.0.0.6
...

可以看出来发送的一些变量的意思:

DISCUZ_VERSION 为版本号
DISCUZ_RELEASE 版本的日期

//这2个都是在\discuz_version.php 里定义的:
define('DISCUZ_VERSION', '5.5.0');
define('DISCUZ_RELEASE', '20070301');

PHP_VERSION php的版本
$dbversion mysql的版本
$charset 使用的编码
$bbname 论坛名

$members,$threads,$posts,$msns 这都是论坛的一些信息,我估计是dz来收集客户资料的一些东西
md5hash 这个值为md5
(preg_replace("/http:\/\/(.+?)\/.*/i", "\\1", $_SERVER['HTTP_REFERER']).$_SERVER['HTTP_USER_AGENT'].DISCUZ_VERSION.DISCUZ_RELEASE.$bbname.$members.$threads.$posts)

注意里面用了HTTP_REFERER, HTTP_USER_AGENT来判断来路的[dz ,pw常用的手段 :)]

下面我们对这些参数进行简单的黑盒,先写个测试的php:
<?
//$version="5.5.0'";
//$version="5.5.0 and 1=1";

$version="5.5.0<script>alert(document.cookie)</script>";
$res="20070301";
$dbversion="4.1.9-max";
$charset="gbk";
$bbname="1";

$members="1";
//$posts="%27";
//$msns="<script>";

$sef =$_SERVER['HTTP_REFERER'];

$url= 'http://customer.discuz.net/news.php?version='.rawurlencode($version).'&release='.rawurlencode($res).'&php='.PHP_VERSION.'&mysql='.$dbversion.'&charset='.rawurlencode($charset).'&bbname='.rawurlencode($bbname).'&members='.$members.'&threads='.$threads.'&posts='.$posts.'&msn='.$msns.'&md5hash='
.md5(preg_replace("/http:\/\/(.+?)\/.*/i", "\\1", $sef).$_SERVER['HTTP_USER_AGENT'].$version.$res.$bbname.$members.
$threads.$posts);
print $url;
print     '<iframe src="'.$url.'" height=1000 width=1000>';

首先我用' %27 and1=1 等测试每个变量有没有注射,很遗憾 没找到明显的注射,我们测试下xss
经过测试$version 过滤了' 但是内容可以在返回的显示出来 存在xss [也不知道他们代码杂写的单独过滤个']
不过这个没多大的实际应用的意义,主要是要先得到你xss对象的HTTP_USER_AGENT,HTTP_REFERER倒是很好得到.不过如果你用社会工程,得到这些东西 还是很容易的.

然后这个功能还有就是上面说的收集信息如php,mysql版本,msn啊多少用户,多少贴什么的,这些信息提交后应该放入了数据库,然后通过它们的'管理后台'查看这些信息,那么在这个update/insert--- >select出来的过程,如果有变量没有过滤呢,那么我们可以在它们的'后台'跨一跨?
[测试你发现有几个变量有明显的int或者类似函数的过滤过的]

杂判断是否有漏洞呢? 我们可以src一个远程的js,工具有没有执行你的代码来判断? 不过这些都只是YY,具体他们的代码和管理方式我根本不清楚 :(.

这个文章里的bug是没什么意义的,我只是想说说在没有代码的情况下的测试思路:根据功能,来思考程序员是杂实现这个功能-->yy出伪codz-->测试有可能出现的bug.

2 条评论:

products 说...

China Wholesale has been described as the world’s factory. This phenomenom is typified by the rise ofbusiness. Incredible range of products available with China Wholesalers “Low Price and High Quality” not only reaches directly to their target clients worldwide but also ensures that wholesale from china from China means margins you cannot find elsewhere and buy products wholesaleChina Wholesale will skyroket your profits.wedding dressescheap naruto cosplayanime cosplaycheap Gemstone Jewelry

products 说...

Women’s nike tn Shox Rivalry est le modèle féminin le plus tendance de baskets pour le sport. tn chaussuresConcernant la semelle :spyder jacketsCheap Brand Jeans Shop - True Religion Jeans cheap nike shox & Puma Shoes Online- tn nike,Diesel Jeans le caoutchouc extérieur, l’EVA intermédiaire Levis Jeanset le textile intérieur s’associent pour attribuer à la.ed hardy shirts pretty fitCharlestoncheap columbia jackets. turned a pair of double plays to do the trick.Lacoste Polo Shirts, puma basket, Burberry Polo Shirts.wholesale Lacoste polo shirts and cheap polo shirtswith great price.Thank you so much!!cheap polo shirts men'ssweate,gillette mach3 razor bladesfor men.As for Cheap Evisu JeansCheap Armani Jeanspolo shirtsPuma shoes