Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Как защитить admin.php
цитата
08/01/16 в 16:50
 Int13h
Есть трейд скрипт, злоумышленник постит трейдера в виде JS утягивающего куки, далее когда овнер заходит в админку, злоумышленник перехватывая куки, сам заходит в admin.php и заливает шелл. Можно конечно права на темплейты ставить, только чтение, но это крайний выход.
Вопрос, как защитить admin.php - допилить самому нереал, файл под ioncube.
Если бы была папка /admin/ можно было бы закрыть htpasswd или .htaccess по IP.
А как быть с файлом admin.php.
цитата
08/01/16 в 16:56
 ibiz
htaccess позволяет закрыть один файл admin.php по IP
цитата
08/01/16 в 17:00
 andreich
<Files "admin.php"> 
  Order Deny,Allow
  Deny from all
Allow from ххх.ххх.ххх.ххх
</Files>
цитата
08/01/16 в 17:02
 Int13h
всем спасибо за решение smail04.gif
цитата
08/01/16 в 18:03
 Stek
Int13h писал:
злоумышленник постит трейдера в виде JS утягивающего куки, далее когда овнер заходит в админку, злоумышленник перехватывая куки, сам заходит в admin.php и заливает шелл.

в смысле постит трейдера перехватывающего куки ?
цитата
08/01/16 в 18:32
 EvGenius
да видимо просто данные, которые может постить кто-угодно, даже не обрамляются в какой-нибудь htmlspecialchars()
и видимо отправляется например в качестве имени трейдера что-то типа <script></script> в котором берутся куки и отправляются на домен злоумышленника.
дальше владелец с админки заходит в список трейдеров и у него исполняется эта ява.
потом злодей, получив куки владельца, в своем браузере подставляет их и заходит в admin.php как будто он авторизован.

а вот этот пост новых трейдеров также происходит через зашифрованное в ioncube что-то?

как вариант еще соорудить дополнительный скрипт, который будет проходиться по всем данным в базе с трейдерами и удалять к примеру все что не цифра и не буква.
цитата
08/01/16 в 18:49
 Int13h
Stek: -
обходит фильтр входящих данных, а именно (мыло трейдера), не проверяет скрипт. Через webmasters.php. в результате, злоумышленник постит JS, который эксплуатирует XSS уязвимость. При заходе овнера в админку, выполняется JS, передающих cookies, снифятся, используя их злоумышленник проникает в админку.
Что то подобное. http://habrahabr.ru/post/129173/

EvGenius - нет, просто если не ioncube, можно было бы webmasters.php допилить проверку входящих данных, да и admin.php можно было через $_SERVER['REMOTE_ADDR'] блокировать.

Но уже посоветовали метод защиты админки icon_wink.gif
цитата
08/01/16 в 19:46
 Diablo
а что за скрипт? может проще разработчику скинуть, чтоб пофиксил icon_rolleyes.gif
цитата
08/01/16 в 23:05
 johndoe2
Закрытие входа в админку не решает проблему полностью, т.к. враги могут и дальше постить трейдеров и запускать в браузере админа произвольный js, когда он будет заходить на admin.php.
цитата
08/01/16 в 23:10
 Stek
Как вариант обернуть добавления трейдеров в обертку другого скрипта.
Т.е. что то вроде:

Код:
<?php
// чистим $_POST $_GET массивы, удаляя оттуда весь мусор
include('old_sad_dtrader.php');
цитата
09/01/16 в 00:12
 Sarn
нужно зафильтровать спецсимволы в переменной поля с мылом
htmlspecialchars
но я помню там был какой то подвох и нужно долго копать чтоб правильно без косяков фильтровать формы.
вообще ограничение по ип верный способ! smail101.gif
цитата
09/01/16 в 01:38
 Axel-B
Может в htacсess попробовать запихнуть следующее

      <IfModule mod_rewrite.c>
         RewriteEngine On
      
         # Rules to block unneeded HTTP methods
         RewriteCond %{REQUEST_METHOD} ^(TRACE|DELETE|TRACK) [NC]
         RewriteRule ^(.*)$ - [F]
      
         # Rules to block suspicious URIs
         RewriteCond %{QUERY_STRING} \.\.\/ [NC,OR]
         RewriteCond %{QUERY_STRING} ^.*\.(bash|git|hg|log|svn|swp|cvs) [NC,OR]
         RewriteCond %{QUERY_STRING} etc/passwd [NC,OR]
         RewriteCond %{QUERY_STRING} boot\.ini [NC,OR]
         RewriteCond %{QUERY_STRING} ftp\:  [NC,OR]
         RewriteCond %{QUERY_STRING} http\:  [NC,OR]
         RewriteCond %{QUERY_STRING} https\:  [NC,OR]
         RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
         RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [NC,OR]
         RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [NC,OR]
         RewriteCond %{QUERY_STRING} ^.*(%24&x).* [NC,OR]
         RewriteCond %{QUERY_STRING} ^.*(127\.0).* [NC,OR]
         RewriteCond %{QUERY_STRING} ^.*(globals|encode|localhost|loopback).* [NC,OR]
         RewriteCond %{QUERY_STRING} ^.*(request|concat|insert|union|declare).* [NC]
         RewriteCond %{QUERY_STRING} !^loggedout=true
         RewriteCond %{QUERY_STRING} !^action=jetpack-sso
         RewriteCond %{QUERY_STRING} !^action=rp
         RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$
         RewriteCond %{HTTP_REFERER} !^http://maps\.googleapis\.com(.*)$
         RewriteRule ^(.*)$ - [F]
      
         # Rules to block foreign characters in URLs
         RewriteCond %{QUERY_STRING} ^.*(%0|%A|%B|%C|%D|%E|%F).* [NC]
         RewriteRule ^(.*)$ - [F]
      
         # Rules to help reduce spam
         RewriteCond %{REQUEST_METHOD} POST
         RewriteCond %{REQUEST_URI} ^(.*)wp-comments-post\.php*
         RewriteCond %{HTTP_REFERER} !^(.*)domain.com.*
         RewriteCond %{HTTP_REFERER} !^http://jetpack\.wordpress\.com/jetpack-comment/ [OR]
         RewriteCond %{HTTP_USER_AGENT} ^$
         RewriteRule ^(.*)$ - [F]
      </IfModule>
цитата
09/01/16 в 01:41
 Int13h
Stek: - интересный изящный метод smail54.gif данные с формы post action -> $PHP_SELF , начало кода фильтрует POST данные, далее отрабатывает заинклуженный дырявый скрипт, отправляет "чистые" данные в трейд базу, выводит трейд линк. И тут даже при удалённом POST запросе, не получится запихнуть, не зная новое имя обработчика формы с уязвимостью.

Diablo - GB продукты http://www.gbscript.com/ , да древние, уже не поддерживаются, но "боевые" скрипты, тот же GB TOP, уступает только DF Pro,если не брать тот же смарт и тп современные CJ скрипты в роли Топа.
цитата
09/01/16 в 03:17
 johndoe2
Stek писал:

Как вариант обернуть добавления трейдеров в обертку другого скрипта.
Т.е. что то вроде:

Код:
<?php
// чистим $_POST $_GET массивы, удаляя оттуда весь мусор
include('old_sad_dtrader.php');



Это и имел в виду. Только старый файл нужно не просто переименовывать, а закрывать полностью.

new.php
Код:

<?php
define('__INNER_CALL__', 1);
//удаляем мусор из $_GET, $_POST ...
require('old.php');


old.php
Код:

<?php
if (!defined('__INNER_CALL__')) exit;
//дальше старый код без изменений
цитата
09/01/16 в 04:21
 CABMIT
Вообще конечно это косяк автора скрипта. Надо экранировать данные для вывода, а для сессий делать проверку по IP и ставить HTTP-only куки
цитата
11/01/16 в 21:35
 pipez
Stek писал:
Как вариант обернуть добавления трейдеров в обертку другого скрипта.
Т.е. что то вроде:

Код:
<?php
// чистим $_POST $_GET массивы, удаляя оттуда весь мусор
include('old_sad_dtrader.php');


webmasters.php проверяет там имя скрипта и если оно old_sad_dtrader.php не работает.

я закрывал webmasters.php в htacces для всех айпи кроме сервера и делал свою форму трейда которая проверяет входящие данные и потом курлом добавляет трейдера в старую форму
цитата
11/01/16 в 22:11
 Stek
Что же это за скрипт такой, где не озабитились проверить входящие данные, но зато параноят на "а вдруг меня спиздят".
цитата
12/01/16 в 00:42
 Evial
Чуть вшые писали что это GB продукты http://www.gbscript.com/
цитата
23/01/16 в 01:36
 cherchell2010
переименуй admin.php в admin_huy_vam_dostup.php
smail101.gif


Эта страница в полной версии