JavaScript Injection (bài 2) Phần 2: Tiếp Trong phần này, tôi xin nói về một hàm thú vị của JS mà tôi đã học là hàm alert. Nó có thể được nhúng dễ dàng trong trang web, tuy nhiên nó không đơn giản giải trí cho vui như nhiều người đã từng làm và từng nghĩ. Bạn thử gõ lệnh sau lên trực tiếp thanh URL: Trích: javascript:alert("hello") Bằng cách này, ta có thể khai thác được một số thông tin từ một trang web. Ví dụ bạn đã đăng nhập ở một forum hay trang web nào đó, chẳng hạn http://www.victim.com/forums/index.php Bạn xóa link hiện thời trên thanh URL và thay bằng dòng lệnh sau: Trích: javascript:alert(document.cookie) Nó sẽ cho ta biết cookie của trang web. Nếu bạn cảm thấy ko hiểu gì những thông tin này, cứ bình tĩnh nhé, tôi sẽ giải thích sau ^^ Hàm Alert cũng khá thích hợp dùng để nhúng trong một guestbook Trích: <img src="javascript:alert("hello")"> Bạn có thể chạy kiểu loop (vòng lặp): Trích: javascript:while(true){ alert('YourTextHere') } Hãy thử tìm một guestbook nào đó và áp dụng thử xem bạn có được gì nhé ^_* Bây giờ mới là điều thú vị nè! Bạn có thể sử dụng JavaScript để thay đổi một cookie. Lấy ví dụ trên nhá, bạn đang ở http://www.victim.com/forums/index.php Gõ dòng lệnh javascript:alert(document.cookie) May mắn, bạn có thể sẽ nhận được thông tin cấu trúc như sau Trích: username=username; password=password; admin=0; Để ý admin=0 Giả sử bạn có thể thay đổi nó thì sao nhỉ, sẽ cho ta làm admin chăng, hoặc chí ít cũng sẽ cho ta lên một thang nào đó cao hơn, truy cập được nhiều dữ liệu nhạy cảm khác Cấu trúc code đê thay đổi cookie như sau: Trích: javascript:void(document.cookie"cookie=value") Trong trường hợp trên, bạn thay admin=1 như thế này nè: javascript:void(document.cookie="admin=1") Bây giờ kiểm tra cookie một lần nữa nào: username=username; password=password; admin=1; Hehe, thú vị đúng không. Tuy nhiên không phải mọi forum đều dễ dàng thế này. Bạn thử tìm một forum IPB hoặc phpBB để thực hành xem được ko? ) Phần tiếp của bài viết sẽ dịch vào ngày mai. Hôm nay assignment còn làm chưa xong T_T. Nasbla(VNISS) JavaScript Injection (bài 3) Tranh thủ 10phút rảnh rỗi dịch nốt cái alert: Bây giờ thì bạn cũng đã đoán được để Inject bằng Javascript, thì thay vì địa chỉ website thông thường kiểu http://<URL> bạn dùng dòng lệnh javascript chạy trực tiếp ngay trên thanh URL với cấu trúc: javascript:<command> Bạn cũng có thể sử dụng nhiều hơn một lệnh cùng một lúc, phân biệt bởi dấu ";" và lệnh được thực thi theo thứ tự: javascript:void(document.cookie="userid=ICP");aler t(document.cookie) Lệnh này sẽ hiển thị cookie sau khi đã đổi userid=ICP. Bây giờ ta sẽ nghiên cứu thêm về FORMS Có lẽ nhiều người còn chưa biết là hầu như tất cả các form trên trang web đều được dán nhãn forms[0]-forms[x], trong đó x là số thứ tự form cuối cùng của trang. Ví dụ: <form action="http://www.satan.com/email.php" method="post"> <input type="hidden" name="to" value="devil@butlins.co.uk"> Giả sử đây là form đầu tiên xuất hiện trên trang web thì nhãn của nó sẽ là forms[0] Biết được điều này, bạn có thể xem các giá trị đã được ngầm định bởi người thiết kế bằng lệnh alert. Trong ví dụ trên ta sẽ xem được địa chỉ email mà nội dung form sẽ gửi đến bằng lệnh javascript:alert(document.forms[0].to.value) Bạn sẽ thấy một pop up nội dung là "devil@butlins.co.uk" Bạn muốn thay đổi địa chỉ email này, chỉ cần làm tương tự như với cookie: javascript:void(document.forms[0].to.value="email@hackthissite.org") (Còn nữa) Nasbla(VNISS) JavaScript Injection (bài 4) Bài dịch khá tốt. Cố gắng dịch hết đi, anh sẽ cho vào translater team. À có một chỗ cần đính chính <! và > là để comment cho HTML, không phải cho javascript. Người ta thường dùng cấu trúc Trích: <script> <! javascript code here > </script> để những trình duyệt cũ, không hỗ trợ javascript bỏ qua phần mã đó mà không gặp lỗi. Comment trong javascript tương tự như C/C++ //comment 1 dòng /* Comment nhiều dòng */ DarkHawk(VNISS) Hehe, assignment done! Đã dịch xong phần còn lại: Phần 3: Bằng Javascript Injection, ta có thể xem và thay đổi giá trị của biến trong một đoạn chương trình Javascript nào đó nhúng trong trang web. Lấy ví dụ khi bạn xem mã nguồn HTML một trang web, bạn có đoạn code này: Trích: <SCRIPT LANGUAGE="JavaScript"> var a="test" </SCRIPT> Theo phần 1 ta đã biết ở đây biến a có giá trị là "test". Để xem giá trị của biến, ta có thể dùng lệnh: Trích: javascript:alert(a) và để thay đổi giá trị biến từ "test" thành "hello", ta gõ thế này: Trích: javascript:alert(a="hello") Tuy nhiên, mục đích chính của Javascript Injection là dùng để thay đổi thuộc tính của form. Giả sự ta có đoạn code sau: Trích: <form name="format" action="send.php" method="post"> <input type="hidden" name="mail" value="someone@somewhere.com"> <input type="text" name="name"> <input type="submit" value="submit"></form> Bây giờ, thay vì nội dung form sẽ được gửi đến địa chỉ someone@somewhere.com, chúng ta lại muốn nó được gửi đến địa chỉ khác cơ ^^ trong một số trường hợp bạn muốn nó đến email của bạn, và trong một số trường hợp khác, bạn muốn nó đến email của "victim" Để làm điều đó, dùng lệnh sau: Trích: javascript:alert(document.format.mail.value="me@ha cker.com") Qua những ví dụ cơ bản trên, ta có thể khái quát thế này, đó là để thay đổi một thành phần hay thuộc tính nào đó, luôn luôn tuân theo hệ thống cấp bậc: Ta bắt đầu từ thuộc tính lớn hơn đến nhỏ dần: 1) Bắt đầu bằng document 2) Tiếp theo là tên của đối tượng chúng ta muốn alert (ví dụ document.format.mail.value) hoặc thêm thành phần thuộc đối tượng và kèm theo tên của đối tượng (ví dụ document.format.mail.value) 3) Sau đó ta kết thúc bằng thuộc tính của thành phần chúng ta muốn thay đổi (ví du giá trị của thành phần mail: document.format.mail.value) 4) Các từ được phân biệt bởi dấu chấm câu '.' 5) Khi muốn thay đổi một thuộc tính, sử dụng dấu bằng '=' và theo sau là thuộc tính mới. *Chú ý: ta sử dụng dấu nháy kép "" khi thuộc tính mới là một chuỗi kí tự