Pull to refresh

Взлом базы данных из-за LFI

Reading time 1 min
Views 5.6K
Наверное ни для кого не секрет, что плохой код может привести к печальным последствиям. Особенно это касается сайтов. Недавно, читая статью о том, какие ошибки делают PHP-программисты, и какие уязвимости от этого появляются на сайте, наткнулся на Local File Inclusion. Меня эта уязвимость очень заинтересовала и я решил что-то поломатьпо-подробней изучить её.

После не долгих поисков наодном из форумов нашел ссылку на немецкий сайт http://www.gamecaptain.de. Сразу были замечены интересные параметры в адресной строке

image

Попробуем что-то из этого извлечь. Для начала получим исходный код index.php

image

Мы использовали преобразовывающие фильтры. Пара движений и…

image

… исходный код файла у нас!

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


if(!isset($file)) {
if(isset($_POST["file"])) {
$file = $_POST["file"];
} else if (isset($_GET["file"])) {
$file = $_GET["file"];
} else {
if(!isset($sitearea) || $sitearea == "Magazin") {
$file="aktuell.php";
} else {
$file="aktuell_downloads.php";
}
}
}


Еще один яркий пример того, как не надо подключать файлы.

Дальше, конечно, я начал искать файл с соединением с базой данных. Очевидно, что это строчка

require("includes/connect.inc.php");

Проделываем ту же операцию, которую мы делали для index.php, для includes/connect.inc.php

image

декодируем полученый base-64 набор символов и получаем информацию для подключения к базе данных

image

Коннектимся…

image

Всё!
Tags:
Hubs:
+4
Comments 16
Comments Comments 16

Articles