Показать сообщение отдельно

  #6  
Старый 24.03.2008, 15:03
TANZWUT
Крёстный отец :)
Регистрация: 22.06.2005
Сообщений: 1,330
Провел на форуме:
5302668

Репутация: 2054


Отправить сообщение для TANZWUT с помощью ICQ
По умолчанию

ZET36, обойти можно послав пакет с поддельным IP адресом или меняя их! так же можно зарегистрировацо в чате под левым IP, изменить браузер либо скрыть его как и инфу по системе, так и обходицо бан в чате, поверь - я был админом одного из чатов, при условии что солью чат - на сколько я знаю: я первый кто его слил (большенство уязвимостей были исправлены благодаря моим "шалостям" - думаю девелопер скажет когданито спасибо)
посмотри код:
PHP код:
function getip( )
{
    global 
$REMOTE_ADDR;
    global 
$HTTP_X_FORWARDED_FOR;
    global 
$HTTP_X_FORWARDED;
    global 
$HTTP_FORWARDED_FOR;
    global 
$HTTP_FORWARDED;
    global 
$HTTP_VIA;
    global 
$HTTP_X_COMING_FROM;
    global 
$HTTP_COMING_FROM;
    global 
$HTTP_SERVER_VARS;
    global 
$HTTP_ENV_VARS;
    if ( empty( 
$REMOTE_ADDR ) )
    {
        if ( !empty( 
$_SERVER ) || isset( $_SERVER['REMOTE_ADDR'] ) )
        {
            
$REMOTE_ADDR $_SERVER['REMOTE_ADDR'];
        }
        else if ( !empty( 
$_ENV ) || isset( $_ENV['REMOTE_ADDR'] ) )
        {
            
$REMOTE_ADDR $_ENV['REMOTE_ADDR'];
        }
        else if ( !empty( 
$HTTP_SERVER_VARS ) || isset( $HTTP_SERVER_VARS['REMOTE_ADDR'] ) )
        {
            
$REMOTE_ADDR $HTTP_SERVER_VARS['REMOTE_ADDR'];
        }
        else if ( !empty( 
$HTTP_ENV_VARS ) || isset( $HTTP_ENV_VARS['REMOTE_ADDR'] ) )
        {
            
$REMOTE_ADDR $HTTP_ENV_VARS['REMOTE_ADDR'];
        }
        else if ( @
getenv"REMOTE_ADDR" ) )
        {
            
$REMOTE_ADDR getenv"REMOTE_ADDR" );
        }
    }
    if ( empty( 
$HTTP_X_FORWARDED_FOR ) )
    {
        if ( !empty( 
$_SERVER ) || isset( $_SERVER['HTTP_X_FORWARDED_FOR'] ) )
        {
            
$HTTP_X_FORWARDED_FOR $_SERVER['HTTP_X_FORWARDED_FOR'];
        }
        else if ( !empty( 
$_ENV ) || isset( $_ENV['HTTP_X_FORWARDED_FOR'] ) )
        {
            
$HTTP_X_FORWARDED_FOR $_ENV['HTTP_X_FORWARDED_FOR'];
        }
        else if ( !empty( 
$HTTP_SERVER_VARS ) || isset( $HTTP_SERVER_VARS['HTTP_X_FORWARDED_FOR'] ) )
        {
            
$HTTP_X_FORWARDED_FOR $HTTP_SERVER_VARS['HTTP_X_FORWARDED_FOR'];
        }
        else if ( !empty( 
$HTTP_ENV_VARS ) || isset( $HTTP_ENV_VARS['HTTP_X_FORWARDED_FOR'] ) )
        {
            
$HTTP_X_FORWARDED_FOR $HTTP_ENV_VARS['HTTP_X_FORWARDED_FOR'];
        }
        else if ( @
getenv"HTTP_X_FORWARDED_FOR" ) )
        {
            
$HTTP_X_FORWARDED_FOR getenv"HTTP_X_FORWARDED_FOR" );
        }
    }
    if ( empty( 
$HTTP_X_FORWARDED ) )
    {
        if ( !empty( 
$_SERVER ) || isset( $_SERVER['HTTP_X_FORWARDED'] ) )
        {
            
$HTTP_X_FORWARDED $_SERVER['HTTP_X_FORWARDED'];
        }
        else if ( !empty( 
$_ENV ) || isset( $_ENV['HTTP_X_FORWARDED'] ) )
        {
            
$HTTP_X_FORWARDED $_ENV['HTTP_X_FORWARDED'];
        }
        else if ( !empty( 
$HTTP_SERVER_VARS ) || isset( $HTTP_SERVER_VARS['HTTP_X_FORWARDED'] ) )
        {
            
$HTTP_X_FORWARDED $HTTP_SERVER_VARS['HTTP_X_FORWARDED'];
        }
        else if ( !empty( 
$HTTP_ENV_VARS ) || isset( $HTTP_ENV_VARS['HTTP_X_FORWARDED'] ) )
        {
            
$HTTP_X_FORWARDED $HTTP_ENV_VARS['HTTP_X_FORWARDED'];
        }
        else if ( @
getenv"HTTP_X_FORWARDED" ) )
        {
            
$HTTP_X_FORWARDED getenv"HTTP_X_FORWARDED" );
        }
    }
    if ( empty( 
$HTTP_FORWARDED_FOR ) )
    {
        if ( !empty( 
$_SERVER ) || isset( $_SERVER['HTTP_FORWARDED_FOR'] ) )
        {
            
$HTTP_FORWARDED_FOR $_SERVER['HTTP_FORWARDED_FOR'];
        }
        else if ( !empty( 
$_ENV ) || isset( $_ENV['HTTP_FORWARDED_FOR'] ) )
        {
            
$HTTP_FORWARDED_FOR $_ENV['HTTP_FORWARDED_FOR'];
        }
        else if ( !empty( 
$HTTP_SERVER_VARS ) || isset( $HTTP_SERVER_VARS['HTTP_FORWARDED_FOR'] ) )
        {
            
$HTTP_FORWARDED_FOR $HTTP_SERVER_VARS['HTTP_FORWARDED_FOR'];
        }
        else if ( !empty( 
$HTTP_ENV_VARS ) || isset( $HTTP_ENV_VARS['HTTP_FORWARDED_FOR'] ) )
        {
            
$HTTP_FORWARDED_FOR $HTTP_ENV_VARS['HTTP_FORWARDED_FOR'];
        }
        else if ( @
getenv"HTTP_FORWARDED_FOR" ) )
        {
            
$HTTP_FORWARDED_FOR getenv"HTTP_FORWARDED_FOR" );
        }
    }
    if ( empty( 
$HTTP_FORWARDED ) )
    {
        if ( !empty( 
$_SERVER ) || isset( $_SERVER['HTTP_FORWARDED'] ) )
        {
            
$HTTP_FORWARDED $_SERVER['HTTP_FORWARDED'];
        }
        else if ( !empty( 
$_ENV ) || isset( $_ENV['HTTP_FORWARDED'] ) )
        {
            
$HTTP_FORWARDED $_ENV['HTTP_FORWARDED'];
        }
        else if ( !empty( 
$HTTP_SERVER_VARS ) || isset( $HTTP_SERVER_VARS['HTTP_FORWARDED'] ) )
        {
            
$HTTP_FORWARDED $HTTP_SERVER_VARS['HTTP_FORWARDED'];
        }
        else if ( !empty( 
$HTTP_ENV_VARS ) || isset( $HTTP_ENV_VARS['HTTP_FORWARDED'] ) )
        {
            
$HTTP_FORWARDED $HTTP_ENV_VARS['HTTP_FORWARDED'];
        }
        else if ( @
getenv"HTTP_FORWARDED" ) )
        {
            
$HTTP_FORWARDED getenv"HTTP_FORWARDED" );
        }
    }
    if ( empty( 
$HTTP_VIA ) )
    {
        if ( !empty( 
$_SERVER ) || isset( $_SERVER['HTTP_VIA'] ) )
        {
            
$HTTP_VIA $_SERVER['HTTP_VIA'];
        }
        else if ( !empty( 
$_ENV ) || isset( $_ENV['HTTP_VIA'] ) )
        {
            
$HTTP_VIA $_ENV['HTTP_VIA'];
        }
        else if ( !empty( 
$HTTP_SERVER_VARS ) || isset( $HTTP_SERVER_VARS['HTTP_VIA'] ) )
        {
            
$HTTP_VIA $HTTP_SERVER_VARS['HTTP_VIA'];
        }
        else if ( !empty( 
$HTTP_ENV_VARS ) || isset( $HTTP_ENV_VARS['HTTP_VIA'] ) )
        {
            
$HTTP_VIA $HTTP_ENV_VARS['HTTP_VIA'];
        }
        else if ( @
getenv"HTTP_VIA" ) )
        {
            
$HTTP_VIA getenv"HTTP_VIA" );
        }
    }
    if ( empty( 
$HTTP_X_COMING_FROM ) )
    {
        if ( !empty( 
$_SERVER ) || isset( $_SERVER['HTTP_X_COMING_FROM'] ) )
        {
            
$HTTP_X_COMING_FROM $_SERVER['HTTP_X_COMING_FROM'];
        }
        else if ( !empty( 
$_ENV ) || isset( $_ENV['HTTP_X_COMING_FROM'] ) )
        {
            
$HTTP_X_COMING_FROM $_ENV['HTTP_X_COMING_FROM'];
        }
        else if ( !empty( 
$HTTP_SERVER_VARS ) || isset( $HTTP_SERVER_VARS['HTTP_X_COMING_FROM'] ) )
        {
            
$HTTP_X_COMING_FROM $HTTP_SERVER_VARS['HTTP_X_COMING_FROM'];
        }
        else if ( !empty( 
$HTTP_ENV_VARS ) || isset( $HTTP_ENV_VARS['HTTP_X_COMING_FROM'] ) )
        {
            
$HTTP_X_COMING_FROM $HTTP_ENV_VARS['HTTP_X_COMING_FROM'];
        }
        else if ( @
getenv"HTTP_X_COMING_FROM" ) )
        {
            
$HTTP_X_COMING_FROM getenv"HTTP_X_COMING_FROM" );
        }
    }
    if ( empty( 
$HTTP_COMING_FROM ) )
    {
        if ( !empty( 
$_SERVER ) || isset( $_SERVER['HTTP_COMING_FROM'] ) )
        {
            
$HTTP_COMING_FROM $_SERVER['HTTP_COMING_FROM'];
        }
        else if ( !empty( 
$_ENV ) || isset( $_ENV['HTTP_COMING_FROM'] ) )
        {
            
$HTTP_COMING_FROM $_ENV['HTTP_COMING_FROM'];
        }
        else if ( !empty( 
$HTTP_COMING_FROM ) || isset( $HTTP_SERVER_VARS['HTTP_COMING_FROM'] ) )
        {
            
$HTTP_COMING_FROM $HTTP_SERVER_VARS['HTTP_COMING_FROM'];
        }
        else if ( !empty( 
$HTTP_ENV_VARS ) || isset( $HTTP_ENV_VARS['HTTP_COMING_FROM'] ) )
        {
            
$HTTP_COMING_FROM $HTTP_ENV_VARS['HTTP_COMING_FROM'];
        }
        else if ( @
getenv"HTTP_COMING_FROM" ) )
        {
            
$HTTP_COMING_FROM getenv"HTTP_COMING_FROM" );
        }
    }
    if ( !empty( 
$REMOTE_ADDR ) )
    {
        
$direct_ip $REMOTE_ADDR;
    }
    
$proxy_ip "";
    if ( !empty( 
$HTTP_X_FORWARDED_FOR ) )
    {
        
$proxy_ip $HTTP_X_FORWARDED_FOR;
    }
    else if ( !empty( 
$HTTP_X_FORWARDED ) )
    {
        
$proxy_ip $HTTP_X_FORWARDED;
    }
    else if ( !empty( 
$HTTP_FORWARDED_FOR ) )
    {
        
$proxy_ip $HTTP_FORWARDED_FOR;
    }
    else if ( !empty( 
$HTTP_FORWARDED ) )
    {
        
$proxy_ip $HTTP_FORWARDED;
    }
    else if ( !empty( 
$HTTP_VIA ) )
    {
        
$proxy_ip $HTTP_VIA;
    }
    else if ( !empty( 
$HTTP_X_COMING_FROM ) )
    {
        
$proxy_ip $HTTP_X_COMING_FROM;
    }
    else if ( !empty( 
$HTTP_COMING_FROM ) )
    {
        
$proxy_ip $HTTP_COMING_FROM;
    }
    if ( empty( 
$proxy_ip ) )
    {
        return array(
            
ip2long$direct_ip ),
            
0
        
);
    }
    if ( 
ereg"^([0-9]{1,3}\\.){3}[0-9]{1,3}"$proxy_ip$reg ) )
    {
        return array(
            
ip2long$reg[0] ),
            
ip2long$REMOTE_ADDR )
        );
    }
    return array(
        
0,
        
ip2long$REMOTE_ADDR )
    );
}

function 
ip$IP )
{
    if ( 
$IP )
    {
        return 
long2ip$IP );
    }
    return 
ip2longgetenv"REMOTE_ADDR" ) );

итак - как бы небольшой бонус.. только что пришло на ум, но не проверено т.к. нет возможности потестить в админке + есть изменения в двиге :

1) шаблоны. Весь код чата построен на шаблонах, это дает возможность каждому владельцу чата создавать свой индивидуальный и неповторимый облик чата;

1.1)дополнительные страницы. Имеется возможно создать до девяти дополнительных страниц с любым кодом. Любую из этих страниц можно сделать стартовой для чата, в страницах работают шаблоны. Дополнительные страницы доступны по адресам: http://адрес_чата/page/1 ... 9;

1.2) можно определять свои действия по наказанию нарушителя в панеле киллера, до 5-и действий (через javascript);

2) относится к пункту [1]: в старом чате была возможность сделать тег с использованием flash, а так же с разрешёнными HTML тегами (привелегии) в разговоре чата.

=>
1) Тогда что нам мешает внедрить XSS в шаблон или ифрейм и т.д.?
2) Что помешает использовать Flash?
__________________
Лучший способ защиты - это нападение!!!