Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Найдите, пожалуйста, дыру в коде
 
 автор: Chicony   (30.04.2007 в 22:08)   письмо автору
 
 

Недавно взломали админку. Сайт находится в локальной сети. Вот код входа в админку:

<?
include "configuration.php";
if(isset(
$_POST['a']) && ($_POST['a']=='a')) {
mysql_connect($server$user$password);
     
mysql_select_db($mydb);
     
$ipu=$_SERVER['REMOTE_ADDR'];
     
$loginadmina=$_POST['loginadmin'];
     
$passwordadmina=$_POST['passwordadmin'];
     
$querty=mysql_query("SELECT login, pass, ip FROM admin WHERE login='".$loginadmina."' AND pass='".md5($passwordadmina)."' AND ip='".$ipu."'");
     if (!
$querty)
     echo 
"Ошибка";
     if(
mysql_num_rows($querty)>0)
     {
          
session_start();
          
$_SESSION['admin']=$loginadmina;
          
$_SESSION['ip']=$ipu;
          
$_SESSION['authorized'] = true;
          echo 
"<a href=admin.php?PHPSESSID=".session_id().">Управление сайт</a>";
          exit;
     }
     else
     {

          echo 
"Неправильный логин или пароль, или Ваш IP не совпадает";

          exit;
     }
}
else
{
?>
<form action=<?echo $_SERVER['PHP_SELF'];?> method=post>
<input type=text name=loginadmin>Логин<br>
<input type=password name=passwordadmin>Пароль<br>
<input type=hidden name=a value=a>
<input type=submit value=login>
</form>
<?
}
?>


Начало файла admin.php:


<?
session_start
();
if(empty(
$_SESSION['admin']) OR empty($_SESSION['ip']) OR empty($_SESSION['authorized']))
{
...
}
?>


В чем я ошибся? Вроде и проверка на ип и все в базе...

   
 
 автор: mr Bin   (30.04.2007 в 22:12)   письмо автору
 
   для: Chicony   (30.04.2007 в 22:08)
 

А может просто пароль стырили как-то? Я вроде ошибок не увидел...

   
 
 автор: Chicony   (30.04.2007 в 22:19)   письмо автору
 
   для: mr Bin   (30.04.2007 в 22:12)
 

Ну дело в том, что IP у всех разный. Взломали под чужым IP.

   
 
 автор: mr Bin   (30.04.2007 в 22:34)   письмо автору
 
   для: Chicony   (30.04.2007 в 22:19)
 

А, да. Ну если только ип подделали ещё :)

   
 
 автор: Бамси   (30.04.2007 в 22:27)   письмо автору
 
   для: Chicony   (30.04.2007 в 22:08)
 

У вас влючен Magic_Quetes?
А то что то я не вижу защиты от одинарной кавычки.

   
 
 автор: Unkind   (01.05.2007 в 01:29)   письмо автору
 
   для: Бамси   (30.04.2007 в 22:27)
 

Да, если magic_quotes_gpc = off, то можно послать POST'ом "loginadmin" = "Admin'--" (вместо "Admin" логин админа, естественно) и авторизация будет успешна.
Поставьте в начало кода:


<?php
if(!get_magic_quotes_gpc())  $_POST array_map("mysql_escape_string"$_POST);
?>

   
 
 автор: Chicony   (01.05.2007 в 11:17)   письмо автору
 
   для: Unkind   (01.05.2007 в 01:29)
 

спасибо за совет:)
пытался попробовать войти тем способом, который вы упомянули, но у меня ничего не получилось. возможно, я что-то неправильно делал...
ошибку исправил.
больше дыр нет?

   
 
 автор: Unkind   (01.05.2007 в 11:20)   письмо автору
 
   для: Chicony   (01.05.2007 в 11:17)
 

На данной странице - нет.

   
 
 автор: Trianon   (01.05.2007 в 11:29)   письмо автору
 
   для: Unkind   (01.05.2007 в 11:20)
 

В данном файле нет.
Есть ли на странице - изрядно зависит от содержимого файла configuration.php

   
 
 автор: Chicony   (01.05.2007 в 14:07)   письмо автору
 
   для: Trianon   (01.05.2007 в 11:29)
 

в конфигурационном файле только адрес базы, имя и пароль.
спасибо всем за помощь

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования