Pagina 1 van 1

Vulnerability in BBCode - serious

Geplaatst: 11 sep 2003, 16:33
door DaMnNaTiOn

Geplaatst: 11 sep 2003, 17:03
door Stef
Mijn engels is niet zo goed dat ik het instaat ben om het te snappen. :P

Iemand? Kort Samengevat?

Geplaatst: 11 sep 2003, 19:56
door michaa113
van phpbb-nl.com:

Onlangs zijn wij op de hoogte gebracht van een beveiligingslek wat zich in phpBB 2.0.6. zit (tevens 2.0.5 en 2.0.4.). De fix staat hieronder beschreven.

In phpBB 2.0.4. is er een verandering gemaakt op de manier waarop de bbcode URL internetadressen matched. Dit is gedaan omdat er meerdere klachten waren over de vorige manier waarop dit altijd werkte. Nu blijkt dat de verandering van teveel restricties, naar te weinig restricties gegaan is, en dat er mogelijkheden zijn om via de URL tag op sommige manieren dingen te veroorzaken die niet geheel de bedoeling zijn

We adviseren al onze users dan ook bij deze, om de hieronder beschreven fix zo spoedig mogelijk uit te voeren.

Code: Selecteer alles

# 
#-----[ OPEN ]------------------------------------------ 
# 
includes/bbcode.php 

# 
#-----[ ZOEK ]------------------------------------------ 
# 

$bbcode_tpl['url4'] = str_replace('{URL}', 'http://\\1', $bbcode_tpl['url']); 
   $bbcode_tpl['url4'] = str_replace('{DESCRIPTION}', '\\5', $bbcode_tpl['url4']); 

# 
#-----[ VERVANG DOOR ]------------------------------------------ 
# 

$bbcode_tpl['url4'] = str_replace('{URL}', 'http://\\1', $bbcode_tpl['url']); 
   $bbcode_tpl['url4'] = str_replace('{DESCRIPTION}', '\\3', $bbcode_tpl['url4']); 

# 
#-----[ ZOEK ]------------------------------------------ 
# 

// 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']; 

# 
#-----[ VERVANG DOOR ]------------------------------------------ 
# 

// 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']; 

# 
#-----[ ZOEK ]------------------------------------------ 
# 

// 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); 


# 
#-----[ VERVANG DOOR ]------------------------------------------ 
# 

//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); 

# 
#-----[ SLUIT EN UPLOAD ]------------------------------------------ 
# 



Dit lost hoogstwaarschijnlijk het lek op. Mocht je van mening zijn nog steeds last te hebben van deze bug, laat het ons dan via pm weten, op een zo gedetailleerd mogelijke manier over wat er misgaat.


Dit is een verkort vertaalde versie van het verhaal zoals het op phpBB.com te lezen is.
http://www.phpbb.com/phpBB/viewtopic.php?t=135116 voor het complete verhaal, in het engels.

Bron ;) : http://www.phpbb-nl.com

Geplaatst: 11 sep 2003, 20:29
door mosymuis
Op wat voor manier kan dit "lek" dan misbruikt worden? Met welke gevolgen? Ik wil wel graag weten wát ik fix... :?

Geplaatst: 11 sep 2003, 20:39
door michaa113
kzal ff op phpbb.com kijken

Geplaatst: 11 sep 2003, 20:40
door michaa113
A change was made to the way bbcode url matching is achieved around phpBB 2.0.4. This was done following complaints that our existing methods, as used in earlier releases of phpBB were too restrictive. Unfortunately the match went from too restrictive to too loose. This allows people to "break out" of the anchor href and insert arbitary markup, particularly event handling parameters. This can result in anything from "nuisance" posts to people exploiting cross-site issues to grab cookie data.

Geplaatst: 11 sep 2003, 20:42
door mosymuis
Dat is ernstig ja. Al denk ik niet dat 99,99% van het internettende volk ook maar een flauw id heeft hoe dit moet ;)

Geplaatst: 12 sep 2003, 16:52
door SuperNova
Nee, maar probleem is, niet alle phpbb admins zitten op phpbb.com!
En dan zal er vast wel een of andere malafide personage die dat topic gelezen heeft dingen gaan proberen.. :x