PDA

Просмотр полной версии : Уязвим ли код


Isis
20.02.2012, 19:59
Ага, не хекер!

magic_quotes_gpc = off

[PHP]
[COLOR="#0000BB"][COLOR="#007700"]

t0ma5
20.02.2012, 22:56
Надеюсь старейшины форума меня поправят если я не прав.

Вот эта проверка

if (file_exists('ololo/files/' . $_GET['d'] . '/thumb.php'))

обходится нулл байтом, но нулл байт не канает так как addslashes его предварительно валит.

Обойти можно попробовать через дополнительные ///, они выступают в качестве замены для %00.

То есть по сути запрос вида ?d=../../../../../../../../../../../etc/shells///////[2048 или 4096] должен обрубить остальной запрос, точное количество слешей сказать не могу, надо тестить.

Konqi
20.02.2012, 23:04
То есть по сути запрос вида ?d=../../../../../../../../../../../etc/shells///////[2048 или 4096] должен обрубить остальной запрос



в этом случий не пройдешь проверку file_exists, хотя если подумать.. file_exists пропускает диры, то есть file_exists('/etc/') вернет true.. *scratch*

для обхода file_exists Нужно указать диру, так как в других папках нету thumb.php, а для инклуда нужен файл, насколько я понимаю это тупик

t0ma5
21.02.2012, 00:06
Есть одна идея, может бредовая конечно, но все же.

Посмотреть реверс IP, узнать соседние сайты. Существует ведь вероятность что через один из них(хромает фильтрация) можно залить thumb.php, но нельзя выполнить(htaccess или еще что), и не корректно стоят права, и его можно заинклудить?

Полный путь конечно придется узнать, но это в некоторых случаях не проблема.

Pirotexnik
21.02.2012, 01:08
я так делал. нужно было взломать 1 сайт на нем был лишь инклуд. Через 5 минут залил пхп на соседа. Путь узнал по ошибка выдающихся LFI.

Isis
21.02.2012, 11:45
Такой вариант у меня был, но это геморрой

В последней версии openx 2.8.8 файл www/delivery/al.php, там такая проверка.

M_script
21.02.2012, 12:46
Тебе поломать надо или наоборот?


$_GET['d'] =strpos($_GET['d'],'.') !==false?'default':addslashes($_GET['d']);

Isis
21.02.2012, 18:32
Тебе поломать надо или наоборот?

$_GET['d'] =strpos($_GET['d'],'.') !==false?'default':addslashes($_GET['d']);



похекать, да. Дыры новые искал в openx