Дэобфускация JS кода для Pentest

Discussion in 'Javascript' started by b3, 9 Feb 2023.

  1. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,170
    Likes Received:
    1,155
    Reputations:
    202
    Ищу сервисы и методы для дэобфускации JS. В одном из тасков наткнулся на код, в общих чертах понял его работу, но не смог полностью самостоятельно разобрать код. В PHP я могу в нужном месте делать exit(); и предварительно смотреть через var_dump() нужные мне переменные. Что можете посоветовать для JS?

    Нагугленые дэобфускаторы:
    https://lelinhtinh.github.io/de4js/
    https://deobfuscate.io/


    Код из таска:

    Code:
    var _0x49ca=['onreadystatechange','send','POST','stringify','createElement','length','responseText','innerHTML','/assets/php/search.php','results','appendChild','getElementById','replace','target','parse','open','createTextNode','value'];(function(_0x4b4363,_0x49ca1a){var _0x3926ef=function(_0x23f2a2){while(--_0x23f2a2){_0x4b4363['push'](_0x4b4363['shift']());}};_0x3926ef(++_0x49ca1a);}(_0x49ca,0x1a0));var _0x3926=function(_0x4b4363,_0x49ca1a){_0x4b4363=_0x4b4363-0x0;var _0x3926ef=_0x49ca[_0x4b4363];return _0x3926ef;};function submit(){var _0x25c265=document[_0x3926('0x9')](_0x3926('0xb'))[_0x3926('0xf')][_0x3926('0xa')](/[^a-zA-Z0-9. ]|exec/gi,'');var _0x33c045=document[_0x3926('0x9')](_0x3926('0x7'));_0x33c045[_0x3926('0x5')]='';var _0x5a6bb1=new XMLHttpRequest();_0x5a6bb1[_0x3926('0x10')]=function(){if(this['readyState']==0x4&&this['status']==0xc8){response=JSON[_0x3926('0xc')](_0x5a6bb1[_0x3926('0x4')]);for(var _0xde072e=0x0;_0xde072e<response[_0x3926('0x3')];_0xde072e++){var _0x6abcb4=document[_0x3926('0x2')]('li');_0x6abcb4[_0x3926('0x8')](document[_0x3926('0xe')](response[_0xde072e]));_0x33c045[_0x3926('0x8')](_0x6abcb4);_0x33c045['style']='display:block;';}document[_0x3926('0x9')](_0x3926('0xb'))[_0x3926('0xf')]='';}};_0x5a6bb1[_0x3926('0xd')](_0x3926('0x0'),_0x3926('0x6'),!![]);_0x5a6bb1[_0x3926('0x11')](JSON[_0x3926('0x1')]({'target':_0x25c265}));}
    
    p.s. как спрятать код от гугл?
     
  2. winstrool

    winstrool ~~*MasterBlind*~~

    Joined:
    6 Mar 2007
    Messages:
    1,414
    Likes Received:
    911
    Reputations:
    863
    Если хочешь потанцевать с бубном, то можешь по переменно, вставлять переменные на вывод и складывать в читаемый код например так:

    https://prnt.sc/I83OWTGishrn

    HTML:
    //var _0x25c265=document[_0x3926('0x9')](_0x3926('0xb'))[_0x3926('0xf')][_0x3926('0xa')](/[^a-zA-Z0-9. ]|exec/gi,'');
    //var _0x25c265=document.getElementById('target').value.replace(/[^a-zA-Z0-9. ]|exec/gi,'');
    
    document.write('<textarea>'+ _0x3926('0x9') +'</textarea>');
    //или так
    document.write('<br><b>'+ _0x3926('0x9') +'</b>');
     
    _________________________
    alexzir and b3 like this.
  3. M_script

    M_script Members of Antichat

    Joined:
    4 Nov 2004
    Messages:
    2,581
    Likes Received:
    1,317
    Reputations:
    1,557
    Никакой деобфускатор не сделает код нормальным. Всегда придется делать вручную
    Code:
    function submit() {
      var target = document.results("getElementById").open.appendChild(/[^a-zA-Z0-9. ]|exec/gi, "");
      var html = document.results("innerHTML");
    
      var xhr = new XMLHttpRequest;
      xhr.createTextNode = function () {
        if (this.readyState == 4 && this.status == 200) {
          response = JSON.replace(xhr.createElement);
          var i = 0;
          for (; i < response.stringify; i++) {
            var data = document.POST("li");
            data["/assets/php/search.php"](document.parse(response[i]));
            html["/assets/php/search.php"](data);
            html.style = "display:block;";
          }
          document.results("getElementById").open = "";
        }
      };
      xhr.target("onreadystatechange", "responseText", true);
      xhr.value(JSON.send({target: target}));
    }
    
     
    b3 likes this.
  4. crlf

    crlf Green member

    Joined:
    18 Mar 2016
    Messages:
    683
    Likes Received:
    1,513
    Reputations:
    460
    На правах КО, напомню, что для отладки монструозных скриптов, удобно юзать отладчик в браузере, например Debugger из FireFox.

    [​IMG]

    Просто расставляешь бряки на нужные строки, а тулза тормозит выполнение JS в этих местах и подсвечивает что где лежит и куда ссылается. Для завёрнутого N раз кода это не совсем то что нужно, но всяко удобнее чем ловить окошечки с алертами. Так же, рядом в консоли, при должной сноровке, можно компоновать и стартовать скрипт как хочется.
     
    b3, alexzir and joelblack like this.
  5. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,170
    Likes Received:
    1,155
    Reputations:
    202
    да вот как раз то что нужно, я совсем забыл про брейкпоинты, осталось только слегка подружится с жабаскриптом.
    Есть аналог var_dump из PHP в JS?
     
  6. crlf

    crlf Green member

    Joined:
    18 Mar 2016
    Messages:
    683
    Likes Received:
    1,513
    Reputations:
    460
    console.log()

    Это вопрос большого количества $$$$ и на публику никто подобным не поделится. К примеру, прошаренные СЕОшники создают сотни или даже тысячи экспериментов в разных вариациях, прежде чем придут к какому-то приемлемому варианту клоаки, а далее отжимают это дело по полной, что поисковые системы по аномалиям фиксят это байпас :)
     
    #6 crlf, 16 Feb 2023
    Last edited: 16 Feb 2023
  7. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,170
    Likes Received:
    1,155
    Reputations:
    202
    Под спрятать код я подразумевал хайд на форуме, т.к. код из таска и не хочу чтоб он светился в гугле, темболее в теме выложили его читаемый вид) Но это не принциапиально, таск решался и без дэобфускации кода.
     
    crlf likes this.