Доброго времени суток. Сразу говорю, с пхп - знаком плохо.
Есть старый сайт на пхп 5,6 или меньше, но на 5.6-работает. Сайт часто взламывался через "kcfinder" + возможно были еще дыры. Залиты были шелы. Насколько мог удалил.
Перенес его на выделенный сервер (пришлось поставить там пхп 5,6). И оказалось, что код содержит в себе еще и уязвимость LFI (добрые люди помогли). )
То есть можно получить доступ к большинству файлов на Линуксе. Мне тяжело сказать, то ли это косяк в написании сайта, то ли это код "дописан" после взлома.
Если закрыть доступ настройками веб-сервера, то пол сайта не открывается.
Подскажите пожалуйста.
Одна из страниц где проблемы index.php .
Трабл вот здесь " $textFile = readFileStr($_GET['product']); ". он ссылается на utils.php, а там есть такое:
Есть старый сайт на пхп 5,6 или меньше, но на 5.6-работает. Сайт часто взламывался через "kcfinder" + возможно были еще дыры. Залиты были шелы. Насколько мог удалил.
Перенес его на выделенный сервер (пришлось поставить там пхп 5,6). И оказалось, что код содержит в себе еще и уязвимость LFI (добрые люди помогли). )
То есть можно получить доступ к большинству файлов на Линуксе. Мне тяжело сказать, то ли это косяк в написании сайта, то ли это код "дописан" после взлома.
Если закрыть доступ настройками веб-сервера, то пол сайта не открывается.
Подскажите пожалуйста.
Одна из страниц где проблемы index.php .
PHP:
?php
session_start();
//index file for products
include "../../../src_php/globalConst.php";
include "../../../src_php/dbLibrary.php";
include "../../../src_php/utils.php";
include "../../../src_php/registration/check_user.php"; // функция для проверки регистрации
include "../../../src_php/admin/DOM.php"; // для замены ссылок
readfile("../../../".HTML_RU_PATH."header.html");
readfile("../../../src_php/admin/showHide.js");
readfile("../../../".HTML_RU_PATH."menu.html");
$pathToFiles = ".";
if (isset($_GET['product']))
{
if (!empty($_GET['product']))
{
if (!empty($_GET['catId']) && !empty($_GET['name']))
echo createMenu($_GET['product'], $_GET['catId'], $_GET['name']);
//enter div here
//echo $_GET['product'];
echo '<div class="content">';
$textFile = readFileStr($_GET['product']); // ТУТ ТРАБЛ!!!!
// заменяем ссылки если не зарегистрирован
if (!check_user()){
$textFile = change_link($textFile);
}
echo $textFile;
//close div here
}
}
else
{
$conn = connectToDb();
if ($conn)
{
setNames("UTF8");
echo '<div class="content">';
echo '<h1>Каталог продукции</h1>';
echo '<div class="product_list">';
echo qProductList($conn, "user");
echo '</div>';
}
else
echo ERROR_DB_CONNECT_FAIL;
}
echo '</div>';
readfile("../../../".HTML_RU_PATH."footer.html");
function createMenu($product, $catId, $productName)
{
$output = '<div class=content_head_menu>';
$output .= '<a href="/index.php">Главная</a> → ';
$output .= '<a href="index.php">Товары</a> → ';
//$output .= '<a href="index.php?product='.$product.'&catId='.$catId.'&name='.$productName.'">'.$productName.'</a>';
$output .= $productName;
$output .= '</div>';
return $output;
}
if (check_user()){
include ("../../../".HTML_RU_PATH."reg_yes.html");
}else{
include ("../../../".HTML_RU_PATH."reg_no.html");
}
echo '<script>show_open_list();</script>';
?>
Трабл вот здесь " $textFile = readFileStr($_GET['product']); ". он ссылается на utils.php, а там есть такое:
PHP:
<?php
session_start();
include "globalConst_en.php";
//this file contains some utils that can be used from all files
//this function return true if user is entered to the system or false if not
function isSignIn()
{
//session_start();
if (isset($_SESSION['sign']))
return true;
else
return false;
}
//this file end user session and unset all session variables
function endSession()
{
//session_start();
unset($_SESSION['sign']);
session_destroy();
}
//this function save file
function saveFile($filePath, $text)
{
$fp = fopen($filePath, 'w') or die(ERROR_OPEN_FILE);
fwrite($fp, $text) or die(ERROR_WRITE_FILE);
fclose($fp);
}
//this function read file
function readFileStr($filePath)
{
$fp = fopen($filePath, 'r') or die(ERROR_OPEN_FILE);
$s = fread($fp, filesize($filePath)) or die(ERROR_READ_FILE);
fclose($fp);
return $s;
}
//this function get all files from $dirName and filter them using $filter
function getFiles($dirName, $filter)
{
$dp = openDir($dirName) or die(ERROR_OPEN_DIR);
while ($currentFile !== false)
{
$currentFile = readDir($dp);
$files[] = $currentFile;
}
return preg_grep($filter, $files);
}
?>