BLUEPAGE CMS - Cross Site Scripting and Session Fixation Issues

QQ空间 新浪微博 微信 QQ facebook twitter
漏洞ID 1052214 漏洞类型
发布时间 2009-02-05 更新时间 2009-02-05
CVE编号 CVE-2008-6027
CVE-2008-6039
CNNVD-ID N/A
漏洞平台 N/A CVSS评分 N/A
|漏洞来源
https://cxsecurity.com/issue/WLB-2009020094
|漏洞详情
漏洞细节尚未披露
|漏洞EXP
[MajorSecurity Advisory #53]BLUEPAGE CMS - Cross Site Scripting and Session Fixation Issues

Details

=======

Product: BLUEPAGE CMS

Security-Risk: moderated

Remote-Exploit: yes

Vendor-URL: http://www.bluepage-cms.com/

Vendor-Status: informed

Advisory-Status: published

Credits

============

Discovered by: David Vieira-Kurz

http://www.majorsecurity.de

Affected Products:

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

BLUEPAGE CMS 2.5 and prior

Original Advisory:

============

http://www.majorsecurity.de/index_2.php?major_rls=major_rls53

Introduction

============

BLUEPAGE CMS is an easy to handle content management system.

More Details

============

1. cross site scripting:

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

-Input passed directly to the "whl", "var_1" and "search" parameter in "index.php" are not properly sanitised before being returned to the user.

This can be exploited to execute arbitrary HTML and script code in a user's browser session in context of an affected site.

2. session fixation:

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

The "PHPSESSID" parameter can be set to a malicious and arbitrary value.

3.1 Description:

In a session fixation attack, the attacker fixes the user's session ID before the user even logs into the target server.

After a user's session ID has been fixed, the attacker will wait for them to login.

Once the user does so, the attacker uses the predefined session ID value to assume their online identity.

3.2 PoC:

============

http://localhost/BluePageCMS/?PHPSESSID=15031988

3.3 Workaround:

============

1. Do not accept session identifiers from GET / POST variables.

2.Regenerate SID on each request.

3. Accept only server generated SID:

One way to improve security is to not accept session identifiers not generated by server.

if ( !isset( $_SESSION['SERVER_GENERATED_SID'] ) ) {

session_destroy(); // destroy all data in session

}

session_regenerate_id(); // generate a new session identifier

$_SESSION['SERVER_GENERATED_SID'] = true;

Solution

=============

Edit the source code to ensure that input is properly sanitised.

You should work with "htmlspecialchars()" or "htmlentities()" php-function to ensure that html tags

and javascript code are not going to be executed.

Example:

$password = htmlentities($_POST['pass']);

$search = htmlspecialchars($_GET['search']);

?>

MajorSecurity

================

MajorSecurity is a German penetrationtesting and security research company which focuses

on web application security.

We offer professional penetrationtestings, source code analysis and reliable proof of concepts.

You will find more Information about MajorSecurity at

http://www.majorsecurity.de/