01/10/2018, 00:12

Mức độ nghiêm trọng của XSS ? Cách thức báo cáo khi phát hiện một lỗ hổng XSS của trang web

Mấy bài viết “Tôi đã hack trang X nhưng thế nào” của anh @juno_okyo đã truyền cảm hứng cho mình đi hack lỗi XSS của các trang web. Sau 30p tìm mồi và khai thác thì mình đã chèn được một đoạn script BẤT KÌ vào body của website.

Nhưng mình vẫn chưa hiểu được mức độ nghiêm trọng của vấn đề này. Vì người dùng phải trang cập vào

/search.php?s=<script>alert(1)</script> thì đoạn script mới được thực thi. Cho mình hỏi là như vậy có phải một lỗi XSS nghiêm trọng không? Tình huống giả định để khai thác lỗi này là như thế nào? Kèm theo đó là hành động tiếp theo của mình là gì?

Khoa Nguyen viết 02:28 ngày 01/10/2018

@Levis cảm ơn anh

Để em nói rõ hơn về cách tìm ra lỗi của em

Gõ vào khung search mấy thẻ <script> ==> phát hiện trang web không sanitize mà chèn thẳng vào markup.

Viết lại cái search query trên, chèn vào script đọc document.cookie, gửi cookie tới external server ==> okie luôn

Trang web đó cho phép truy cập kết quả tìm kiếm bằng đường link /search.php?s=term nên em có thể dễ dàng gửi đường link này để người dùng truy cập vào và chạy script em thích

Anh đánh giá mức độ giúp em. Rồi em nên làm gì tiếp theo? (ý là cách báo cho admin)

P/s: Áp dụng cùng phướng thức trên thì em đã tìm ra được 5 trang dính lỗi XSS. Có vẻ là dùng mã nguồn

Phan Hoàng viết 02:28 ngày 01/10/2018

Bạn phải làm sao để đoạn mã đó được thực thi ở máy # (JS thì có thể đọc được cookie của browser, từ cookie bạn có thể tự đăng nhập vào site mà không cần mật khẩu, rồi từ cookie đó biết đâu bạn truy cập được vào quản lý sync của google, từ bookmark, mật khẩu, số pin, tài khoản tín dụng, …)

Còn để thực thi đoạn JS đó thì làm sao bạn chèn nó vào trang web của người ta là được ^^

  • Ví dụ, trang web đó cho comment, bạn chèn đống JS đó vào comment. Comment trang web đó không strip-tags (hoặc bạn dùng thủ thuật nào đó) họ ghi cái đống JS này vào db. Lần sau, bất cứ người nào xem comment của bạn sẽ bị bạn lấy hết cookie và …
  • Bạn chèn JS vào ảnh tiff rồi gửi cho bạn bè, … hoặc … Làm sao mà khi nó đọc cái ảnh đó, nó thực thi script của bạn được embeded trong đó. Ảnh svg cũng nhúng được script.
  • Các form không được gắn token-key hoặc token bị lấy trộm ở cookie rồi nên submit ở chỗ quái nào cũng được (CSRF), dựa vào đó có thể yêu cầu đổi pass admin nếu mình biết url của đổi pass ^^.
  • … nhiều nữa.
Khoa Nguyen viết 02:22 ngày 01/10/2018

Ảnh svg cũng nhúng được script.

Haha. Cái này em gửi vòng vòng cho bạn bè nhiều r https://cdn.rawgit.com/thangngoc89/accaccbe349cc7c5eaad878ad17235cd/raw/03f88c9bf50d8c67130e04aaf6d87033f334569f/dog.svg (an toàn)

Bạn phải làm sao để đoạn mã đó được thực thi ở máy #

Như vậy là em cần phải khai thác thêm phải không? Gửi một đường link lòng vòng trên mạng và mong người ta nhấp vào để đoạn script được thực thì là vô vọng ?

Phan Hoàng viết 02:25 ngày 01/10/2018

Thì phải làm sao để comment đó bá đạo, nhiều ảnh nude chẳng hạn (cái script thì hiển nhiên nó có hiện ra cho người dùng đâu). Nói chung, làm sao để bài comment, bài post đó hay, hấp dẫn, giật tít, câu view thật … ngon vào. Kết hợp với các phương pháp spam # (ví dụ gửi link vào hòm thư, đọc danh bạ của họ rồi autosend cho tất cả danh bại đó) sao cho reach tới nhiều người nhất. Cái này cũng phải đòi hỏi nghệ thuật đấy.

Khoa Nguyen viết 02:17 ngày 01/10/2018

Thì phải làm sao để comment đó bá đạo, nhiều ảnh nude chẳng hạn (cái script thì hiển nhiên nó có hiện ra cho người dùng đâu). Nói chung, làm sao để bài comment, bài post đó hay, hấp dẫn, giật tít, câu view thật … ngon vào. Kết hợp với các phương pháp spam # (ví dụ gửi link vào hòm thư, đọc danh bạ của họ rồi autosend cho tất cả danh bại đó) sao cho reach tới nhiều người nhất. Cái này cũng phải đòi hỏi nghệ thuật đấy.

nghe hấp dẫn quá anh

Xét về mức độ nguy hiểm (Severity), thì XSS luôn luôn được xem là nguy hiểm ở mức độ cao. Nếu bạn có ý tốt muốn report lại bug của website đó, thì thực hiện theo các bước sau:

Kiểm tra lại một lần nữa, với một máy victim giả định khác, để đảm bảo rằng bug tồn tại và có thể khai thác được.
Trong quá trình thực hiện kiểm tra, nếu thành công thì quay lại video hoặc chụp ảnh để làm bằng chứng.
Gửi thông báo lỗi cho bên quản trị website, kèm theo video, ảnh thực hiện khai thác được để chứng mình. Tuyệt đối không public lỗi đó, chỉ có 2 bên được biết, bạn và phía quản trị của website.
Nếu họ nhận được thông báo lỗi, và tiến hành fix lỗi, thường thì họ sẽ nhờ bạn kiểm tra lại lần nữa để đảm bảo rằng lỗi đã được fix. Bạn có thể làm hay không làm thì tùy, nhưng nên làm, coi như là làm tròn trách nhiệm.
Việc public thông tin về lỗi chỉ được làm sau khi hệ thống đã fix thành công, và được sự đồng thuận của bên quản trị hệ thống. Thường là họ sẽ đồng ý, với các quản trị viên văn minh, họ cho phép public lỗi cũng là cách để họ chứng tỏ rằng bên họ làm việc chuyên nghiệp và có trách nhiệm.

Để em làm theo guide line này. Cảm ơn anh.

Bài liên quan
0