PDA

Просмотр полной версии : На сколько надежна такая защита?


SKYDOS
30.01.2009, 23:07
привет всем
тут я новенький. ) с кем не знаком с радостью познакомлюсь.

вопрос:
популярным типом взлома сайтов являются Sql Inj
пишут для них моды вроде этих

<?php
if(!defined('IN_TRACKER')) die('Hacking attempt!');
// Cracker Tracker Protection System // Created by: Christian Knerr - www.cback.de
// phpBB Users: Please use our complete phpBB2 Mod!
// Version: 2.0.0 // // License: GPL // // // Begin CrackerTracker StandAlone //
$cracktrack = $_SERVER['QUERY_STRING'];

$wormprotector = array('chr(', 'chr=', 'chr%20', '%20chr', 'wget%20', '%20wget', 'wget(', 'cmd=', '%20cmd', 'cmd%20', 'rush=', '%20rush', 'rush%20', 'union%20', '%20union', 'union(', 'union=', 'echr(', '%20echr', 'echr%20', 'echr=', 'esystem(', 'esystem%20', 'cp%20', '%20cp', 'cp(', 'mdir%20', '%20mdir', 'mdir(', 'mcd%20', 'mrd%20', 'rm%20', '%20mcd', '%20mrd', '%20rm', 'mcd(', 'mrd(', 'rm(', 'mcd=', 'mrd=', 'mv%20', 'rmdir%20', 'mv(', 'rmdir(', 'chmod(', 'chmod%20', '%20chmod', 'chmod(', 'chmod=', 'chown%20', 'chgrp%20', 'chown(', 'chgrp(', 'locate%20', 'grep%20', 'locate(', 'grep(', 'diff%20', 'kill%20', 'kill(', 'killall', 'passwd%20', '%20passwd', 'passwd(', 'telnet%20', 'vi(', 'vi%20', 'insert%20into', 'select%20', 'nigga(', '%20nigga', 'nigga%20', 'fopen', 'fwrite', '%20like', 'like%20', '$_request', '$_get', '$request', '$get', '.system', 'HTTP_PHP', '&aim', '%20getenv', 'getenv%20', 'new_password', '&icq','/etc/password','/etc/shadow', '/etc/groups', '/etc/gshadow', 'HTTP_USER_AGENT', 'HTTP_HOST', '/bin/ps', 'wget%20', 'uname\x20-a', '/usr/bin/id', '/bin/echo', '/bin/kill', '/bin/', '/chgrp', '/chown', '/usr/bin', 'g\+\+', 'bin/python', 'bin/tclsh', 'bin/nasm', 'perl%20', 'traceroute%20', 'ping%20', '.pl', '/usr/X11R6/bin/xterm', 'lsof%20', '/bin/mail', '.conf', 'motd%20', 'HTTP/1.', '.inc.php', 'config.php', 'cgi-', '.eml', 'file\://', 'window.open', '<script>', 'javascript\://','img src', 'img%20src','.jsp','ftp.exe', 'xp_enumdsn', 'xp_availablemedia', 'xp_filelist', 'xp_cmdshell', 'nc.exe', '.htpasswd', 'servlet', '/etc/passwd', 'wwwacl', '~root', '~ftp', '.js', '.jsp', 'admin_', '.history', 'bash_history', '.bash_history', '~nobody', 'server-info', 'server-status', 'reboot%20', 'halt%20', 'powerdown%20', '/home/ftp', '/home/www', 'secure_site, ok', 'chunked', 'org.apache', '/servlet/con', '<script', '/robot.txt' ,'/perl' ,'mod_gzip_status', 'db_mysql.inc', '.inc', 'select%20from', 'select from', 'drop%20', '.system', 'getenv', 'http_', '_php', 'php_', 'phpinfo()', '<?php', '?>', 'sql=');

$checkworm = str_replace($wormprotector, '*', $cracktrack);
if ($cracktrack != $checkworm) {
$cremotead = $_SERVER['REMOTE_ADDR'];
$cuseragent = $_SERVER['HTTP_USER_AGENT'];
die( "<font color=red><strong>Oi blea ti menea pitaissea vzlomati? Ia tebe dam suka</strong></font> <br /><br /><b>Mi zapisali tvoi dannie, skoro priidut paru liudei i viibut tebea v jopu:</b><br />$cremotead - $cuseragent" ); }

ну вобщем я считаю, что это ерунда
недавно пришла идейка по более надежной защите от скл инж, сводящей на нет всякие ущрения хацкеров.

что если использовать рег выражения при проверке урл адреса?

ну вот допустим что переменная value содержит данные введенные пользователем, пусть например в ней должно храниться что-то вроде аськиного номера.

var newReg = new RegExp ("^[0-9]{1,10}$","i");

попробуйте обмануть рег выражение. :D

что думаете по-поводу вышеизложенного?

спасибо всем за внимание, и если что не так приношу свои извинения.

herfleisch
30.01.2009, 23:37
Думаю, что это далеко не новый метод...

ShAnKaR
30.01.2009, 23:46
для этого существует mod_security http://www.modsecurity.org/

SKYDOS
30.01.2009, 23:51
для этого существует mod_security http://www.modsecurity.org/

мод то существует, но какой процент им пользуется?

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

AFoST
31.01.2009, 00:35
например
$trusted = preg_replace('/union/' , '' , $_GET[id]);
можно обойти
1)index.php?id=uNiOn

ставим независимость регистра
$trusted = preg_replace('/union/i' , '' , $_GET[id]);
все равно можно обойти
2)index.php?id=ununionion

ShAnKaR
31.01.2009, 00:53
http://forum.antichat.ru/threadnav30641-1-10.html

SKYDOS
31.01.2009, 00:58
например
$trusted = preg_replace('/union/' , '' , $_GET[id]);
можно обойти
1)index.php?id=uNiOn

ставим независимость регистра
$trusted = preg_replace('/union/i' , '' , $_GET[id]);
все равно можно обойти
2)index.php?id=ununionion

ну вот вы написали ИД= чему-то там, по сути ИД - типа инт
значит и проверка только на числа
если же например будет такое (что-то вроде):
index.php?action=union+delete+select&id=123
то параметр action можно проверить из нескольких СУЩЕУСТВУЮЩИХ и ВОЗМОЖНЫХ вариантов типа:
delete||add||post а все другие варианты заменять на один из них, или просто die;

SKYDOS
31.01.2009, 01:02
http://forum.antichat.ru/threadnav30641-1-10.html

спасибо, но я ознакомился с этой темой из более лучшего источника:
http://www.phpfaq.ru/slashes

ShAnKaR
31.01.2009, 01:05
ну а зачем тогда регулярные выражения?

Jokester
31.01.2009, 01:07
спасибо, но я ознакомился с этой темой из более лучшего источника:
http://www.phpfaq.ru/slashes
Ну а зачем тогда, уважаемый, вы забиваете себе и нам голову какими-то волшебными (читай ненужными) регулярками и фильтрами. Ничего лучше придумывать не нужно, потому, что это и так отлично работает

//add ShAnKaR прочитал мои мысли :)

AFoST
31.01.2009, 01:09
если id типа int то легче сделать так
$id=0;
$id=intval($_GET[id]);

=)

AFoST
31.01.2009, 01:12
ну вот вы написали ИД= чему-то там, по сути ИД - типа инт
значит и проверка только на числа
если же например будет такое (что-то вроде):
index.php?action=union+delete+select&id=123
то параметр action можно проверить из нескольких СУЩЕУСТВУЮЩИХ и ВОЗМОЖНЫХ вариантов типа:
delete||add||post а все другие варианты заменять на один из них, или просто die;
запрети символы без которых скул невоможна, например
"(" ")" "%20" "+" "/"
наверное, еще что-то забыл.
Перебирать все слова которые могут встречаться в cmd или скуле- это пздц))