Jump to content
Guest werstey

Уязвимости joker board 3

Recommended Posts

Guest werstey

Всем привет. Я довольно часто использую cms доски объявлений joker board, и знаю несколько дыр. Я расскажу их вам, а если знаете что то Вы, дополните меня.

1. Самая популярная: sql inj через файл export.php

Лечения не знаю (кроме того как удалить этот файл) Кто знает, поделитесь

2. Все файлы в папке (А) общедоступны, т.е. каждый может управлять некоторыми функциями в админке не проходя авторизацию (пример - сайт.ру/a/drop_expired.php и неактуальные объявления удалены ). Лечение:

1 способ, добавить в самом верху файла запрос на авторизацию 

2 способ, переименовать их.

3 способ, удалить их (только если Вы не нуждаетесь в этих функциях)

 

Share this post


Link to post
Share on other sites
Guest werstey

1. Фильтровать данных, поступающие от пользователя

Если даете ответ, давайте конкретно!

Это тоже самое, если бы я у вас спросил "как раскрутить сайт" Вы бы мне ответили "нужно привлечь больше пользователей"  

Share this post


Link to post
Share on other sites

Достаточно конкретный ответ.

Но если хотите подробней, то несколько вариантов:

- Если передается заведомо целочисленный параметр, то и типизировать его как таковой

$id = (int)$_GET['id'];

То же самое с логическими и числами с плавающей запятой.

- Строковые данные заключать в кавычки

- Использование placeholder'ов

$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name LIKE ?");
$stmt->execute(array("%$_GET[name]%"));
$data = $stmt->fetchAll();

- Использование библиотек, в которых встроена защита от SQL Injection, к примеру IdiORM(рекомендую), либо SafeMySQL.

Share this post


Link to post
Share on other sites

1) Вместо строк:



$number=$_GET['n']; 
$cat=$_GET['c']; 
 $city=$_GET['r'];

пишем:



$number=$_GET['n']; if (!preg_match("|^[\d]+$|", $number)){exit ("неверный формат запроса");} 
$cat=$_GET['c']; if (!preg_match("|^[\d]+$|", $cat)){exit ("неверный формат запроса");} 
$city=$_GET['r']; if (!preg_match("|^[\d]+$|", $city)) {exit ("неверный формат запроса");}

2) Можно поставить дополнительную авторизацию (вверху файлов добавляем):



 $phpkd['username'] = "admin"; 
 $phpkd['password'] = "password"; 
$index['public'] = $index['public']; 

 if(!$index['public']){ 
 if($_SERVER['PHP_AUTH_USER'] != $phpkd['username'] || $_SERVER['PHP_AUTH_PW'] != $phpkd['password']){ 
 Header("WWW-Authenticate: Basic realm=\"Highly Secured\""); 
 Header("HTTP/1.0 401 Unauthorized");echo "<head><title>Unauthorized</title></head><body bgcolor='#000000'><center><br> 
 <a href=\"../index.php\" style=\"text-decoration: none\" target=\"_blank\"> 
 <font face=\"MS Sans Serif\" color=\"#FFFFFF\" size=\"8\"><b><br>Enter Here Only<br></b></a></body></html>";exit;}}

Share this post


Link to post
Share on other sites

Всем привет. Я довольно часто использую cms доски объявлений joker board, и знаю несколько дыр. Я расскажу их вам, а если знаете что то Вы, дополните меня.

1. Самая популярная: sql inj через файл export.php

Лечения не знаю (кроме того как удалить этот файл) Кто знает, поделитесь

2. Все файлы в папке (А) общедоступны, т.е. каждый может управлять некоторыми функциями в админке не проходя авторизацию (пример - сайт.ру/a/drop_expired.php и неактуальные объявления удалены ). Лечение:

1 способ, добавить в самом верху файла запрос на авторизацию 

2 способ, переименовать их.

3 способ, удалить их (только если Вы не нуждаетесь в этих функциях)

Простой способ в решении задачи)

В папке /a/ есть файл .htaccess 

В нем разрешаем доступ к данной папке только со своего IP адреса

Share this post


Link to post
Share on other sites

 

1) Вместо строк:



$number=$_GET['n']; 
$cat=$_GET['c']; 
 $city=$_GET['r'];

пишем:



$number=$_GET['n']; if (!preg_match("|^[\d]+$|", $number)){exit ("неверный формат запроса");} 
$cat=$_GET['c']; if (!preg_match("|^[\d]+$|", $cat)){exit ("неверный формат запроса");} 
$city=$_GET['r']; if (!preg_match("|^[\d]+$|", $city)) {exit ("неверный формат запроса");}

 

Каждому свое... но (как я понял с CMS не работал):

$number = intval( $_GET['n'] );
$cat = intval( $_GET['c'] ); 
$city = intval( $_GET['r'] );

if( $number < 1 || $cat < 1 || $city < 1 ){
   exit('Неверные входные параметры')
}

Как-то так, прегматчить слишком затратно)) Особенно если таких штук 1000 по всему CMS раскидано, сайт посещаем и хостинг Lite какой-нить... (сугубо мое мнение, оно может не совпадать с реальностью).

Share this post


Link to post
Share on other sites

А мне интересно а у разработчика этого скрипта на форум автор топика был? или у вас  не офф скрипт? А так  все дыры закрыты на форуме разработчика не одна тема  была про это.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...