Một ngày đẹp trời, tớ lên Google kiếm link tải Visual Studio. Như thường lệ, SVIT (sinhvienit.net) và VNZ (vn-zoom.com) luôn đứng top khi tìm kiếm mấy phần mềm… cr@ck. Khỏi phải suy nghĩ, tớ liền nhấn vào một link có thể tin tưởng (là trang nào thì các bạn cũng biết rồi đấy, liên quan tới bài viết mà). Vào đọc lướt qua, kéo tới phần tải về. Chợt tớ để ý vào link đầu tiên mà chúng ta có thể nhận ra ngay là một trình chuyển hướng (redirector):
Vốn là tay thích săn lỗ hổng, tớ nghĩ thoáng qua trong đầu… “Không biết lão Lai dùng meta refresh, javascript hay PHP header để chuyển hướng nhỉ?”. Nghĩ vậy, tớ liền nhanh tay copy link và thêm “view-source:” vào đầu.
Như vậy là sử dụng JavaScript, phần dữ liệu trên URL được in lại khá nhiều trong trang. Thử kiểm tra XSS xem nào!
Tất cả vị trí đều bị mã hóa ký tự HTML. Thử lại với nháy đơn thôi xem!
Hừm, có vẻ ổn. Một hi vọng lóe lên trong đầu! Tại vị trí này, chúng ta không cần sử dụng thẻ HTML nào vì chúng ta đang ở ngay giữa . Bypass thôi nào!
Kết thúc việc gán giá trị vào biến redirUrl: ';
Bắt đầu exploit payload của chúng ta: alert('Juno_okyo')
Vô hiệu hóa các ký tự thừa bằng chú thích: //
Kết hợp lại tớ được vector XSS như sau: ';alert('Juno_okyo')// Và kết quả là:
Từ XSS thành CSRF
Vì lỗ hổng XSS này nằm trên trình chuyển hướng liên kết ra ngoài SVIT nhưng link chuyển hướng lại cùng hostname với diễn đàn, tức là khả năng chiếm phiên làm việc hoàn toàn khả thi. Hơn nữa, Security Token của vBB không thay đổi (token không tự tái tạo lại sau mỗi truy vấn mà giữ nguyên trong suốt một phiên làm việc), tớ nghĩ ngay tới khả năng có thể chiếm token để thực hiện mọi thao tác dưới danh nghĩa người dùng bất kỳ =>CSRF.
Xây dựng kịch bản tấn công
Tạo một URL chuyển hướng sử dụng DOM để chèn một file JS chứa mã khai thác.
Tạo một trang HTML sử dụng Iframe trỏ tới URL ở bước 1.
Trong file JS ở bước 1, tạo truy vấn tới SVIT để chiếm Security Token và sử dụng token để đăng xuất tài khoản của thành viên đã vô tình truy cập vào trang web ở bước 2.
Nếu bước 3 thành công, chúng ta xác nhận rằng lỗ hổng CSRF tồn tại!
Proof of Concept
Video này tớ sẽ demo lại toàn bộ kịch bản tấn công ở trên. Và với việc tớ quay lại demo thì hẳn các bạn đã đoán ra kết quả của kịch bản này như thế nào rồi đó! Đừng quên đăng ký theo dõi kênh Youtube của tớ để nhận được thông báo mỗi khi có video mới nhé!
Timeline
4:23 PM – 16/07/2016: Lỗ hổng được báo cáo tới quản trị viên.
5:00 PM – 16/07/2016: Quản trị viên Sinhvienit.net xác nhận lỗ hổng tồn tại và đề nghị một khoản tiền thưởng.
5:05 PM – 16/07/2016: Lỗ hổng được khắc phục. Hai bên trao đổi thêm một số thông tin liên quan.
Về tác giả
manhtuan
Cập nhật thông tin mới nhấtNhận các thông tin mới nhất về mối đe dọa, báo cáo an ninh mạng từ CyStack về hòm thư điện tử của bạn
Thảo luận (0)
Đăng nhập để thảo luận
Bài viết liên quan
{"success":true,"head":"<title>Tôi đã hack trang SinhVienIT.net như thế nào? - CyStack Tutorial</title>\n<meta name=\"description\" content=\"Một ngày đẹp trời, tớ lên Google kiếm link tải Visual Studio. Như thường lệ, SVIT (sinhvienit.net) và VNZ (vn-zoom.com) luôn đứng top khi tìm kiếm mấy phần\"/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-video-preview:-1, max-image-preview:large\"/>\n<link rel=\"canonical\" href=\"https://blog.cystack.org/tutorial/2016/07/23/toi-da-hack-trang-sinhvienit-net-nhu-the-nao/\" />\n<meta property=\"og:locale\" content=\"en_US\" />\n<meta property=\"og:type\" content=\"article\" />\n<meta property=\"og:title\" content=\"Tôi đã hack trang SinhVienIT.net như thế nào? - CyStack Tutorial\" />\n<meta property=\"og:description\" content=\"Một ngày đẹp trời, tớ lên Google kiếm link tải Visual Studio. Như thường lệ, SVIT (sinhvienit.net) và VNZ (vn-zoom.com) luôn đứng top khi tìm kiếm mấy phần\" />\n<meta property=\"og:url\" content=\"https://blog.cystack.org/tutorial/2016/07/23/toi-da-hack-trang-sinhvienit-net-nhu-the-nao/\" />\n<meta property=\"og:site_name\" content=\"CyStack Tutorial\" />\n<meta property=\"article:tag\" content=\"vi\" />\n<meta property=\"article:section\" content=\"Chuyên gia\" />\n<meta property=\"og:updated_time\" content=\"2026-03-05T15:04:41+07:00\" />\n<meta property=\"og:image\" content=\"https://i0.wp.com/securitydaily.net/wp-content/uploads/2016/07/sinhvienit-xss-csrf-exploit.png\" />\n<meta property=\"og:image:secure_url\" content=\"https://i0.wp.com/securitydaily.net/wp-content/uploads/2016/07/sinhvienit-xss-csrf-exploit.png\" />\n<meta property=\"og:image:width\" content=\"776\" />\n<meta property=\"og:image:height\" content=\"331\" />\n<meta property=\"og:image:alt\" content=\"Sinhvienit.net\" />\n<meta property=\"og:image:type\" content=\"image/jpeg\" />\n<meta property=\"article:published_time\" content=\"2016-07-23T01:40:45+07:00\" />\n<meta property=\"article:modified_time\" content=\"2026-03-05T15:04:41+07:00\" />\n<meta name=\"twitter:card\" content=\"summary_large_image\" />\n<meta name=\"twitter:title\" content=\"Tôi đã hack trang SinhVienIT.net như thế nào? - CyStack Tutorial\" />\n<meta name=\"twitter:description\" content=\"Một ngày đẹp trời, tớ lên Google kiếm link tải Visual Studio. Như thường lệ, SVIT (sinhvienit.net) và VNZ (vn-zoom.com) luôn đứng top khi tìm kiếm mấy phần\" />\n<meta name=\"twitter:image\" content=\"https://i0.wp.com/securitydaily.net/wp-content/uploads/2016/07/sinhvienit-xss-csrf-exploit.png\" />\n<meta name=\"twitter:label1\" content=\"Written by\" />\n<meta name=\"twitter:data1\" content=\"manhtuan\" />\n<meta name=\"twitter:label2\" content=\"Time to read\" />\n<meta name=\"twitter:data2\" content=\"2 minutes\" />\n<script type=\"application/ld+json\" class=\"rank-math-schema\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https://blog.cystack.org/tutorial/#person\",\"name\":\"CyStack Tutorial\"},{\"@type\":\"WebSite\",\"@id\":\"https://blog.cystack.org/tutorial/#website\",\"url\":\"https://blog.cystack.org/tutorial\",\"name\":\"CyStack Tutorial\",\"publisher\":{\"@id\":\"https://blog.cystack.org/tutorial/#person\"},\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"@id\":\"https://i0.wp.com/securitydaily.net/wp-content/uploads/2016/07/sinhvienit-xss-csrf-exploit.png?fit=776%2C331&ssl=1\",\"url\":\"https://i0.wp.com/securitydaily.net/wp-content/uploads/2016/07/sinhvienit-xss-csrf-exploit.png?fit=776%2C331&ssl=1\",\"width\":\"776\",\"height\":\"331\",\"inLanguage\":\"en-US\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://blog.cystack.org/tutorial/2016/07/23/toi-da-hack-trang-sinhvienit-net-nhu-the-nao/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":\"1\",\"item\":{\"@id\":\"https://blog.cystack.org/tutorial\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"position\":\"2\",\"item\":{\"@id\":\"https://blog.cystack.org/tutorial/category/chuyen-gia/\",\"name\":\"Chuy\\u00ean gia\"}},{\"@type\":\"ListItem\",\"position\":\"3\",\"item\":{\"@id\":\"https://blog.cystack.org/tutorial/2016/07/23/toi-da-hack-trang-sinhvienit-net-nhu-the-nao/\",\"name\":\"T\\u00f4i \\u0111\\u00e3 hack trang SinhVienIT.net nh\\u01b0 th\\u1ebf n\\u00e0o?\"}}]},{\"@type\":\"WebPage\",\"@id\":\"https://blog.cystack.org/tutorial/2016/07/23/toi-da-hack-trang-sinhvienit-net-nhu-the-nao/#webpage\",\"url\":\"https://blog.cystack.org/tutorial/2016/07/23/toi-da-hack-trang-sinhvienit-net-nhu-the-nao/\",\"name\":\"T\\u00f4i \\u0111\\u00e3 hack trang SinhVienIT.net nh\\u01b0 th\\u1ebf n\\u00e0o? - CyStack Tutorial\",\"datePublished\":\"2016-07-23T01:40:45+07:00\",\"dateModified\":\"2026-03-05T15:04:41+07:00\",\"isPartOf\":{\"@id\":\"https://blog.cystack.org/tutorial/#website\"},\"primaryImageOfPage\":{\"@id\":\"https://i0.wp.com/securitydaily.net/wp-content/uploads/2016/07/sinhvienit-xss-csrf-exploit.png?fit=776%2C331&ssl=1\"},\"inLanguage\":\"en-US\",\"breadcrumb\":{\"@id\":\"https://blog.cystack.org/tutorial/2016/07/23/toi-da-hack-trang-sinhvienit-net-nhu-the-nao/#breadcrumb\"}},{\"@type\":\"Person\",\"@id\":\"https://blog.cystack.org/tutorial/author/manhtuan/\",\"name\":\"manhtuan\",\"url\":\"https://blog.cystack.org/tutorial/author/manhtuan/\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https://secure.gravatar.com/avatar/66b98fc0d64c26801021eb1aaab05d29ddaa5600db8d50e3849bc571b5feaba4?s=96&d=mm&r=g\",\"url\":\"https://secure.gravatar.com/avatar/66b98fc0d64c26801021eb1aaab05d29ddaa5600db8d50e3849bc571b5feaba4?s=96&d=mm&r=g\",\"caption\":\"manhtuan\",\"inLanguage\":\"en-US\"}},{\"@type\":\"BlogPosting\",\"headline\":\"T\\u00f4i \\u0111\\u00e3 hack trang SinhVienIT.net nh\\u01b0 th\\u1ebf n\\u00e0o? - CyStack Tutorial\",\"keywords\":\"Sinhvienit.net,XSS\",\"datePublished\":\"2016-07-23T01:40:45+07:00\",\"dateModified\":\"2026-03-05T15:04:41+07:00\",\"articleSection\":\"Chuy\\u00ean gia\",\"author\":{\"@id\":\"https://blog.cystack.org/tutorial/author/manhtuan/\",\"name\":\"manhtuan\"},\"publisher\":{\"@id\":\"https://blog.cystack.org/tutorial/#person\"},\"description\":\"M\\u1ed9t ng\\u00e0y \\u0111\\u1eb9p tr\\u1eddi, t\\u1edb l\\u00ean Google ki\\u1ebfm link t\\u1ea3i Visual Studio. Nh\\u01b0 th\\u01b0\\u1eddng l\\u1ec7, SVIT (sinhvienit.net) v\\u00e0 VNZ (vn-zoom.com) lu\\u00f4n \\u0111\\u1ee9ng top khi t\\u00ecm ki\\u1ebfm m\\u1ea5y ph\\u1ea7n\",\"name\":\"T\\u00f4i \\u0111\\u00e3 hack trang SinhVienIT.net nh\\u01b0 th\\u1ebf n\\u00e0o? - CyStack Tutorial\",\"@id\":\"https://blog.cystack.org/tutorial/2016/07/23/toi-da-hack-trang-sinhvienit-net-nhu-the-nao/#richSnippet\",\"isPartOf\":{\"@id\":\"https://blog.cystack.org/tutorial/2016/07/23/toi-da-hack-trang-sinhvienit-net-nhu-the-nao/#webpage\"},\"image\":{\"@id\":\"https://i0.wp.com/securitydaily.net/wp-content/uploads/2016/07/sinhvienit-xss-csrf-exploit.png?fit=776%2C331&ssl=1\"},\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https://blog.cystack.org/tutorial/2016/07/23/toi-da-hack-trang-sinhvienit-net-nhu-the-nao/#webpage\"}}]}</script>\n"}