1. Trang chủ
  2. » Công Nghệ Thông Tin

Kiểm thử LDAP, ORM, XML, XPath Injection

78 215 4

Đ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

Cấu trúc

  • MỤC LỤC

  • DANH SÁCH CÁC KÝ HIỆU TỪ VIẾT TẮT

  • Web host manager

  • DANH SÁCH CÁC BẢNG

  • DANH SÁCH CÁC HÌNH VẼ

  • MỞ ĐẦU

  • CHƯƠNG 1: TỔNG QUAN VỀ KIỂM THỬ BẢO MẬT

    • 1.1 Tìm hiểu về Security Testing

    • 1.2 Các loại nguy cơ bảo mật

      • 1.2.1 Privilege Elevation (Chiếm quyền điều khiển)

      • 1.2.2 SQL Injection (Lỗ hổng truy vấn dữ liệu)

      • 1.2.3 Unauthorized Data Access (Truy vấn dữ liệu trái phép)

      • 1.2.4 URL Manipulation (Thao túng URL)

      • 1.2.5 Denial of Service (DoS – Từ chối dịch vụ)

      • 1.2.6 Data Manipulation (Thao tác dữ liệu)

      • 1.2.7 Identity Spoofing (Giả mạo nhận dạng)

      • 1.2.8 Cross-Site Scripting (XSS)

  • Hình 1.1 : Top 10 methods of websites compromise.

    • 1.3 Các kỹ thuật kiểm thử bảo mật

      • 1.3.1 Cross Site Scripting (XSS):

      • 1.3.2 Ethical Hacking (Hacker mũ trắng) :

      • 1.3.3 Password Cracking (Bẻ khóa password)

      • 1.3.4 Penetration Testing (Kiểm tra thâm nhập)

      • 1.3.5 Risk Assessment

      • 1.3.6 Security Auditing

      • 1.3.7 Security Scanning & Vulnerability Scanning

      • 1.3.8 SQL Injection

      • 1.3.9 URL manipulation through HTTP GET methods

      • 1.3.10 Buffer Overflow Testing

  • Chương II: Tổng quan về kỹ thuật kiểm thử

  • lỗ hổng LDAP Injection

    • 2.1 Tổng quan về lỗ hổng LDAP Injection

      • 2.1.1 Tổng quan về LDAP

      • 2.1.2 Lỗ hổng LDAP Injection trong ứng dụng Web

        • 2.1.2.1 AND LDAP Injection

        • 2.1.2.2 OR LDAP Injection

      • 2.1.3 Blind LDAP Injection

        • 2.1.3.1 AND Blind LDAP Injection

        • 2.1.3.2 OR Blind LDAP Injection

    • 2.2 Tổng quan về kiểm thử lỗ hổng LDAP Injection

      • 2.2.1 Các kỹ thuật kiểm thử LDAP Injection

  • Bảng 2.1 : Examples of Obtaining user information

    • 2.2.2. Các trường hợp và đánh giá

      • 2.2.2.1 Self Service Password (Login Bypass, Information Disclosure)

  • Hình 2.2: Correct technique of changing password in Self Service Password

  • Hình 2.4 : Confirmation email sent to the attacker

    • 2.2.2.2 Custom Web Application (Login Bypass)

  • Hình 2.5 : Class diagram for Custom application (Login Bypass)

  • Hình 2.6 : Flowchart for login bypass type of LDAP injection attack

  • Bảng 2.2 : Pre and post-conditions for Login Bypass

  • Bảng 2.3 : Altered pre-conditions and test inputs for Login Bypass (P1)

  • Bảng 2.4 : Generation of test cases with altered pre and post-conditions for Login Bypass (P1)

    • 2.2.2.3 Custom Web Application (Privilege Escalation)

  • Hình 2.7 : Class diagram for Custom application (Privilege Escalation)

  • Hình 2.8: Flowchart for privilege escalation type of LDAP injection attack

  • Bảng 2.5 : Pre and post-conditions for Privilege Escalation

  • Bảng 2.6 : Altered pre-conditions and test inputs for Privilege Escalation (P1 and P3)

  • Bảng 2.7 : Generation of test cases with altered pre and post-conditions for Privilege Escalation (P1 and P3)

    • 2.2.2.4 Custom Web Application (Information Alteration)

  • Hình 2.9 : Class diagram for Custom application (Information Alteration)

  • Hình 2.10 : Flowchart for information alteration type of LDAP injection attack

  • Bảng 2.8 : Pre and post-conditions for Information Alteration

  • Bảng 2.9 : Altered pre-conditions and test inputs for Information Alteration (P1)

  • Bảng 2.10 : Generation of test cases with altered pre and post-conditions for Information Alteration (P1)

    • 2.2.3 Công cụ

  • Chương III : Tổng quan về kỹ thuật kiểm thử lỗ hổng

  • ORM Injection

    • 3.1 Ánh xạ quan hệ hướng đối tượng - ORM

    • 3.2 Mô hình

      • 3.2.1 Mô hình đối tượng

      • 3.2.2 Mô hình quan hệ

    • 3.3 Không tương thích (IMPEDANCE MISMATCH)

      • 3.3.1 Nhận dạng đối tượng

      • 3.3.2 Kế thừa

      • 3.3.3 Cấu trúc, hành vi và quy tắc truy cập

    • 3.4 Lĩnh vực nghiên cứu

      • 3.4.1 Truy vấn đệ quy

      • 3.4.2 Hệ thống phân cấp kế thừa

      • 3.4.3 Hiệu suất của đối tượng và quan hệ đối tượng

    • 3.5 Công cụ

    • 3.6 Kiểm thử ORM

    • 3.7. Tổng kết

  • CHƯƠNG IV : Tổng quan về kỹ thuật kiểm thử lỗ hổng

  • XML Injection

    • 4.1. Tìm hiểu về XML

    • 4.2 Các cuộc tấn công bằng XML Injection

      • 4.2.1 Tấn công XML Bomb

      • 4.2.2 Giảm thiểu XML Bomb

      • 4.2.3 XML External Entity (XXE) Attacks

      • 4.2.4 Giảm thiểu XML External Entity (XXE) Attacks

      • 4.2.5 Giảm thiểu phân tích cú pháp XML

    • 4.3 Kỹ thuật kiểm thử XML Injection

      • Kiểm thử

  • Chương V: Tổng quan về kỹ thuật kiểm thử lỗ hổng

  • XPATH Injection

    • 5.1 Giới thiệu về XPATH

    • 5.2 Ý nghĩa bảo mật

    • 5.3 XPATH Inject đơn giản

    • 5.4 Kỹ thuật sử dụng

      • 5.4.1 Thu thập thông tin XPATH

      • 5.4.2 Blind XPATH Injection

    • 5.6 Bảo vệ chống lại XPATH Injection

  • KẾT LUẬN

  • TÀI LIỆU THAM KHẢO

Nội dung

Tấn công Injection đã được xếp hạng trong số các loại lỗ hổng phổ biến nhất. Các cuộc tấn công khai thác loại lỗ hổng như vậy tăng nhanh theo thời gian LDAP Injection, ORM Injection, XML Injection và XPath Injection là những kỹ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng của việc kiểm tra dữ liệu đầu vào trong các ứng dụng, web...v.v từ đó để inject (tiêm vào) và làm sai lệch chức năng vốn có của câu truy vấn câu lệnh thực thi, thi hành các câu lệnh đó một cách bất hợp pháp. Các lỗi injection có thể cho phép những kẻ tấn công thực hiện các thao tác cực kì nguy hiểm trên ứng dụng, tấn công chủ động (LDAP Injection, ORM Injection, XPath Injection) hay tấn công chủ động lẫn bị động(XML Injection) có thể khai thác, thay đổi, đánh cắp dữ liệu một cách bất hợp pháp, có thể gây tổn thất cực lớp cho một cá nhân hay tổ chức. Vì vậy Các kỹ thuật kiểm thử rất quan trọng, không chỉ để phát hiện các khả năng dễ bị tấn công trong các dịch vụ web trước khi chúng có thể được công khai, mà còn để giảm thử nghiệm trong bối cảnh có số lượng dịch vụ và tham số đầu vào của chúng lớn. giảm tối đa khả năng ứng dụng bị tấn công bởi các lỗi đã biết và nguy cơ về các lỗi tiềm ẩn trong hệ thống.

BAN CƠ YẾU CHÍNH PHỦ HỌC VIỆN KỸ THUẬT MẬT Mà ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Đề tài Tìm hiểu kỹ thuật kiểm thử lỗ hổng LDAP Injection, ORM Injection, XML Injection XPath Injection Học phần: Đánh giá Kiểm định an toàn hệ thống thông tin Sinh viên thực hiện: Vũ Văn Hưởng Đỗ Thị Thanh Huyền Hồ Sỹ Lưu Phan Duy Nho Bùi Hồng Thư Cán hướng dẫn : Th.S Phạm Minh Thuấn Hà Nội, 05 /2019 MỤC LỤC DANH SÁCH CÁC KÝ HIỆU TỪ VIẾT TẮT HTTP HyperText Transfer Protocol LDAP Lightweight Directory Access Protocol ORM Object Relational Mapping XPATH XML Path Language XSS Cross Site Scripting URL Uniform Resource Locator SQL Structured Query Language WHM Web host manager DANH SÁCH CÁC BẢNG Bảng 2.1 : Examples of Obtaining user information Bảng 2.2 : Pre and post-conditions for Login Bypass Bảng 2.3 : Altered pre-conditions and test inputs for Login Bypass (P1) Bảng 2.4 : Generation of test cases with altered pre and post-conditions for Login Bypass (P1) Bảng 2.5 : Pre and post-conditions for Privilege Escalation Bảng 2.6 : Altered pre-conditions and test inputs for Privilege Escalation (P1 and P3)27 Bảng 2.7 : Generation of test cases with altered pre and post-conditions for Privilege Escalation (P1 and P3) Bảng 2.8 : Pre and post-conditions for Information Alteration Bảng 2.9 : Altered pre-conditions and test inputs for Information Alteration (P1) Bảng 2.10 : Generation of test cases with altered pre and post-conditions for Information Alteration (P1) DANH SÁCH CÁC HÌNH VẼ Hình 1.1 : Top 10 methods of websites compromise Hình 2.1: LDAP injection Hình 2.2: Correct technique of changing password in Self Service Password Hình 2.3 : Attacker using '*' wildcard to access the system Hình 2.4 : Confirmation email sent to the attacker Hình 2.5 : Class diagram for Custom application (Login Bypass) Hình 2.6 : Flowchart for login bypass type of LDAP injection attack Hình 2.7 : Class diagram for Custom application (Privilege Escalation) Hình 2.8: Flowchart for privilege escalation type of LDAP injection attack Hình 2.9 : Class diagram for Custom application (Information Alteration) Hình 2.10 : Flowchart for information alteration type of LDAP injection attack MỞ ĐẦU Đơn giản website ngày nhiều mà hacker ngày manh động Đặc biệt các thông tin chia sẻ/lưu trữ web ngày tăng giá trị : thông tin khách hàng, thông tin giao dịch tài chính, thơng tin tài khoản/thẻ ngân hàng… Do lỗ hổng bảo mật web mồi ngon hacker thiệt hại to lớn Thế Giới : Tháng 2/2018, 4.000 website, có phủ Anh, Mỹ, Australia đồng loạt gặp cố bảo mật Nguyên nhân đến từ plugin bên thứ ba có cài sẵn mã độc âm thầm đào tiền ảo người dùng máy tính bị nhiễm khơng hay biết Hồi tháng 6/2018, Dixons Carphone, công ty bán lẻ Anh, cho biết khoảng 1,2 triệu thông tin cá nhân thẻ toán khách hàng bị đánh cắp Tuy nhiên, sớ xác cơng bớ sau lên đến 10 triệu Việt Nam : Ngày 1/11/2018, thành viên diễn đàn Raidsforum đăng tải các tập tin có chứa liệu quan trọng khách hàng cho đại gia bán lẻ Thế giới Di động Thông tin hacker đưa bao gồm thư điện tử, sớ thẻ tín dụng, lịch sử giao dịch ngân hàng, giao dịch thương mại điện tử thực hiện Thế giới di động Tối 13/10/2018, địa thuộc website ngân hàng Hợp tác xã Việt Nam hiển thị thông tin tiếng Anh với nội dung: "Đã bị hack Sogo Nakamoto" Tin tặc tun bớ nắm tay tồn sở liệu người dùng ngân hàng trực tuyến trình quản lý máy chủ web (WHM - Web Host Manager) Tin tặc thông báo bán 275.000 liệu khách hàng với giá 100.000 USD người mua phải toán Bitcoin Bitcoin Cash CHƯƠNG 1: TỔNG QUAN VỀ KIỂM THỬ BẢO MẬT 1.1 Tìm hiểu Security Testing Security Testing (kiểm thử bảo mật) loạt các kỹ thuật kiểm tra độ bảo mật nhằm tìm kiếm tất cà các lỗ hổng điểm yếu hệ thống Hiện nay, phần quan trọng vòng đời phát triển phần mềm Việc Kiểm thử bảo mật không đảm bảo hệ thớng an tồn 100% giảm thiểu tới đa các lỗi bảo mật, giúp hệ thớng trở nên khó nhai với các hacker (tất nhiên với hacker cao thủ nhai tất) Rà soát các điểm yếu hệ thống – Security Scanning: bao gồm việc xác định các điểm yếu mạng hệ thống, sau cung cấp các giải pháp nhằm giảm thiểu các rủi ro Có thể thực hiện thủ cơng tự động Đánh giá bảo mật cách công vào hệ thống – Penetration testing: Đây loại kiểm thử mơ cơng từ phía hacker thiếu thiện ý Kiểm thử bao gồm việc phân tích hệ thớng cụ thể, tìm các lỗ hổng tiềm ẩn cách công từ bên Đánh giá rủi ro – Risk Assessment: Kiểm thử liên quan đến phân tích các rủi ro bảo mật nhận thấy Các rủi ro phân loại Low, Medium, High Loại kiểm thử đưa các khuyến nghị nhằm giảm thiểu các rủi ro Kiểm toán an ninh – Security Auditing: Kiểm tra bảo mật nội ứng dụng OS Tấn cơng vào hệ thớng tìm các điểm yếu bảo mật – Ethical hacking: Các hacker thiện ý thực hiện phương pháp tương tự kẻ công “thiếu thiện ý”, với mục tiêu tìm kiếm các điểm yếu bảo mật xác định cách thức để thâm nhập vào mục tiêu, nhằm đánh giá mức độ thiệt hại các lổ hỗng gây ra, từ đưa cảnh báo phương án gia cớ, kiện tồn bảo mật thích hợp Posture assessment: Kết hợp Security Scanning, Ethical hacking Risk Assessment đánh giá bảo mật tổng thể tổ chức Trước vào phân tích cách thức tiếp cận với các kỹ thuật kiểm thử bảo mật, cần hiểu rõ các loại nguy bảo mật gì, từ với loại nguy cơ, ta có cách tiếp cận kỹ thuật kiểm thử khác 1.2 Các loại nguy bảo mật 1.2.1 Privilege Elevation (Chiếm quyền điều khiển) Chiếm quyền điều khiển dạng cơng mà hacker có tài khoản thường hệ thống sử dụng tài khoản để tăng đặc quyền điều khiển hệ thớng (lên mức admin) Nếu thành công, kiểu công có thể dẫn đến việc hacker chiếm các đặc quyền cao root Unix, Administrator Web Một có các quyền này, hacker có thể thực hiện xâm nhập tồn diện hệ thớng cách hiệu 1.2.2 SQL Injection (Lỗ hổng truy vấn liệu) Đây lỗi cổ xưa đất, nhiên đến hiện nỗi ác mộng với các coder tay mơ Thực tế hiện tại, hầu hết các framework hỗ trợ xử lý lỗ hổng nên trừ có coder gà mờ muốn code web từ tay trắng dễ xảy lỗi Dù vậy, SQL Injection lỗ hổng nguy hiểm, khai thác được, hacker có thể truy vấn tồn thơng tin database Cơ chế SQL Injection thực tế đơn giản, Hacker thay đổi thông tin nhập vào các textbox từ thay đổi câu lệnh SQL thơng qua việc cộng chuỗi Với các Web thực hiện truy vấn thông qua SQL Thuần, tức mang thẳng câu lệnh từ các input vào chạy, việc khai thác thông SQL Injection thực dễ dàng 1.2.3 Unauthorized Data Access (Truy vấn liệu trái phép) Trong thực hiện SQL Injection để truy vấn tồn thơng tin chiếm quyền điều khiển tồn hệ thớng thường khó xảy ra, việc truy vấn liệu trái phép lại kiểu công phổ biến Truy vấn liệu trái phép bao gồm nhiều cách thức sau : • • Thơng qua các hoạt động hiển thị liệu Thông qua việc giám sát việc truy cập người khác để lấy thông tin xác thực • Thơng qua việc giám sát liệu truy cập người khác 1.2.4 URL Manipulation (Thao túng URL) URL Manipulation cách thức công thông qua việc thao túng chuỗi truy vấn URL Website, qua hacker có thể nắm các thơng tin quan trọng Cách thức công thường nhắm vào các ứng dụng web sử dụng giao thức HTTP GET để truyền thông tin client server, sử dụng giao thức này, thông tin truyền các tham số hiển thị rõ ràng URL 1.2.5 Denial of Service (DoS – Từ chối dịch vụ) Dos cách thức công nhằm vào máy chủ (server) tài nguyên mạng (switch, banwitch…) với mục đích làm gián đoạn quá trình cung cấp dịch vụ, đơi gây cao tải database sập tồn Website, khơng thể khởi động lại Đây dạng công phổ biết giới hiện nay, đa dạng từ cách thức cơng phòng chớng Nói chung làm cách được, huy động thủ cơng máy móc (botnet) để truy vấn liên tục vào web gây sập web, kiểu mua vé Online VFF dạng DoS thủ công từ 100000 người thích xem bóng đá thích bán vé bóng đá em 1.2.6 Data Manipulation (Thao tác liệu) Thao tác liệu cách thức công mà hacker thay đổi liệu page hiển thị thông tin website để khoe mẽ cho oai 1.2.7 Identity Spoofing (Giả mạo nhận dạng) Giả mao nhận dạng kỹ thuật tin tặc sử dụng thông tin đăng nhập của người dùng thiết bị hợp pháp, qua khởi động các công vào máy chủ mạng, đánh cắp liệu bypass quá các quyền kiểm soát 1.2.8 Cross-Site Scripting (XSS) Cross-site scripting lỗ hổng phổ biến ứng dụng web Để khai thác lỗ hổng XSS, hacker chèn mã độc thông qua các đoạn script để thực thi chúng phía client Thơng thường, các công XSS sử dụng để vượt qua các kiểm soát truy cập mạo danh người dùng Phân loại: Có loại Reflected XSS, Stored XSS DOM-based XSS Dưới thống kê tỷ lệ phát hiện các nguy bảo mật, top DoS, SQL Injection Cross-Site Scripting Hình 1.1 : Top 10 methods of websites compromise 1.3 Các kỹ thuật kiểm thử bảo mật Sau hiểu sơ qua các cách thức công bảo mật, tiếp tục suy nghĩ xem làm cách để chống lại chúng Tất nhiên không thể tay khơng bắt giặc được, để có thể triển khai cách hiệu các nghiệp vụ kiểm thử bảo mật, tester cần có các kiến thức định giao thức HTTP, chế client-server, SQL XSS Dưới mô tả sơ các kỹ thuật kiểm thử bảo mật : 1.3.1 Cross Site Scripting (XSS): Tester cần thực hiện kiểm tra việc lọc đầu vào có áp dụng với tất các loại liệu nhập vào chưa (Textbox, URL…) Đảm bảo loại bỏ tồn các nội dung khơng hợp lệ, các thẻ HTML thẻ SCRIPT Đồng thời kiểm tra các ký tự đặc biệt : dấu nháy đơn, dấu lớn (>), dấu nhỏ (&xxe; Thử nghiệm có thể làm sập máy chủ web (trên hệ thớng UNIX), trình phân tích cú pháp XML cớ gắng thay thực thể nội dung tệp /dev/random file Các xét nghiệm hữu ích khác sau: ]>&xxe; ]>&xxe; ]>&xxe; ]>&xxe; Tag Injection Sau hoàn thành bước đầu tiên, người kiểm tra có số thông tin cấu trúc tài liệu XML Sau đó, có thể thử tiêm liệu thẻ XML Chúng tơi 64 đưa ví dụ cách điều có thể dẫn đến công leo thang đặc quyền Hãy xem xét các ứng dụng trước Bằng cách chèn các giá trị sau: Username: tony Password: Un6R34kb!e E-mail: s4tan@hell.com0s4tan@hell.com ứng dụng xây dựng nút nới vào sở liệu XML: gandalf !c3 0 gandalf@middleearth.com Stefan0 w1s3c 500 Stefan0@whysec.hmm tony Un6R34kb!e 500 s4tan@hell.com0s4tan@hell.com Tệp XML kết hình thành tớt Hơn nữa, có khả năng, đối với người dùng tony, giá trị liên kết với thẻ userid giá trị xuất hiện cuối cùng, tức 65 (ID quản trị viên) Nói cách khác, tiêm cho người dùng các đặc quyền quản trị Vấn đề thẻ userid xuất hiện hai lần nút người dùng cuối Thông thường, các tài liệu XML liên kết với lược đồ DTD bị từ chối chúng khơng tn thủ Giả sử tài liệu XML định DTD sau: ]> Lưu ý nút userid xác định cardinality Trong trường hợp này, công mà thể hiện trước (và các cơng đơn giản khác) không hoạt động, tài liệu XML xác thực chớng lại DTD trước xảy xử lý Tuy nhiên, vấn đề có thể giải quyết, người kiểm tra kiểm soát giá trị số nút trước nút vi phạm (userid, ví dụ này) Trong thực tế, người kiểm tra có thể nhận xét nút đó, cách đưa chuỗi bắt đầu / kết thúc nhận xét: Username: tony Password: Un6R34kb!e0s4tan@hell.com Trong trường hợp này, sở liệu XML là: Nút userid ban đầu nhận xét, để lại nút tiêm Tài liệu hiện tuân thủ các quy tắc DTD 66 gandalf !c3 0 gandalf@middleearth.com Stefan0 w1s3c 500 Stefan0@whysec.hmm tony Un6R34kb!e 500 >0s4tan@hell.com 67 Chương V: Tổng quan kỹ thuật kiểm thử lỗ hổng XPATH Injection 5.1 Giới thiệu XPATH Xpath 1.0 ngôn ngữ sử dụng để các phần tài liệu XML [6] Nó có thể sử dụng trực tiếp để truy vấn tài liệu XML ứng dụng phần hoạt động lớn áp dụng phép chuyển đổi XSLT [2] cho tài liệu XML áp dụng XQuery [3] cho tài liệu XML Cú pháp XPath có sớ điểm tương đồng với truy vấn SQL thực tế, có thể hình thành các truy vấn giớng SQL tài liệu XML XPath Ví dụ: giả sử, giả sử tài liệu XML chứa các thành phần theo tên "người dùng", thành phần chứa thành phần phụ - "tên", "mật khẩu" "tài khoản" Biểu thức Xpath sau mang lại số tài khoản người dùng có tên "jsmith" mật họ "Demo1234" (hoặc chuỗi trớng khơng có người dùng tồn tại): 5.2 Ý nghĩa bảo mật XPath sử dụng, số thứ khác, để truy vấn sở liệu XML theo kiểu tương tự ví dụ Một tài liệu XML đóng vai trò sở liệu truy vấn XPath tương tự truy vấn SQL Có lợi ích sử dụng sở liệu XML; ví dụ tính di động, khả tương thích, sử dụng lại tài liệu gọn gàng tài liệu kết truy vấn có cấu trúc cho tài liệu kết truy vấn Các sản phẩm khác cung cấp sở liệu XML nguyên gớc với sở truy vấn XPath tích hợp [9] Trong sớ các sản phẩm có Phần mềm AG, Tamino, Phần mềm Apache XIndice, Phần mềm Sleepycat Berkeley DbXML, dbXML Group dbXML, Một ứng dụng sử dụng sản phẩm có thể dễ bị Blind XPath tiêm tùy thuộc vào cách thức truy vấn XPath tạo ứng dụng Trong các bới cảnh khác, XPath có thể sử dụng trực tiếp (nghĩa không sử 68 dụng phần mềm sở liệu) hỗ trợ nguyên - ví dụ: khung Microsoft NET NET ColdFusion / MX Macromedia Các truy vấn XPath sử dụng cho các yêu cầu tìm kiếm, để xử lý đăng nhập, để truy xuất liệu nói ngắn gọn cho các tác vụ sở liệu nhẹ, linh hoạt Kẻ công, phát hiện lỗ hổng XPath Injection ứng dụng dựa XPath, không cần phải hiểu / đoán đầy đủ truy vấn XPath Trong vài lần thử, kẻ cơng thường có thể tạo mẫu liệu truy vấn người mẫu có thể sử dụng cho Blind XPath Injection Kể từ thời điểm đó, tập lệnh tự động triển khai, khơng cung cấp viết có thể sử dụng để trích xuất tài liệu XML hồn chỉnh sở liệu Cần nhấn mạnh kẻ công không cần biết cấu trúc xác truy vấn XPath nữa, tài liệu XML khơng có hệ thớng kiểm soát / đặc quyền truy cập liên quan đến nó, kẻ cơng có thể trích xuất tài liệu (cơ sở liệu) tính đầy đủ - khơng giống SQL tiêm, nơi kẻ công bị giới hạn các đặc quyền tài khoản sở liệu ứng dụng sử dụng 5.3 XPATH Inject đơn giản Lược đồ công XPath ban đầu xuất Amit Klein [1] giống với cách tiêm SQL thơng thường Để có cái nhìn vấn đề, tưởng tượng trang đăng nhập quản lý xác thực cho ứng dụng mà người dùng phải nhập tên người dùng mật Hãy xem xét sở liệu đại diện tệp XML sau: admin !c3 admin Stefan0 w1s3c guest tony Un6R34kb!e guest 69 Truy vấn XPath sau trả tài khoản có id "admin" mật "!C3": string(//user[username/text()='admin' and password/text()='!c3']/ account/text()) Nếu ứng dụng không lọc đầu vào người dùng, người kiểm tra có thể sử dụng mã XPath can thiệp vào kết truy vấn Ví dụ: nhập các giá trị sau: Username: ' or '1' = '1 Password: ' or '1' = '1 Với các tham số này, truy vấn trở thành: string(//user[username/text()='' or '1' = '1' and password/text()='' or '1' = '1']/account/text()) Điều kiện truy vấn đúng, câu truy vấn trả tất người dùng có database 5.4 Kỹ thuật sử dụng Trước tiên cho bạn cách thu thập liệu tài liệu XPath, sử dụng các truy vấn vô hướng (nghĩa các truy vấn có kiểu trả chuỗi String, kiểu chữ sớ hay chữ Boolean hình chữ nhật) Quy trình thu thập thơng tin giả định khơng có kiến thức cấu trúc tài liệu; ći cùng, tài liệu, hồn chỉnh nó, xây dựng lại Sau chúng tơi cách truy vấn XPath vơ hướng có thể thay loạt các truy vấn Boolean Truy vấn Boolean truy vấn có kết giá trị Boolean (true / false) Vì vậy, quy trình Booleanization, truy vấn có loại kết chuỗi sớ thay chuỗi các truy vấn có loại kết Boolean từ có thể xây dựng lại kết chuỗi gớc truy vấn sớ Điều giải thích chi tiết Ći cùng, truy vấn Boolean có thể giải mũi tiêm mù mù Đó là, chúng tơi cách có thể tạo chuỗi tiêm, bao gồm truy 70 vấn Boolean, đưa vào truy vấn XPath, khiến ứng dụng hoạt động theo cách truy vấn Boolean giải thành true, theo cách khác truy vấn giải thành lỗi giả mạo Bằng cách này, kẻ cơng có thể xác định bit đơn - kết truy vấn Boolean Điểm lạ cách tiếp cận đối với XPath Injection khơng đòi hỏi nhiều kiến thức trước định dạng truy vấn XPath, không giống cách tiếp cận truyền thống các mô tả mô tả Không yêu cầu liệu từ tài liệu XML phải nhúng phản hồi toàn tài liệu XML ći trích xuất, bất kể định dạng truy vấn XPath ứng dụng sử dụng Nó sử dụng khác biệt hành vi ứng dụng khác biệt giá trị trả truy vấn XPath để trích xuất bit thông tin 5.4.1 Thu thập thông tin XPATH Có bớn loại nút phụ: văn bản, hướng dẫn xử lý (viết tắt Nether PI,), phần tử nhận xét Một điều khó chịu XPath 1.0 có thể liệt kê các nút phụ, khơng thể truy xuất trực tiếp loại nút Tuy nhiên, có cách giải đơn giản, bao gồm số sổ sách kế toán count(path/child::node()) số lượng tất các nút cho PATH count(path/child::text()) số trường văn nhỏ count(path/child::comment()) số lượng nút nhận xét count(path/child::*) số lượng nguyên tố count(path/child::processing-instruction()) số lượng nút PI Bây giờ, mẹo ln trì số lượng nút hiện từ loại gặp phải Điều cho phép biết số từ loại ứng cử viên cho nút Do đó, chúng tơi có tới bốn ứng cử viên Điềubắt buộc đối với kỹ thuật không liệt kê ứng cử viên từ loại cạn kiệt - trước tiên cần phải tìm hiểu có nút phụ mong đợi từ loại Giả sử có I , j , k l cho các nút phụ văn bản, các nút phụ bình luận, các nút phụ phần tử các mã PI tương ứng Và giả sử, đơn giản, khơng có loại hết i < count(path/child::text()) and j < count(path/child::comment()) and k < count(path/child::*) and l < count(path/child::processing-instruction()) 71 Bây giờ, xem xét biểu thức tập hợp nút sau path/child::node()[position()=((i+j+k+l+1)] | path/child::text()[position()=(i+1)] Nếu nút phụ ( số I + j + k + l + 1) thực nút phụ văn ( số I + 1) sau hai tập hợp nút thớng thực tế tập hợp nút, chứa xác nút Tuy nhiên, nút phụ nút phụ văn bản, liên kết tạo hai nút Do đó, có thể biết nút phụ nút phụ văn 5.4.2 Blind XPATH Injection Hãy xem xét chuỗi truy vấn XPath sau (từ mã C # trên) "string(//user[name/text()='"+TextBox1.Text+"'and password/text()='"+TextBox2.Text+"']/account/text())" Bây giờ, tiêm tên người dùng NoSuchUser' or E or 'foobar'=' buộc vị ngữ phải sinh nếuElà biểu thức Boolean đánh giá mang lại sai nếuEđược đánh giá sai Do đó, ứng dụng đăng nhập thành công nếuElà từ chối nỗ lực đăng nhập nếuElà sai Bây có chế trích xuất bit từ hệ thống - biểu thức Boolean XPathE Như thấy trên, điều đủ để trích xuất toàn tài liệu XML Trên thực tế, kịch Perl, thực hiện thuật toán thể hiện công này, viết Ory Segal Ronen Heled (cả hai Watchfire / Sanctum Inc) Thuật toán trích xuất thành cơng tài liệu XML ngắn (từ ứng dụng XPath Chaim Linhart Sanctum Inc cung cấp), cách đệ quy DFS thu thập liệu tài liệu gửi các truy vấn Booleanized dạng XPath tiêm mù Như có thể phân tích từ các thảo luận trên, thuật toán có độ phức tạp thời gian chạy (sớ lượng truy vấn) củi(kích thước tài liệu) Kích thước truy vấn giới hạn (tới đa chi phí khơng đổi) theo kích thước bảng chữ cái hiệu tài liệu,L(ví dụ: đới với tài liệu ASCII - 97) Thật thú vị lưu ý có biến thể mũi tiêm nói bao trùm hầu hết các mũi tiêm có thể có khơng gian Cụ thể, khơng u cầu (trong hầu hết các trường hợp) biết xác cấu trúc truy vấn XPath Trong có sức mạnh công XPath tiêm mù 5.5 Kiểm thử XPATH Injection XPath ngôn ngữ thiết kế phát triển chủ yếu để giải các phần tài liệu XML Trong kiểm thử lỗ hổng XPath Injection, người kiểm thử kiểm tra xem có thể tiêm cú pháp XPath vào yêu cầu ứng dụng diễn giải hay 72 không, cho phép kẻ công thực hiện các truy vấn XPath người dùng kiểm soát Khi khai thác thành cơng, lỗ hổng có thể cho phép kẻ công bỏ qua các chế xác thực truy cập thơng tin mà khơng có cho phép thích hợp Các ứng dụng web sử dụng nhiều sở liệu để lưu trữ truy cập liệu họ cần cho hoạt động Trong lịch sử, sở liệu quan hệ công nghệ phổ biến để lưu trữ liệu, nhưng, năm qua, chứng kiến phổ biến ngày tăng đối với các sở liệu tổ chức liệu ngôn ngữ XML Giống các sở liệu quan hệ truy cập thông qua ngôn ngữ SQL, sở liệu XML sử dụng XPath làm ngơn ngữ truy vấn tiêu chuẩn chúng Vì từ quan điểm khái niệm, XPath giống với SQL mục đích ứng dụng nó, kết thú vị các công XPath Injection tuân theo logic giống các công SQL Injection Ở sớ khía cạnh, XPath chí mạnh SQL tiêu chuẩn, tồn sức mạnh có các thơng sớ kỹ thuật nó, sớ lượng lớn các kỹ thuật có thể sử dụng công SQL Injection phụ thuộc vào các đặc điểm phương ngữ SQL sử dụng sở liệu đích Điều có nghĩa các cơng XPath Injection có thể dễ thích nghi phổ biến nhiều Một ưu điểm khác công XPath Injection khơng giớng SQL, khơng có ACL thi hành, truy vấn chúng tơi có thể truy cập phần tài liệu XML Kiểm thử Mẫu công XPath Amit Klein [1] xuất lần giống với SQL Injection thông thường Để hiểu rõ vấn đề trước tiên, tưởng tượng trang đăng nhập quản lý xác thực cho ứng dụng mà người dùng phải nhập tên người dùng mật họ Giả sử sở liệu biểu thị tệp XML sau: 73 gandalf !c3 admin Stefan0 w1s3c guest tony Un6R34kb!e guest Một truy vấn XPath trả tài khoản có tên người dùng "gandalf" mật "!c3" sau: string(//user[username/text()='gandalf' and password/text()='!c3']/account/text()) Nếu ứng dụng không lọc đầu vào người dùng, người kiểm tra có thể tiêm mã XPath can thiệp vào kết truy vấn Chẳng hạn, người kiểm tra có thể nhập các giá trị sau: Username: ' or '1' = '1 Password: ' or '1' = '1 Trông khá quen thuộc phải không? Sử dụng các tham số này, truy vấn trở thành: string(//user[username/text()='' or '1' = '1' and password/text()='' or '1' = '1']/account/text()) Như công SQL Injection thông thường, tạo truy vấn luôn đánh giá đúng, điều có nghĩa ứng dụng xác thực người dùng tên người dùng mật chưa cung cấp Và 74 công SQL Injection thông thường, với XPath, bước chèn trích dẫn (') vào trường cần kiểm tra, đưa lỗi cú pháp truy vấn kiểm tra xem ứng dụng có trả thơng báo lỗi khơng Nếu khơng có kiến thức các chi tiết bên liệu XML ứng dụng không cung cấp các thông báo lỗi hữu ích giúp chúng tơi xây dựng lại logic bên nó, có thể thực hiện cơng Blind XPath, mục tiêu tái cấu trúc toàn cấu trúc liệu Kỹ thuật tương tự SQL Injection dựa suy luận, cách tiếp cận tiêm mã tạo truy vấn trả bit thông tin Blind XPath Injection Amit Klein giải thích chi tiết viết tham khảo 5.6 Bảo vệ chống lại XPATH Injection Bảo vệ chống lại XPath Injection tương tự bảo vệ chống lại SQL tiêm Ứng dụng phải vệ sinh đầu vào người dùng Cụ thể, các ký tự trích dẫn đơn kép khơng phép Điều có thể thực hiện mã ứng dụng bên cách triển khai Watchfire® AppShield ™, tường lửa ứng dụng web, trước ứng dụng AppShield có thể sử dụng giải pháp thả xuống để ngăn chặn các công cấp độ ứng dụng XPath Injection, SQL SQL Cross-site Scripting Bằng cách hiểu logic ứng dụng thực thi nó, AppShield có thể bảo vệ các trang web khỏi bị công, đồng thời cho phép liên tục các tương tác hợp lệ với trang web Trong trường hợp XPath Injection, AppShield đảm bảo các trường ẩn có thể sử dụng ngữ cảnh truy vấn XPath không bị thay đổi đầu vào người dùng (ví dụ: hộp văn trường mật khẩu) không chứa các ký tự nguy hiểm kết hợp ký tự Kiểm tra tính nhạy cảm ứng dụng đới với XPath Tiêm có thể thực hiện dễ dàng cách tiêm trích dẫn trích dẫn kép kiểm tra phản hồi Nếu xảy lỗi, có khả tiêm XPath có thể Quá trình kiểm tra có thể tự động hóa cách sử dụng Watchfire® AppScan®, công cụ kiểm tra bảo mật tự động kiểm tra xác lỗ hổng xác minh xác kết kiểm tra AppScan có thể kiểm tra nhiều lỗ hổng ứng dụng khác, cung cấp chức quan trọng quy trình QA - kiểm tra bảo mật Trong ngữ cảnh XPath Injection, AppScan cố gắng gửi công cho tập lệnh tham số có liên quan mà tìm thấy trang web cách đánh giá phản hồi, phát hiện tập lệnh tham số dễ bị tổn thương với XPath Injection, không AppScan cung cấp các đề xuất sửa lỗi chi tiết để giải XPath Injection, bao gồm các hướng dẫn cụ thể cho môi trường phát triển 75 ASP.Net J2EE Nội dung sau có thể sử dụng làm phản hồi cho lập trình viên, để hành động khắc phục các cố KẾT LUẬN Tấn công Injection xếp hạng số các loại lỗ hổng phổ biến Các công khai thác loại lỗ hổng tăng nhanh theo thời gian LDAP Injection, ORM Injection, XML Injection XPath Injection kỹ thuật cho phép kẻ công lợi dụng lỗ hổng việc kiểm tra liệu đầu vào các ứng dụng, web v.v từ để inject (tiêm vào) làm sai lệch chức vớn có câu truy vấn câu lệnh thực thi, thi hành các câu lệnh cách bất hợp pháp Các lỗi injection có thể cho phép kẻ cơng thực hiện các thao tác nguy hiểm ứng dụng, công chủ động (LDAP Injection, ORM Injection, XPath Injection) hay công chủ động lẫn bị động(XML Injection) có thể khai thác, thay đổi, đánh cắp liệu cách bất hợp pháp, có thể gây tổn thất cực lớp cho cá nhân hay tổ chức Vì Các kỹ thuật kiểm thử quan trọng, không để phát hiện các khả dễ bị công các dịch vụ web trước chúng có thể cơng khai, mà để giảm thử nghiệm bới cảnh có sớ lượng dịch vụ tham số đầu vào chúng lớn giảm tối đa khả ứng dụng bị công các lỗi biết nguy các lỗi tiềm ẩn hệ thống 76 TÀI LIỆU THAM KHẢO Tiếng Anh [1] https://slideplayer.com/slide/14011593/ [2] https://research.cs.wisc.edu/mist/SoftwareSecurityCourse/Chapters/3_8_4-XMLInjections.pdf [3] https://www.owasp.org/index.php/Testing_for_XML_Injection_(OTG-INPVAL008) [4] https://securitytraning.com/ldap-injection-attacks-web-for-pentester/ 77 78 ... Tổng quan kiểm thử lỗ hổng LDAP Injection Các kỹ thuật kiểm thử LDAP Injection - Kiểm tra hộp đen : thử chèn các truy vấn LDAP vào đăng nhập, qn mật tìm kiếm trường người dùng Ngồi ra, thử chèn... thử bảo mật Qua đó, chúng em tìm hiểu sớ kỹ thuật kiểm thử lỗ hổng Injection attacks đề tài chúng em tập trung vào các công với các lỗ hổng LDPA Injection, ORM Injection, XML Injection XPATH. .. Injection, ORM Injection, XML Injection XPATH Injection 13 Chương II: Tổng quan kỹ thuật kiểm thử lỗ hổng LDAP Injection 2.1 Tổng quan lỗ hổng LDAP Injection 2.1.1 Tổng quan LDAP Giao thức Lightweight

Ngày đăng: 24/03/2020, 23:47

TỪ KHÓA LIÊN QUAN

w