@No4NaMe

Как удалить уязвимость в скрипте админке?

Имеется скрипт админки в нём я обнаружил странную строчку "KOBA", подскажите является ли данный код уязвимостью для админки?
$passw = md5("KOBA".TextSave(@$_POST['password']).md5(TextSave(@$_POST['password'])));


Удалил строчку "KOBA" теперь админка перестала работать логин и пароль не верный...

код скрипта
<?php
if (!file_exists(dirname(__FILE__) . '/system.php')) {
	echo '<pre>';
	echo 'Ошибка! Файл system.php не найден!';
	echo '</pre>';
	die;
}

define('TKM', true);
require_once dirname(__FILE__) . '/system.php';

if(!$config['main']['installed']) {
	exit(header("Location: install.php"));
}

if (isset($_SESSION['authsession'])) {
	$authsession = explode("|", $_SESSION['authsession']);
	if (!isset($authsession['0']) ||
		!isset($authsession['1']) ||
		!isset($authsession['2'])
	) {
		unset($_SESSION['authsession']);
		exit(header("Location: cpanel.php"));
	}

	$row = $link->prepare("SELECT * FROM `AD_ADMINS` WHERE `login` = ? AND `password` = ?");
	$row->execute(array($authsession['0'], $authsession['1']));

	if ($row) {
		$row = $row->fetch(PDO::FETCH_ASSOC);
	}

	if (empty($row['login']) || $authsession['2'] != $row['ip']) {
		unset($_SESSION['authsession']);
		exit(header("Location: cpanel.php"));
	}

	$user = array(
		"login" => $row['login'],
		"ip" => $row['ip'],
	);

	if (isset($_GET['do']) && $_GET['do'] == "logout") {
		unset($_SESSION['authsession']);
		MessageSend(3, "Вы успешно вышли из аккаунта!", 'cpanel.php');
	}

	$page = array(
		"title"   => 'default',
		"pid"     => 'default',
		"content" => 'default',
	);

	if (isset($_GET['mode'])) {
		if (!file_exists(LD_ROOT_DIR . "/amodes/{$_GET['mode']}.php")) {
			$mode = 'info';
		} else {
			$mode = $_GET['mode'];
		}
	} else {
		$mode = 'info';
	}

	require LD_ROOT_DIR . '/amodes/' . $mode .'.php';

	include LD_STYLE_DIR . '/admin/index.html';
} else {
	if (isset($_GET['do']) && $_GET['do'] == "login") {
		$login = TextSave(@$_POST['login']);
		$passw = TextSave(@$_POST['password']);

		if (empty($login) OR empty($passw))	{
			MessageSend(1, "Заполните все поля формы!");
		} else {
			$passw = md5("KOBA".TextSave(@$_POST['password']).md5(TextSave(@$_POST['password'])));

			$row = $link->prepare("SELECT * FROM `AD_ADMINS` WHERE `login` = ? AND `password` = ?");
			$row->execute(array($login, $passw));

			if ($row) {
				$row = $row->fetch(PDO::FETCH_ASSOC);
			}

			if (empty($row['login'])) {
				MessageSend(1, "Неверный логин/пароль!");
			}

			$link->prepare("UPDATE `AD_ADMINS` SET `ip` = '".getIP()."' WHERE `login` = '{$login}'")->execute();

			$_SESSION['authsession'] = $row['login'] . "|" . $row['password'] . "|" . getIP();
			MessageSend(3, "Успешная авторизация!");
		}
	}

	require LD_STYLE_DIR . '/admin/auth.html';
}
  • Вопрос задан
  • 129 просмотров
Решения вопроса 2
@NinjaNickName
Web разработчик
Верни обратно, это похоже соль.

Но вообще пора бы уже использовать для паролей password_hash
Ответ написан
Комментировать
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Верните строчку на место, и не делайте так больше!
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы