Показать сообщение отдельно

  #3  
Старый 13.11.2011, 11:38
XAMEHA
Новичок
Регистрация: 15.05.2010
Сообщений: 0
С нами: 8417113

Репутация: 0
По умолчанию

Пример с is_numeric​
Как то недавно объяснял одному хорошему амину смысл заключения уязвимости. Он не поверил, пока он не попросил залить шелл. В теме приведён упрощённый пример.

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]"[/COLOR][COLOR="#007700"];

while ([/COLOR][COLOR="#0000BB"]$v[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]mysql_fetch_row[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$res[/COLOR][COLOR="#007700"]))

{

[/COLOR][COLOR="#0000BB"]$opros[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]rest[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$v[/COLOR][COLOR="#007700"]);

[/COLOR][COLOR="#0000BB"]$sql[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]"SELECT count(*) FROM `vote` WHERE opros =[/COLOR][COLOR="#0000BB"]$opros[/COLOR][COLOR="#DD0000"]"[/COLOR][COLOR="#007700"];

[/COLOR][COLOR="#0000BB"]$op[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]rest[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]mysql_fetch_array[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]mysql_query[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$sql[/COLOR][COLOR="#007700"])));

echo
[/COLOR][COLOR="#DD0000"]"На опрос[/COLOR][COLOR="#0000BB"]$opros[/COLOR][COLOR="#DD0000"]было зачисленно[/COLOR][COLOR="#0000BB"]$op[/COLOR][COLOR="#DD0000"]голосов\n"[/COLOR][COLOR="#007700"];

}

} else[/COLOR][COLOR="#DD0000"]'ERROR!!!'[/COLOR][COLOR="#007700"];

include
([/COLOR][COLOR="#DD0000"]'/conf/end.php'[/COLOR][COLOR="#007700"]);

[/COLOR][COLOR="#0000BB"]?>[/COLOR]

[/COLOR] 
Самый типичный пример. Рассмотрим проверку - isset, is_numeric - первое опасности не имеет, второе, как некоторые думают защищает данный скрипт. Но вот что делает функция is_numeric - определяет, является ли переменная числом или числовой строкой. Ну и соответственно она пропускает строку 0x....

Далее поле, в которое MySQL записало знаение, извлечённое из HEX дальше используеться в запросе SELECT opros FROM `vote` GROUP BY `opros`, данные из которого используются далее - SELECT count(*) FROM `vote` WHERE opros = $opros, где $opros - это значение извлечённое из HEX где мы и сможем реализовать SQL-inj.

Php Multipleupload Overwrite - Перевод ​

PHP - Загрузка файлов:

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]









[/COLOR][/COLOR
$ FILES var_dump:

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]array([/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"]) {

[[/COLOR][COLOR="#DD0000"]"file"[/COLOR][COLOR="#007700"]]=>

array
([/COLOR][COLOR="#0000BB"]5[/COLOR][COLOR="#007700"]) {

[[/COLOR][COLOR="#DD0000"]"name"[/COLOR][COLOR="#007700"]]=>

[/COLOR][COLOR="#0000BB"]string[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]8[/COLOR][COLOR="#007700"])[/COLOR][COLOR="#DD0000"]"file.txt"

[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]"type"[/COLOR][COLOR="#007700"]]=>

[/COLOR][COLOR="#0000BB"]string[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]10[/COLOR][COLOR="#007700"])[/COLOR][COLOR="#DD0000"]"text/plain"

[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]"tmp_name"[/COLOR][COLOR="#007700"]]=>

[/COLOR][COLOR="#0000BB"]string[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]14[/COLOR][COLOR="#007700"])[/COLOR][COLOR="#DD0000"]"/tmp/phpESrNkj"

[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]"error"[/COLOR][COLOR="#007700"]]=>

[/COLOR][COLOR="#0000BB"]int[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"])

[[/COLOR][COLOR="#DD0000"]"size"[/COLOR][COLOR="#007700"]]=>

[/COLOR][COLOR="#0000BB"]int[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]6[/COLOR][COLOR="#007700"])

}

}

[/COLOR][/COLOR
1. Мульти загрузка файлов:

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]











[/COLOR][/COLOR
$ FILES print_r:

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]Array

(

[[/COLOR][COLOR="#0000BB"]file[/COLOR][COLOR="#007700"]] => Array

(

[[/COLOR][COLOR="#0000BB"]name[/COLOR][COLOR="#007700"]] => Array

(

[[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"]] =>[/COLOR][COLOR="#0000BB"]file[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]txt

[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"]] =>[/COLOR][COLOR="#0000BB"]file2[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]txt

[/COLOR][COLOR="#007700"])

[[/COLOR][COLOR="#0000BB"]type[/COLOR][COLOR="#007700"]] => Array

(

[[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"]] =>[/COLOR][COLOR="#0000BB"]text[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]plain

[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"]] =>[/COLOR][COLOR="#0000BB"]text[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]plain

[/COLOR][COLOR="#007700"])

[[/COLOR][COLOR="#0000BB"]tmp_name[/COLOR][COLOR="#007700"]] => Array

(

[[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"]] => /[/COLOR][COLOR="#0000BB"]tmp[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]phpcrDN2U

[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"]] => /[/COLOR][COLOR="#0000BB"]tmp[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]phpdQqsUR

[/COLOR][COLOR="#007700"])

[[/COLOR][COLOR="#0000BB"]error[/COLOR][COLOR="#007700"]] => Array

(

[[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"]] =>[/COLOR][COLOR="#0000BB"]0

[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"]] =>[/COLOR][COLOR="#0000BB"]0

[/COLOR][COLOR="#007700"])

[[/COLOR][COLOR="#0000BB"]size[/COLOR][COLOR="#007700"]] => Array

(

[[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"]] =>[/COLOR][COLOR="#0000BB"]6

[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"]] =>[/COLOR][COLOR="#0000BB"]10

[/COLOR][COLOR="#007700"])

)

)

[/COLOR][/COLOR
После изучения исходных кодов движков оказалось, что разработчики используют примерно такой код:

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"][/COLOR][COLOR="#0000BB"]$name[/COLOR][COLOR="#007700"]) {

if
([/COLOR][COLOR="#0000BB"]$_FILES[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]"file"[/COLOR][COLOR="#007700"]][[/COLOR][COLOR="#DD0000"]"size"[/COLOR][COLOR="#007700"]][[/COLOR][COLOR="#0000BB"]$key[/COLOR][COLOR="#007700"]]>[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"]&&[/COLOR][COLOR="#0000BB"]$_FILES[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]"file"[/COLOR][COLOR="#007700"]][[/COLOR][COLOR="#DD0000"]"size"[/COLOR][COLOR="#007700"]][[/COLOR][COLOR="#0000BB"]$key[/COLOR][COLOR="#007700"]][/COLOR]

[/COLOR
2. Исходя из различных тестов и изучений исходных кодов PHP я понял то, что мы можем подменивать информацию в этом массиве и получать доступ с использованием безопасных скриптов.

php-5.3.5\main\rfc1867.c:

PHP код:
[COLOR="#000000"][COLOR="#0000BB"]is_arr_upload[/COLOR][COLOR="#007700"]= ([/COLOR][COLOR="#0000BB"]start_arr[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]strchr[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]param[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"][/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"][/COLOR][COLOR="#007700"])) && ([/COLOR][COLOR="#0000BB"]param[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]strlen[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]param[/COLOR][COLOR="#007700"])-[/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"]] ==[/COLOR][COLOR="#0000BB"][/COLOR][COLOR="#007700"]][/COLOR][COLOR="#0000BB"][/COLOR][COLOR="#007700"]);

if
([/COLOR][COLOR="#0000BB"]is_arr_upload[/COLOR][COLOR="#007700"]) {

[/COLOR][COLOR="#0000BB"]array_len[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]strlen[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]start_arr[/COLOR][COLOR="#007700"]);

if
([/COLOR][COLOR="#0000BB"]array_index[/COLOR][COLOR="#007700"]) {

[/COLOR][COLOR="#0000BB"]efree[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]array_index[/COLOR][COLOR="#007700"]);

}

[/COLOR][COLOR="#0000BB"]array_index[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]estrndup[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]start_arr[/COLOR][COLOR="#007700"]+[/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]array_len[/COLOR][COLOR="#007700"]-[/COLOR][COLOR="#0000BB"]2[/COLOR][COLOR="#007700"]);

}

(...)

[/COLOR][COLOR="#0000BB"]abuf[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]estrndup[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]param[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]strlen[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]param[/COLOR][COLOR="#007700"])-[/COLOR][COLOR="#0000BB"]array_len[/COLOR][COLOR="#007700"]);

[/COLOR][/COLOR
...

[/PHP]

if (is_arr_upload) {

snprintf(lbuf, llen, "%s[type][%s]", abuf, array_index);

} else {

snprintf(lbuf, llen, "%s[type]", param);

}

register_http_post_files_variable(lbuf, cd, http_post_files, 0 TSRMLS_CC);

[/PHP]

Исходя из данного кода, когда мы отправляем эту форму:

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]











[/COLOR][/COLOR
Мы получаем:

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]Array

(

[[/COLOR][COLOR="#0000BB"]file[/COLOR][COLOR="#007700"]] => Array

(

[[/COLOR][COLOR="#0000BB"]name[/COLOR][COLOR="#007700"]] => Array

(

[[[/COLOR][COLOR="#0000BB"]size[/COLOR][COLOR="#007700"]] =>[/COLOR][COLOR="#0000BB"]file[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]txt

[/COLOR][COLOR="#007700"])

[[/COLOR][COLOR="#0000BB"]type[/COLOR][COLOR="#007700"]] => Array

(

[[[/COLOR][COLOR="#0000BB"]size[/COLOR][COLOR="#007700"]] =>[/COLOR][COLOR="#0000BB"]text[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]plain

[/COLOR][COLOR="#007700"])

[[/COLOR][COLOR="#0000BB"]tmp_name[/COLOR][COLOR="#007700"]] => Array

(

[[[/COLOR][COLOR="#0000BB"]size[/COLOR][COLOR="#007700"]] => /[/COLOR][COLOR="#0000BB"]tmp[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]php537jRI

[/COLOR][COLOR="#007700"])

[[/COLOR][COLOR="#0000BB"]error[/COLOR][COLOR="#007700"]] => Array

(

[[[/COLOR][COLOR="#0000BB"]size[/COLOR][COLOR="#007700"]] =>[/COLOR][COLOR="#0000BB"]0

[/COLOR][COLOR="#007700"])

[[/COLOR][COLOR="#0000BB"]size[/COLOR][COLOR="#007700"]] => Array

(

[[[/COLOR][COLOR="#0000BB"]size[/COLOR][COLOR="#007700"]] =>[/COLOR][COLOR="#0000BB"]10

[/COLOR][COLOR="#007700"][[[/COLOR][COLOR="#0000BB"]name[/COLOR][COLOR="#007700"]] =>[/COLOR][COLOR="#0000BB"]file2[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]txt

[/COLOR][COLOR="#007700"][[[/COLOR][COLOR="#0000BB"]type[/COLOR][COLOR="#007700"]] =>[/COLOR][COLOR="#0000BB"]text[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]plain

[/COLOR][COLOR="#007700"][[[/COLOR][COLOR="#0000BB"]tmp_name[/COLOR][COLOR="#007700"]] => /[/COLOR][COLOR="#0000BB"]tmp[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]phpxktZ4e

[/COLOR][COLOR="#007700"][[[/COLOR][COLOR="#0000BB"]error[/COLOR][COLOR="#007700"]] =>[/COLOR][COLOR="#0000BB"]0

[/COLOR][COLOR="#007700"])

)

)

[/COLOR][/COLOR
Таким образом мы загружаем file.txt, но с размером file2.txt!

Таким образом мы можем подменить значение нужных нам переменных и совершить ействия с произвольными файлами. Но это только без проверки загрузки файла и использования move_uploaded_file.

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"][/COLOR][COLOR="#0000BB"]$name[/COLOR][COLOR="#007700"]) {

if
([/COLOR][COLOR="#0000BB"]$_FILES[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]"file"[/COLOR][COLOR="#007700"]][[/COLOR][COLOR="#DD0000"]"size"[/COLOR][COLOR="#007700"]][[/COLOR][COLOR="#0000BB"]$key[/COLOR][COLOR="#007700"]]>[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"]&&[/COLOR][COLOR="#0000BB"]$_FILES[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]"file"[/COLOR][COLOR="#007700"]][[/COLOR][COLOR="#DD0000"]"size"[/COLOR][COLOR="#007700"]][[/COLOR][COLOR="#0000BB"]$key[/COLOR][COLOR="#007700"]]













[/COLOR][/COLOR
Массив примет значение:

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]Array

(

[[/COLOR][COLOR="#0000BB"]file[/COLOR][COLOR="#007700"]] => Array

(

[[/COLOR][COLOR="#0000BB"]tmp_name[/COLOR][COLOR="#007700"]] => Array

(

[[[/COLOR][COLOR="#0000BB"]name[/COLOR][COLOR="#007700"]] =>[/COLOR][COLOR="#0000BB"]file[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]txt

[/COLOR][COLOR="#007700"][[[/COLOR][COLOR="#0000BB"]type[/COLOR][COLOR="#007700"]] =>[/COLOR][COLOR="#0000BB"]text[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]plain

[/COLOR][COLOR="#007700"][[[/COLOR][COLOR="#0000BB"]tmp_name[/COLOR][COLOR="#007700"]] => /[/COLOR][COLOR="#0000BB"]tmp[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]phpOQsK9O

[/COLOR][COLOR="#007700"][[[/COLOR][COLOR="#0000BB"]error[/COLOR][COLOR="#007700"]] =>[/COLOR][COLOR="#0000BB"]0

[/COLOR][COLOR="#007700"][[[/COLOR][COLOR="#0000BB"]size[/COLOR][COLOR="#007700"]] =>[/COLOR][COLOR="#0000BB"]6

[/COLOR][COLOR="#007700"])

[[/COLOR][COLOR="#0000BB"]size[/COLOR][COLOR="#007700"]] => Array

(

[[[/COLOR][COLOR="#0000BB"]name[/COLOR][COLOR="#007700"]] =>[/COLOR][COLOR="#0000BB"]file2[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]txt

[/COLOR][COLOR="#007700"][[[/COLOR][COLOR="#0000BB"]type[/COLOR][COLOR="#007700"]] =>[/COLOR][COLOR="#0000BB"]text[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]plain

[/COLOR][COLOR="#007700"][[[/COLOR][COLOR="#0000BB"]tmp_name[/COLOR][COLOR="#007700"]] => /[/COLOR][COLOR="#0000BB"]tmp[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]phpHCcJwD

[/COLOR][COLOR="#007700"][[[/COLOR][COLOR="#0000BB"]error[/COLOR][COLOR="#007700"]] =>[/COLOR][COLOR="#0000BB"]0

[/COLOR][COLOR="#007700"][[[/COLOR][COLOR="#0000BB"]size[/COLOR][COLOR="#007700"]] =>[/COLOR][COLOR="#0000BB"]10

[/COLOR][COLOR="#007700"])

[[/COLOR][COLOR="#0000BB"]name[/COLOR][COLOR="#007700"]] => Array

(

[[[/COLOR][COLOR="#0000BB"]name[/COLOR][COLOR="#007700"]] =>[/COLOR][COLOR="#0000BB"]file3[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]txt

[/COLOR][COLOR="#007700"][[[/COLOR][COLOR="#0000BB"]type[/COLOR][COLOR="#007700"]] =>[/COLOR][COLOR="#0000BB"]text[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]plain

[/COLOR][COLOR="#007700"][[[/COLOR][COLOR="#0000BB"]tmp_name[/COLOR][COLOR="#007700"]] => /[/COLOR][COLOR="#0000BB"]tmp[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]phpWzwITr

[/COLOR][COLOR="#007700"][[[/COLOR][COLOR="#0000BB"]error[/COLOR][COLOR="#007700"]] =>[/COLOR][COLOR="#0000BB"]0

[/COLOR][COLOR="#007700"][[[/COLOR][COLOR="#0000BB"]size[/COLOR][COLOR="#007700"]] =>[/COLOR][COLOR="#0000BB"]9

[/COLOR][COLOR="#007700"])

)

)

[/COLOR][/COLOR
Взглянем на первый файл:

PHP код:
[COLOR="#000000"][COLOR="#0000BB"]$_FILES[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'name'[/COLOR][COLOR="#007700"]][[/COLOR][COLOR="#DD0000"]'[name'[/COLOR][COLOR="#007700"]]=[/COLOR][COLOR="#DD0000"]'file.txt'[/COLOR][COLOR="#007700"];

[/COLOR][COLOR="#0000BB"]$_FILES[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'size'[/COLOR][COLOR="#007700"]][[/COLOR][COLOR="#DD0000"]'[name'[/COLOR][COLOR="#007700"]]=[/COLOR][COLOR="#0000BB"]123[/COLOR][COLOR="#007700"];

[/COLOR][COLOR="#0000BB"]$_FILES[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'tmp_name'[/COLOR][COLOR="#007700"]][[/COLOR][COLOR="#DD0000"]'[name'[/COLOR][COLOR="#007700"]]=[/COLOR][COLOR="#DD0000"]'index.php'[/COLOR][COLOR="#007700"];

[/COLOR][/COLOR
Таким образом мы меняем tmp_name на нужную нам информацию.

Для того, что бы исправить данную уязвимость PHP должен отсеивать файлы, заканчивающиеся на [ и т. д. Эту уязвимость следует ещё доработать для последующего использования. Это будет произведено за рамками этой части. Исходный текст: https://students.mimuw.edu.pl/~ai292615/php_multipleupload_overwrite.pdf

Данная уязвимость исправлена в PHP 5.3.7:



Возможность подстановки части файлового пути из-за некорректного очищения в функции rfc1867_post_handler имен файлов, передаваемых через multipart/form-data POST-запросы. Атакующий может изменить заданный логикой приложения абсолютный путь и создать или переписать произвольные файлы (CVE-2011-2202); ​

Ещё одна уязвимость того автора — HEAD. - https://students.mimuw.edu.pl/~ai292615/php_head_trick.pdf

Так как в этой части статьи мы рассматриваем не только авторские материалы, но и материалы других пользователей нам не помешает познакомиться(Для тех кто ещё не познакомился) с неравно-опубликованными паблик уязвимостей.

Перевод темы: https://rdot.org/forum/showthread.php?t=1330
 
Ответить с цитированием