To jest tylko wersja do druku, aby zobaczyć pełną wersję tematu, kliknij TUTAJ
phpBB2 by Przemo
Support forów phpBB2 modified by Przemo

Archiwum - 1.12.7 - globalne zabezpieczenie przeciw w?amaniom

Przemo - 31-01-2010, 14:25
Temat postu: 1.12.7 - globalne zabezpieczenie przeciw włamaniom
W 1.12.7 będzie tez nowe globalne zabezpieczenie na wypadek gdyby kiedyś w przyszłości komuś jeszcze udało się znaleźć jakąś dziurę.
Gdyby to zabezpieczenie było wcześniej 90% dziur, które były w phpBB nie zadziałałyby.

Zabezpieczenie to powoduje, ze jeżeli w parametrze _GET znajdzie się "nieznany" ciąg znaków to mechanizm przerywa skrypt zwracając "Hacking attempt"

Jeśli chcecie to możecie już teraz u siebie na forum to szybko zainstalować, dodatkowo tez wersja, która tutaj podam wysyła email na adres ustawiony w polu "E-mail nadawcy" w konfiguracji forum. Docelowo nie będzie wysyłało maila.
Przez cala noc dostałem 100 emaili, większość to tak zwane skanery dziur, jednak zdarzają się i "ręczne" próby ataku.
Odradzam testowanie sprawdzanie jak to działa tutaj na przemo.org bo cale maski adresów IP z ręcznych ataków dodaje na serwerze do banlisty i nie wejdziecie już tutaj. Chyba, ze jest adres referowany, wtedy sprawdzam czy ktoś nie wstawił gdzieś takiego linka.

Otwórz common.php i znajdź:
Kod:
$board_config['topics_per_page'] = ($board_config['topics_per_page'] < 1) ? '25' : $board_config['topics_per_page'];

Powyżej tego wstaw:
Kod:
if ( count($HTTP_GET_VARS) )
{
    foreach($HTTP_GET_VARS as $key => $val)
    {
        if ( strlen($val) > 18 && !preg_match('#^[a-z0-9_ /+]*={0,2}$#i', $val) && $key != 'redirect' && $key != 'highlight' )
        {
            $txt = "Atak na zmienna: ".$key."\n\r";
            $txt .= "Danymi: ".$val."\n\r";
            $txt .= "Atak z IP: ".$HTTP_SERVER_VARS['REMOTE_ADDR']." HOST: ".gethostbyaddr($HTTP_SERVER_VARS['REMOTE_ADDR'])."\n\r";
            $txt .= "Adres referer: ".$HTTP_SERVER_VARS['HTTP_REFERER']."\n\r";

            mail($board_config['email_from'], 'Proba ataku na zmienna: '.$key, $txt);

            die('Hacking attempt');
        }
    }
}


Przetestować to możecie np. wchodząc na adres swojego forum dodając: /index.php?test=phpbb_root_path=http://test.test/test

maminowiec - 31-01-2010, 16:22

Przemo, można też takie zrobić do np POST itd

najlepiej jak by była konfiguracja z poziomu PA


ps a nie lepiej zamiast

Kod:
if ( count($HTTP_GET_VARS) )

dać
Kod:
if ( isset($HTTP_GET_VARS) )


albo empty
??

NX - 31-01-2010, 18:00

Czy to było testowane i rzeczywiście pomaga a nie szkodzi ?
Polaczek - 31-01-2010, 19:18

gryzie się z seotags tylko
Przemo - 31-01-2010, 19:44

NX, jasne, że nie szkodzi.

Polaczek, hmm, dobrze, że mówisz, ciekawe z jakimi jeszcze modami będzie się gryzło?

Przemo - 31-01-2010, 19:47

maminowiec, tak, dam isset()

Na POST sie nie da poniewaz POST'em leci duzo roznych rzeczy, nie sposob to wyłapać.

Polaczek - 31-01-2010, 20:06

Przemo napisał/a:
ciekawe z jakimi jeszcze modami będzie się gryzło?


check_files -> Sprawdzanie synchronizacji SQL -> Pierwszy i ostatni post w temacie

powodem jest duża nazwa w $_GET / $HTTP_GET_VARS

Przemo - 31-01-2010, 20:58

Polaczek, dzieki, poprawilem, ze juz z tym działa.
m@rcin... - 31-01-2010, 21:25

dubel? :)
http://www.przemo.org/php...b64f27f6#510462

[ Komentarz dodany przez: lui754: 31-01-2010, 21:53 ]
scalone :)

Anonymous - 31-01-2010, 22:19

Testowałem, to u siebie i zauważyłem, że wywala mi hacking attempt, gdy chcę sprawdzić wszystkie posty użytkownika, który w nicku ma polskie znaki. Da się coś z tym zrobić?

EDIT:
dodam jeszcze, że nick składa się z dwóch członów oddzielonych spacją

Polaczek - 31-01-2010, 22:23

Pico, tak to dlatego, że duże nazwy w $_GET / $HTTP_GET_VARS (zdaje się, że większe niż 18) są blokowane i wywala "Hacking attempt".

Spróbuj

Kod:
if ( strlen($val) > 18 && !preg_match('#^[a-z0-9_ /+]*={0,2}$#i', $val) && $key != 'redirect' && $key != 'highlight' )


zamienić na

Kod:
if ( strlen($val) > 25 && !preg_match('#^[a-z0-9_ /+]*={0,2}$#i', $val) && $key != 'redirect' && $key != 'highlight' )


jak nie zadziała to coraz większą liczbę aż dojdziesz do kresu możliwości :D

Anonymous - 31-01-2010, 22:25

działa, dzięki wielkie :)
kamil_jk_87 - 01-02-2010, 00:53

A byłaby możliwość dodania do panelu włączania i wyłączenia wysyłania wiadomości na e-mail ?
Polaczek - 01-02-2010, 01:34

Przecież jest. Konfiguracja >> Ogólne.
Polaczek - 01-02-2010, 01:38

Wielka rzecz usunąć linijkę kodu:

Kod:
mail($board_config['email_from'], 'Proba ataku na zmienna: '.$key, $txt);



Powered by phpBB modified by Przemo © 2003 phpBB Group