Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Atak na pliki JS (eval(function))
Forum PHP.pl > Forum > Przedszkole
kamil9012
Witam.
Na swoich stronach doświadczyłem ataku na pliki JavaScript. Jakieś 95% tych plików zostało zamienionych na taki kod:
  1. eval(function(p,a,c,k,e,r){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--)r[e(c)]=k[c]||e(c);k=[function(e){return r[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}('6 r=C B({4:{g:1l,a:\'15\',m:X,c:{d:[\'J\',\'H\'],A:B.1b}},18:5(3,4){2.10(4);2.q=$(3);2.q.T(\'R\').j(5(3){3.O({\'M\':2.p.t(2,3),\'1k\':2.w.t(2,3)})},2)},p:5(3){$1i(3.z);7(!3.1a(2.4.a)){3.17(2.4.a);6 9=3.v(\'9\');7(9){7(2.4.g)9.g({J:14});9.c(2.4.c)}3.F().j(5(G){G.s(2.4.a)},2)}},w:5(3){3.z=(5(){3.s(2.4.a);6 f=3.v(\'f\');7(f)f.Z()}).m(2.4.m,2)}});r.Y(C W);V.S({c:5(b){7(!2.k){2.k=2.Q(b.A);2.h=2.P.N(2,b.d);2.l={};U(6 i L 2.h)2.l[i]=0}7(b.d.x(\'H\')||b.d.x(\'K\')){2.E(\'D\',\'1j\');2.u(\'9\').j(5(3){3.E(\'D\',\'1h\')})}2.k.1g(2.l).1e(2.h)},u:5(y){6 n=[];6 8=2.o();19(8&&8!==1c){7(8.1d().16(y))n.1f(8);8=8.o()}I n},F:5(){6 e=2.o().13();e.12(e.11(2),1);I e}});',62,84,'||this|el|options|function|var|if|cur|ul|hoverClass|obj|animate|props|children|i
    frame|bgiframe|now||each|Fx|FxEmpty|delay|matched|getParent|over|element|Rokmoome
    nu|removeClass|bind|getParents|getElement|out|contains|expr|sfTimer|opts|Class|ne
    w|overflow|setStyle|getSiblings|ele|height|return|opacity|width|in|mouseover|appl
    y|addEvents|getStyles|effects|li|extend|getElements|for|Element|Options|500|imple
    ment|remove|setOptions|indexOf|splice|getChildren|false|sfHover|test|addClass|ini
    tialize|while|hasClass|empty|document|getTag|start|push|set|visible|clear|hidden|
    mouseout|true'
    .split('|'),0,{}))


Niby skrypt działa, ale antywirusy krzyczą jak nie wiem. Jak mógłbym odkodować taki kod na ten poprzedni, aby móc zamienić?

atak jest w więszkośći na blogi wordpress i forum mybb.
maviozo
Spróbuj wkleić oryginalny kod na http://jsbeautifier.org/
konrados
Ostatnio podobnie wyglądający skrypt js zaatakował jedną ze stronek, którymi się zajmuję. Chodziło o dziurę w wordpressie 2.9.2.

Poradziłem sobie, ale nadal nie wiem: co taki skrypt robił (jak można zdekodować to, co zapodał kamil9012) oraz co właściwie szkodliwego może wyrządzić js użytkownikowi końcowemu (chrome i ff zablokowały tę stronkę ze względu właśnie na ten skrypt).

Może ktoś pomóc?
zegarek84
kod który tu podano rozkodowany i sformatowany (alt+shift+f w netbeans) zamieszczam poniżej nie chce mi się go przeglądać...
żeby rozkodować zamienia się przy takim czymś eval na console.log najprościej
[JAVASCRIPT] pobierz, plaintext
  1. var Rokmoomenu=new Class({
  2. options:{
  3. bgiframe:true,
  4. hoverClass:'sfHover',
  5. delay:500,
  6. animate:{
  7. props:['opacity','height'],
  8. opts:Class.empty
  9. }
  10. },
  11. initialize:function(el,options){
  12. this.setOptions(options);
  13. this.element=$(el);
  14. this.element.getElements('li').each(function(el){
  15. el.addEvents({
  16. 'mouseover':this.over.bind(this,el),
  17. 'mouseout':this.out.bind(this,el)
  18. })
  19. },this)
  20. },
  21. over:function(el){
  22. $clear(el.sfTimer);
  23. if(!el.hasClass(this.options.hoverClass)){
  24. el.addClass(this.options.hoverClass);
  25. var ul=el.getElement('ul');
  26. if(ul){
  27. if(this.options.bgiframe)ul.bgiframe({
  28. opacity:false
  29. });
  30. ul.animate(this.options.animate)
  31. }
  32. el.getSiblings().each(function(ele){
  33. ele.removeClass(this.options.hoverClass)
  34. },this)
  35. }
  36. },
  37. out:function(el){
  38. el.sfTimer=(function(){
  39. el.removeClass(this.options.hoverClass);
  40. var iframe=el.getElement('iframe');
  41. if(iframe)iframe.remove()
  42. }).delay(this.options.delay,this)
  43. }
  44. });
  45. Rokmoomenu.implement(new Options);
  46. Element.extend({
  47. animate:function(obj){
  48. if(!this.Fx){
  49. this.Fx=this.effects(obj.opts);
  50. this.now=this.getStyles.apply(this,obj.props);
  51. this.FxEmpty={};
  52.  
  53. for(var i in this.now)this.FxEmpty[i]=0
  54. }
  55. if(obj.props.contains('height')||obj.props.contains('width')){
  56. this.setStyle('overflow','hidden');
  57. this.getParents('ul').each(function(el){
  58. el.setStyle('overflow','visible')
  59. })
  60. }
  61. this.Fx.set(this.FxEmpty).start(this.now)
  62. },
  63. getParents:function(expr){
  64. var matched=[];
  65. var cur=this.getParent();
  66. while(cur&&cur!==document){
  67. if(cur.getTag().test(expr))matched.push(cur);
  68. cur=cur.getParent()
  69. }
  70. return matched
  71. },
  72. getSiblings:function(){
  73. var children=this.getParent().getChildren();
  74. children.splice(children.indexOf(this),1);
  75. return children
  76. }
  77. });
[JAVASCRIPT] pobierz, plaintext
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.