Importantă vulnerabilitate la BBCode
Scris: 11-Sep-2003, 11:17:54
phpbb.com anunţă despre o vulnerabilitate importantă în 2.0.6 (care se reflectă şi la 2.0.5 şi 2.0.5). Rezolvarea este mai jos dar fiţi atenţi la notiţele care sunt ataşate.
Totodată, toate pachetele pentru download au fost modificate deci nu este necesar dacă aţi downloadat pachetele după 10 septembrie, să realizaţi aceste modificări.
O schimbare a fost făcută la tagul url din bbcode la versiunea 2.0.4 în urma plângerilor de la utilizatori despre metodele existente folosite în pachetele phpBB că sunt prea restrictive. Din păcate s-a renunţat la prea multe restrucţii. În final, prin diferite metode, utilizatorii puteau lua date din cookie-uri.
Astfel această modificare a codului e cât se poate de serioasă ... şi sunt sfătuiţi toţi utilizatorii să o realizeze cît se poate de urgent.
Puteţi folosi orice editor de texte, pe orice sistem de operare, care vin cu o serie de aplicaţii cum ar fi notepad/wordpad - Windows, ed/pico/vi/emacs - Linux/UNIX/*BSD, etc.
Deschideţi fişierul: includes/bbcode.php
Găsiţi urmâtoarea secvenţă de cod :
şi o înlocuiţi cu :
Căutaţi :
şi înlocuiţi cu :
Cautaţi:
şi înlocuiţi cu:
Acum salvaţi fişierul şi uploadaţi-l pe server peste fişerul existent cu acelaş nume.
Aceasta ar trebui să rezolve problema ... dacă găsiţi ceva care nu se potriveşte vă rugăm să ne anunţaţi ataşând detalii complete despre cum nu funcţionează, versiunea PHP-ului instalat şi versiunea care funcţionează.
Mai multe detalii (în limba engleză) : aici.
Totodată, toate pachetele pentru download au fost modificate deci nu este necesar dacă aţi downloadat pachetele după 10 septembrie, să realizaţi aceste modificări.
O schimbare a fost făcută la tagul url din bbcode la versiunea 2.0.4 în urma plângerilor de la utilizatori despre metodele existente folosite în pachetele phpBB că sunt prea restrictive. Din păcate s-a renunţat la prea multe restrucţii. În final, prin diferite metode, utilizatorii puteau lua date din cookie-uri.
Astfel această modificare a codului e cât se poate de serioasă ... şi sunt sfătuiţi toţi utilizatorii să o realizeze cît se poate de urgent.
Puteţi folosi orice editor de texte, pe orice sistem de operare, care vin cu o serie de aplicaţii cum ar fi notepad/wordpad - Windows, ed/pico/vi/emacs - Linux/UNIX/*BSD, etc.
Deschideţi fişierul: includes/bbcode.php
Găsiţi urmâtoarea secvenţă de cod :
Cod: Selectaţi tot
$bbcode_tpl['url4'] = str_replace('{URL}', 'http://\\1', $bbcode_tpl['url']);
$bbcode_tpl['url4'] = str_replace('{DESCRIPTION}', '\\5', $bbcode_tpl['url4']);
Cod: Selectaţi tot
$bbcode_tpl['url4'] = str_replace('{URL}', 'http://\\1', $bbcode_tpl['url']);
$bbcode_tpl['url4'] = str_replace('{DESCRIPTION}', '\\3', $bbcode_tpl['url4']);
Cod: Selectaţi tot
// matches a [url]xxxx://www.phpbb.com[/url] code..
$patterns[] = "#\[url\]([\w]+?://.*?[^ \"\n\r\t<]*?)\[/url\]#is";
$replacements[] = $bbcode_tpl['url1'];
// [url]www.phpbb.com[/url] code.. (no xxxx:// prefix).
$patterns[] = "#\[url\]((www|ftp)\.([\w\-]+\.)*?[\w\-]+\.[a-z]{2,4}(:?[0-9]*?/[^ \"\n\r\t<]*)?)\[/url\]#is";
$replacements[] = $bbcode_tpl['url2'];
// [url=xxxx://www.phpbb.com]phpBB[/url] code..
$patterns[] = "#\[url=([\w]+?://.*?[^ \"\n\r\t<]*?)\](.*?)\[/url\]#is";
$replacements[] = $bbcode_tpl['url3'];
// [url=www.phpbb.com]phpBB[/url] code.. (no xxxx:// prefix).
$patterns[] = "#\[url=((www|ftp)\.([\w\-]+\.)*?[\w\-]+\.[a-z]{2,4}(:?[0-9]*?/[^ \"\n\r\t<]*)?)\](.*?)\[/url\]#is";
$replacements[] = $bbcode_tpl['url4'];
Cod: Selectaţi tot
// matches a [url]xxxx://www.phpbb.com[/url] code..
$patterns[] = "#\[url\]([\w]+?://[^ \"\n\r\t<]*?)\[/url\]#is";
$replacements[] = $bbcode_tpl['url1'];
// [url]www.phpbb.com[/url] code.. (no xxxx:// prefix).
$patterns[] = "#\[url\]((www|ftp)\.[^ \"\n\r\t<]*?)\[/url\]#is";
$replacements[] = $bbcode_tpl['url2'];
// [url=xxxx://www.phpbb.com]phpBB[/url] code..
$patterns[] = "#\[url=([\w]+?://[^ \"\n\r\t<]*?)\](.*?)\[/url\]#is";
$replacements[] = $bbcode_tpl['url3'];
// [url=www.phpbb.com]phpBB[/url] code.. (no xxxx:// prefix).
$patterns[] = "#\[url=((www|ftp)\.[^ \"\n\r\t<]*?)\](.*?)\[/url\]#is";
$replacements[] = $bbcode_tpl['url4'];
Cod: Selectaţi tot
// matches an "xxxx://yyyy" URL at the start of a line, or after a space.
// xxxx can only be alpha characters.
// yyyy is anything up to the first space, newline, comma, double quote or <
$ret = preg_replace("#(^|[\n ])([\w]+?://.*?[^ \"\n\r\t<]*)#is", "\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $ret);
// matches a "www|ftp.xxxx.yyyy[/zzzz]" kinda lazy URL thing
// Must contain at least 2 dots. xxxx contains either alphanum, or "-"
// zzzz is optional.. will contain everything up to the first space, newline,
// comma, double quote or <.
$ret = preg_replace("#(^|[\n ])((www|ftp)\.[\w\-]+\.[\w\-.\~]+(?:/[^ \"\t\n\r<]*)?)#is", "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>", $ret);
Cod: Selectaţi tot
//matches an "xxxx://yyyy" URL at the start of a line, or after a space.
// xxxx can only be alpha characters.
// yyyy is anything up to the first space, newline, comma, double quote or <
$ret = preg_replace("#(^|[\n ])([\w]+?://[^ \"\n\r\t<]*)#is", "\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $ret);
// matches a "www|ftp.xxxx.yyyy[/zzzz]" kinda lazy URL thing
// Must contain at least 2 dots. xxxx contains either alphanum, or "-"
// zzzz is optional.. will contain everything up to the first space, newline,
// comma, double quote or <.
$ret = preg_replace("#(^|[\n ])((www|ftp)\.[^ \"\t\n\r<]*)#is", "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>", $ret);
Aceasta ar trebui să rezolve problema ... dacă găsiţi ceva care nu se potriveşte vă rugăm să ne anunţaţi ataşând detalii complete despre cum nu funcţionează, versiunea PHP-ului instalat şi versiunea care funcţionează.
Mai multe detalii (în limba engleză) : aici.