każdy nowy dzień rodzi nowe paranoje
17 mar 2006
Ostatnio dużo się pisze na temat sql injection zapominając o innych groźnych atakach. Całkiem niedawno ktoś przez mój serwer, a konkretnie przez jeden z skryptów php typu ‘kontakt’ wysłał masę spamu na AOL przez co AOLowcy się na mnie obrazili
Pierwsze co zrobiłem to odpowiedni wpis w mod_security. Na sieci znalazłem wiele wersji np:
SecFilterSelective ARGS_VALUES “\n[[:space:]]*(to|bcc|cc)[[:space:]]*:.*@”
co niestety nie dało rady (?!) spam poszedł jeszcze raz. (na gotroot.com znajdziecie więcej regułek do mod_security).
Spam poszedł przez specjalnie spreparowany mail w MIME. W takim wypadku najlepiej filtrować inputa w poszukiwaniu róznych znaków np.
< ?php
$from=$_POST["sender"];
if (eregi(”\r”,$from) || eregi(”\n”,$from)){
die(”Why ?? :(”);
}
?>
(/n = %0A /r=%0D)
Dopiero to wychwyciło wstrzyknięty spam kodowany w MIME. Więcej o tym (wraz z przykładami) można przeczytać na SecurePHP.
Póki nie miałem własnego serwera nie sądziłem, że można być narażonym na kilkaset różnych ataków dziennie
Logi mod_security normalnie puchną. Najwięcej jest ataków na phpBB, awstats i wordpressa. Boty szukające takich skryptów najlepiej od razu banować bo potrafią one setki razy dziennie zapuszczać tysiące requestów ![]()
5 Responses for "Email injection"
18-03-2006 @ 15:20 1
Witam,
ja przy formularzy kontaktowym stosuje weryfikacje adresu email (funkcje wklejam ponizej), ktora wg mnie takze zapobiega stosowaniu email injections … no chyba ze sie myle?
// weryfikacja poprawnosci adresu email
function verifyEmail($email) {
$wholeexp = ‘/^(.+?)@(([a-z0-9\.-]+?)\.[a-z]{2,5})$/i’;
$userexp = “/^[a-z0-9\~\!\#\$\%\&\(\)\-\_\+\=\[\]\;\:\’\”\,\.\/]+$/i”;
if (preg_match($wholeexp, $email, $regs)) {
$username = $regs[1];
$host = $regs[2];
if (checkdnsrr($host, MX)) {
if (preg_match($userexp, $username)) {
return true;
} else {
return false;
}
} else {
return false;
}
} else {
return false;
}
}
18-03-2006 @ 15:46 2
Nie jestem specjalistą ale chyba się mylisz bo ja też miałem sprawdzanie poprawności emaila (chociaż może diabeł tkwi w szczegółach tj. tutaj w wyrażeniach regularnych), a spam przeszedł. Niestety nie orientuje się w mailach i kodowaniu mime ale na stronie do której dałem linka w tekście jest to dokładnie opisane wraz z przykładami.
18-03-2006 @ 18:54 3
mnie sie zdaje, ze tutaj kluczowa funkcja to checkdnsrr($host, MX), no bo przy typowym email injection (dopisanie dodatkowych linii do email headera w polu formularza) nigdy nie powinna zwrocic true … no chyba, jak juz napisalem, sie myle
nie testowalem.
07-04-2006 @ 17:22 4
Kiedyś pisałem o tym samym problemie u siebie:
http://calek.info/index.php?showNews=228
Na szczęście nie wykorzystano mnie tak, jak Ciebie ;>)
29-04-2006 @ 11:00 5
[...] Człowiek się nawet nie zorientował a tu już minęło 100 dni od momentu jak postawiłem sobie serwer Może ogólnie 100 dni bez awarii i resetu to żaden wyczyn ale jak dla mnie, pseudo admina, wyuczonego na tutorialach z sieci to spore osiągnięcie W międzyczasie przeżyłem już kilka ataków na FTP (bruteforce), puszczenie spamu przez dziurawy skrypt, włam przez makabryczną dziurę w VHCS, a poza tym codziennie setki botów dobija się przez www w poszukiwaniu najpopularniejszych skryptów (phpBB, WordPress, awstats itp.). Cud, że serwer się jeszcze trzyma. Za jakiś czas chciałbym przenieść serwery do europy (Holandia, Niemcy?), ewentualnie do Polski (serwerydedykowane.pl o których już pisałem) o ile poprawią routing. Ale wtedy to już będę szukał porządnego admina do tej roboty, bo nauczyć się z sieci mozna wiele, ale czasu który trzeba na to poświęcić to zliczyć się nie da. A czas to pieniądz. [...]
Zostaw komcia ;)