|
[waraxe-2007-SA#051] - Sql Injection in 2z Project 0.9.5
===================================================================
Author: Janek Vind "waraxe"
Date: 23. May 2007
Location: Estonia, Tartu
Web: http://www.waraxe.us/advisory-51.html
Target software description:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Vulnerable: 2z Project 0.9.5
Patched: not yet :)
http://2z-project.ru/
Vulnerabilities:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Critical sql injection in "rating.php"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Let's start with peeking @ source code of "2z/includes/rating.php":
------------------[source code]----------------------
...
if ($_POST['rating']) {
@include_once "../core.php";
@header('Content-type: text/html; charset='.$lang['encoding']);
LoadLang("news", "site");
}
...
if (!$_COOKIE['rating'.$row['id']]) {
if (!$rating) {
...
else {
@setcookie('rating'.$post_id, 'voted', (time() + 31526000), '/');
$mysql->query("UPDATE ".prefix."_news SET rating=rating+".$rating.",
votes=votes+1 WHERE id = '".$post_id."'");
------------------[/source code]----------------------
As we can track back - the $_POST['rating'] parameter will be used in
mysql "UPDATE" query without any sanitize at all! This seems to be
classical "sql injection in update query" case ...
So let's have fun and try some PoC:
------------------[PoC test]-----------------------
http://localhost/2zcms/?category=none&altname=testnews&rating=xxx
------------------[/PoC test]----------------------
Result: "Error! Bad query!"
What is important for this test to succeed, is that url to specific news
item must be valid. And then just add "?rating=xxx" or "&rating=xxx"
to url end and you will get error message, if target website is not patched.
So what are practical exploiting possibilities in this case?
1. Attacker can modify arbitrary news content on website.
========================================================
This little piece of html code will change news author name to "1337"
for ALL news items at the same time!
------------------[real-life exploit]-----------------------