Exploitation of phpBB highlight parameter vulnerability
phpBB versions 2.0.10 and prior
The software phpBB contains an input validation problem in how it processes a parameter contained in URLs. An intruder can deface a phpBB website, execute arbitrary commands, or gain administrative privileges on a compromised bulletin board.
phpBB is an open-source bulletin board application. It improperly performs an urldecode() on the "highlight" parameter supplied to viewtopic.php. This may allow a remote attacker to execute arbitrary commands on a vulnerable server.
According to reports, this vulnerability is being actively exploited by the Santy.A worm. The worm appears to propogate by searching for the keyword "viewtopic.php" in order to find vulnerable sites.
The worm writes itself to a file named "m1ho2of" on the compromised system. It then overwrites files ending with .htm, .php, .asp. shtm, .jsp, and .phtm replacing them with HTML content that defaces the web page. The worm then tries to use PERL to execute itself on the compromised system and propogate further.US-CERT is tracking this issue as:
VU#497400 - phpBB viewtopic.php fails to properly sanitize input passed to the "highlight" parameter
A remote attacker may be able to deface a phpBB website and execute arbitrary commands on a compromised bulletin board.
Upgrade to phpBB version 2.0.11 to prevent exploitation.
Appendix A. References
- US-CERT Vulnerability Note VU#497400 - http://www.kb.cert.org/vuls/id/497400
- phpBB Downloads - http://www.phpbb.com/downloads.php
- phpBB Announcement - http://www.phpbb.com/phpBB/viewtopic.php?f=14&t=240636
- Symantec Security Response - Perl.Santy - http://securityresponse.symantec.com/avcenter/venc/data/perl.santy.html
- McAfee - Computer Virus Software and Internet Security - http://us.mcafee.com/virusInfo/default.asp?id=description&virus_k=130471
This vulnerability was reported by the phpBB Development Team.
Feedback can be directed to the authors: Jeffrey Gennari and Jason Rafail
Dec 21, 2004: Initial release
Dec 22, 2004: Clarified improper use of urldecode()