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

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

  1. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,177
    Likes Received:
    1,156
    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. как спрятать код от гугл?
     
    1. winstrool

      winstrool ~~*MasterBlind*~~

      Joined:
      6 Mar 2007
      Messages:
      1,412
      Likes Received:
      904
      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.
      1. 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.
        1. 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.
          1. b3

            b3 Banned

            Joined:
            5 Dec 2004
            Messages:
            2,177
            Likes Received:
            1,156
            Reputations:
            202
            да вот как раз то что нужно, я совсем забыл про брейкпоинты, осталось только слегка подружится с жабаскриптом.
            Есть аналог var_dump из PHP в JS?
             
            1. 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
              1. b3

                b3 Banned

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