1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tấn công website và phòng tránh

49 938 0

Đ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

  • CHƯƠNG 1:

  • TỔNG QUAN VỀ WEBSITE, CÁC DỊCH VỤ CỦA WEBSITE VÀ LỖI BẢO MẬT THÔNG DỤNG

    • 1.1. Mô tả Website và cách hoạt động

    • 2.1. LOCAL ATTACK

      • 2.1.1. Tìm hiểu về Local Attack

      • 2.1.2. Cách tấn công Local Attack

        • 2.1.2.1. Chuẩn bị

        • 2.1.2.2.Tiến hành Attack

      • 2.1.3. Cách bảo mật cho Local Attack

      • 2.1.4. Các công cụ hỗ trợ

    • 2.2. Tấn công từ chối dịch vụ - (Denial Of Service)

      • 2.2.1. DOS(Denial Of Service)

        • 2.2.1.1. Giới thiệu khái quát về DoS:

        • - DoS (Denial of Service) có thể mô tả như hành động ngăn cản những người dùng hợp pháp của một dịch vụ nào đó truy cập và sử dụng dịch vụ đó. Nó bao gồm cả việc làm tràn ngập mạng, làm mất kết nối với dịch vụ… mà mục đích cuối cùng là làm cho server không thể đáp ứng được các yêu cầu sử dụng dịch vụ từ các client. DoS có thể làm ngưng hoạt động của một máy tính, một mạng nội bộ, thậm chí cả một hệ thống mạng rất lớn. Thực chất của DoS là kẻ tấn công sẽ chiếm dụng một lượng lớn tài nguyên mạng như băng thông, bộ nhớ… và làm mất khả năng xử lý các yêu cầu dịch vụ đến từ các client khác.

        • 2.2.1.2. Các cách thức tấn công:

        • + Phá hoại dựa trên tính giới hạn hoặc không thể phục hồi của tài nguyên mạng. - Thông qua kết nối:

        • Tấn công kiểu SYN flood:

        • FPRIVATE "TYPE=PICT;ALT="

        • Lợi dụng các thức hoạt động của kết nối TCP/IP, hacker bắt đầu quá trình thiết lập một kết nối TPC/IP với mục tiêu muốn tấn công nhưng sẽ phá vỡ kết nối ngay sau khi quá trình SYN và SYN ACK hoàn tất, khiến cho mục tiêu rơi vào trạng thái chờ (đợi gói tin ACK từ phía yêu cầu thiết lập kết nối) và liên tục gửi gói tin SYN ACK để thiết lập kết nối . Một cách khác là giả mạo địa chỉ IP nguồn của gói tin yêu cầu thiết lập kết nối SYN và cũng như trường hợp trên, máy tính đích cũng rơi vào trạng thái chờ vì các gói tin SYN ACK không thể đi đến đích do địa chỉ IP nguồn là không có thật. Cách thức này có thể được các hacker áp dụng để tấn công một hệ thống mạng có băng thông lớn hơn hệ thống của hacker.

        • - Lợi dụng nguồn tài nguyên của chính nạn nhân để tấn công:

        • Tấn công kiểu Land Attack: cũng tương tự như SYN flood nhưng hacker sử dụng chính IP của mục tiêu cần tấn công để dùng làm địa chỉ IP nguồn trong gói tin, đẩy mục tiêu vào một vòng lặp vô tận khi cố gắng thiết lập kết nối với chính nó. Tấn công kiểu UDP flood: hacker gửi gói tin UDP echo với địa chỉ IP nguồn là cổng loopback của chính mục tiêu cần tấn công hoặc của một máy tính trong cùng mạng với mục tiêu qua cổng UDP echo (port 7) để thiết lập việc gửi và nhận các gói tin echo trên 2 máy tính (hoặc giữa mục tiêu với chính nó nếu mục tiêu có cấu hình cổng loopback) khiến cho 2 máy tính này dần dần sử dụng hết băng thông của chúng và cản trở hoạt động chia sẻ tài nguyên mạng của các máy tính khác trong mạng. -Sử dụng băng thông:

        • Tấn công kiểu DDoS (Distributed Denial of Service): đây là cách thức tấn công rất nguy hiểm. Hacker xâm nhập vào các hệ thống máy tính, cài đặt các chương trình điều kiển từ xa và sẽ kích hoạt đồng thời các chương trình này vào cùng một thời điểm để đồng loạt tấn công vào một mục tiêu. Cách thức này có thể huy động tới hàng trăm thậm chí hàng ngàn máy tính cùng tham gia tấn công một lúc (tùy vào sự chuẩn bị trước đó của hacher) và có thể ngốn hết băng thông của mục tiêu trong nháy mắt. -Sử dụng các nguồn tài nguyên khác:

        • Kẻ tấn công lợi dụng các nguồn tài nguyên mà nạn nhân cần đến để tấn công. Những kẻ tấn công có thể thay đổi dữ liệu và tự sao chép dữ liệu mà nạn nhân cần lên nhiều lần làm CPU bị quá tải và các quá trình xử lý dữ liệu bị đình trệ.

        • - Tấn công kiểu Smurf Attack: kiểu tấn công này cần một hệ thống rất quan trọng, đó là mạng khuyếch đại. Hacker dùng địa chỉ của máy tính cần tấn công gửi broadcast gói tin ICMP echo cho toàn bộ mạng. Các máy tính trong mạng sẽ đồng loạt gửi gói tin ICMP reply cho máy tính mà hacker muốn tấn công. Kết quả là máy tính này sẽ không thể xử lý kịp thời một lượng lớn thông tin như vậy và rất dễ bị treo.

        • - Tấn công kiểu Tear Drop: trong mạng chuyển mạch gói, dữ liệu được chia nhỏ làm nhiều gói tin, mối gói tin có một giá trị offset riêng và có thể truyền đi theo nhiều đường để tới đích. Tại đích, nhờ vào giá trị offset của từng gói tin mà dữ liệu lại được kết hợp lại như ban đầu. Lợi dụng điều này, hacker có thể tạo ra nhiều gói tin có giá trị offset trùng lặp nhau gửi đến mục tiêu muốn tấn công. Kết quả là máy tính đích không thể sắp xếp được những gói tin này và có thể bị treo do đã dùng hết năng lực xử lý của hệ thống.

        • +.Phá hoại hoặc chỉnh sửa thông tin cấu hình.

        • Lợi dụng việc cấu hình thiếu an toàn (ví dụ như việc không xác thực thông tin trong việc gửi và nhận bản tin update của các router) mà kẻ tấn công sẽ thay đổi từ xa hoặc trực tiếp các thông tin quan trọng khiến cho những người dùng hợp pháp không thể sử dụng dịch vụ. Ví dụ: hacker có thể xâm nhập vào DNS để thay đôi thông tin, dẫn đến quá trình biên dịch domain name sang IP của DNS bị sai lệch. Kết quả là các yêu cầu của client đến một domain nào đó sẽ biến thành một domain khác.

        • +.Phá hoại hoặc chỉnh sửa vật lý phần cứng.

        • Lợi dụng quyền hạn của chính bản thân kẻ tấn công đối với các thiết bị trong hệ thống mạng để tiếp cận phá hoại (các router, switch…)

        • 2.2.1.3 Các cách phòng chống

        • - DoS có thể làm tiêu tốn rất nhiều thời gian cũng như tiền bạc, vì vậy, cần phải có những biện pháp để phòng chống:

        • - Mô hình hệ thống phải được xây dựng hợp lý, tránh phụ thuộc lẫn nhau quá mức dễ dẫn đến một bộ phận gặp sự cố sẽ làm cả hệ thống bị trục trặc.

        • - Thiết lập password bảo vệ các thiết bị hay các nguồn tài nguyên quan trọng. - Thiết lập các mức xác thực đối với người dùng cũng như các nguồn tin trên mạng (các thông tin cập nhật định tuyến giữa các router cũng nên thiết lập ở chế độ xác thực) - Xây dựng hệ thống lọc thông tin trên router, firewall… và hệ thống bảo vệ chống lại SYN flood.

        • - Chỉ chấp nhận các dịch vụ cần thiết, tạm thời dừng các dịch vụ chưa có yêu cầu cung cấp hoặc không sử dụng.

        • - Xây dựng hệ thống định mức, giới hạn cho người sử dụng để ngăn ngừa trường hợp người dùng có ác ý muốn lợi dụng các tài nguyên trên server để tấn công chính server hay mạng, server khác.

        • - Liên tục cập nhật, nghiên cứu, kiểm tra để phát hiện các lỗ hổng bảo mật và có biện pháp khắc phục kịp thời.

        • - Sử dụng các biện pháp kiểm tra hoạt động của hệ thống một cách liên tục để phát hiện ngay những hành động bất bình thường.

        • - Xây dựng hệ thống dự phòng.

      • 2.2.2. Ddos(Distributed Denial of Service)

        • 2.2.2.1. Các giai đoạn của một cuộc tấn công kiểu DdoS:

        • 2.2.2.2. Kiến trúc tổng quan của DDoS attack-network

        • 2.2.2.3. Phân loại tấn công kiểu DDOS

      • 2.2.3. Tấn công từ chối dịch vụ phản xạ nhiều vùng DRDoS (Distributed Reflection Denial of Service)

    • 2.3. SQL Injection

      • 2.3.1. Tấn công SQL injection

        • 2.3.1.1. SQL Injection là gì?

        • 2.3.1.2. Các Dạng Tấn Công SQL Injection

      • 2.3.2.Cách Phòng Tránh SQL Injection

    • 2.4. Cross Site Scripting (XSS)

      • 2.4.1. Tấn công XSS

      • 2.4.2. Phòng chống.

  • CHƯƠNG 3

  • DEMO, ĐÁNH GIÁ VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI

    • 3.1. Demo

    • Bước 3: Tìm số cột của table mà câu lệnh SQL truy vấn

    • Dùng câu lệnh order by để kiểm tra...

    • =>> Có 17 cột

    • + Bước 4: Hiện một số cột bị lỗi

    • Dùng câu lệnh union select để tìm...

    • => Như vậy cột 3 và 8 bị lỗi.

    • + Bước 5: Kiểm tra một vài thông tin của database

    • * Về Version: 5.5.38

    • * Về database: kentshop_db

    • * Về user: kentshop_db@localhost

    • + Bước 6: Liệt kê các bảng trong database

    • tbl_config,tbl_content,tbl_content_category,tbl_inchsize,tbl_manufacturer,tbl_member,tbl_order,

    • tbl_order_detail,tbl_product,tbl_product_category,tbl_product_new,tbl_product_special,tbl_user,

    • tbl_visitor

    • + Bước 7: Liệt kê các cột trong bảng có chứa thông tin Login (tbl_member)

    • id,name,sex,company,address,city,country,tel,fax,email,website,uid,pwd,status,date_added,last_modified

    • + Bước 8: Xem thông tin các cột trong bảng tbl_member (id,uid,pwd):

    • < 71:cngocpham:123456,72:quach ngoc bich:123456,54:cuong:123456,55:cuong1:123456,

    • 56:cuong2:123456,57:cuong4:123456,58:Hãy nhập "Tên đăng nhập" !:123456,59:Pham Ngoc Cuong A:123456,

    • 60:Dang:123456,61:admin:123456,62:cuong121:123456,63:cuongpham:123456,64:cuongpham1:123456,

    • 65:accacac:123456,66:bicha:12345,67:123456:123456,68:cuong11:cuong11,69:accacac9:accacac9,

    • 70:cuong0fgfd:cuong0fgfd,73:quach ngoc bich a:123456,74:quach ngoc bich b:123456,

    • 75:Phạm Ngọc Cường:123456,76:Phạm Ngọc Cường A:123456,77:Dang tran:123456,78:Pham Cuong:123456,

    • 79:sds5:123456,80:cuong demo:123456,81:dang:123456,82:Dken:123456,83:Tran dang:123456,

    • 84:Mr dang:123456,85:Dang tran minh:123456,86:cường a:123456,87:dang khoi:123456,88:fsdfdsfdsf:123456,

    • 89:Lưu Gia Huy:123456,90:Nguyễn Thanh Hằng:123456 >

    • + Bước 9: Đăng nhập thông tin vừa tìm được với:

    • * Tên Đăng Nhập: Nguyễn Thanh Hằng

    • * Password: 123456

    • 3.2. Kết luận

    • 3.2.1. Các vấn đề đạt được

    • 3.2.2. Hạn chế

    • 3.2.3. Hướng phát triển đề tài

Nội dung

HỌC VIỆN KỸ THUẬT MẬT MÃ KHOA CÔNG NGHỆ THÔNG TIN ĐỀ TÀI THỰC TẬP CƠ SỞ Một số phương pháp công website phương pháp phòng tránh Cán bộ hướng dẫn: Thầy Lê Đức Thuận Sinh viên thực hiện: - Cao Ngọc Anh - Chu Thành Nam Lớp: L01 HÀ NỘI 2016 HỌC VIỆN KỸ THUẬT MẬT MÃ KHOA CÔNG NGHỆ THÔNG TIN ĐỀ TÀI THỰC TẬP CƠ SỞ Một số phương pháp công website phương pháp phòng tránh Nhận xét cán bộ hướng dẫn: Điểm chuyên cần: Điểm báo cáo: Xác nhận của cán bộ hướng dẫn Mục Lục Mục Lục CHƯƠNG 1: TỔNG QUAN VỀ WEBSITE, CÁC DỊCH VỤ CỦA WEBSITE VÀ LỖI BẢO MẬT THÔNG DỤNG 1.1 Mô tả Website cách hoạt động 2.1 LOCAL ATTACK 2.1.1 Tìm hiểu Local Attack 2.1.2 Cách công Local Attack .8 2.1.3 Cách bảo mật cho Local Attack .11 2.1.4 Các công cụ hỗ trợ 14 2.2 Tấn công từ chối dịch vụ - (Denial Of Service) .16 2.2.1 DOS(Denial Of Service) 16 2.2.2 Ddos(Distributed Denial of Service) 18 2.2.3 Tấn công từ chối dịch vụ phản xạ nhiều vùng DRDoS (Distributed Reflection Denial of Service) 30 2.3 SQL Injection 31 2.3.1 Tấn công SQL injection 31 2.3.2.Cách Phòng Tránh SQL Injection .38 2.4 Cross Site Scripting (XSS) .42 2.4.1 Tấn công XSS 42 2.4.2 Phòng chống 44 CHƯƠNG 45 DEMO, ĐÁNH GIÁ VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI 45 3.1 Demo 45 Bước 3: Tìm số cột table mà câu lệnh SQL truy vấn .46 Dùng câu lệnh order by để kiểm tra .46 =>> Có 17 cột 46 + Bước 4: Hiện số cột bị lỗi 46 Dùng câu lệnh union select để tìm .46 => Như cột bị lỗi 46 + Bước 5: Kiểm tra vài thông tin database .46 * Về Version: 5.5.38 46 * Về database: kentshop_db 46 * Về user: kentshop_db@localhost 46 + Bước 6: Liệt kê bảng database 46 tbl_config,tbl_content,tbl_content_category,tbl_inchsize,tbl_manufacturer,tbl_member,tbl_orde r, 46 tbl_order_detail,tbl_product,tbl_product_category,tbl_product_new,tbl_product_special,tbl_use r, 46 tbl_visitor 46 + Bước 7: Liệt kê cột bảng có chứa thông tin Login (tbl_member) .47 id,name,sex,company,address,city,country,tel,fax,email,website,uid,pwd,status,date_added,la st_modified 47 + Bước 8: Xem thông tin cột bảng tbl_member (id,uid,pwd): .47 < 71:cngocpham:123456,72:quach ngoc bich:123456,54:cuong:123456,55:cuong1:123456, 47 56:cuong2:123456,57:cuong4:123456,58:Hãy nhập "Tên đăng nhập" !:123456,59:Pham Ngoc Cuong A:123456, 47 60:Dang:123456,61:admin:123456,62:cuong121:123456,63:cuongpham:123456,64:cuongpha m1:123456, 47 65:accacac:123456,66:bicha:12345,67:123456:123456,68:cuong11:cuong11,69:accacac9:ac cacac9, 47 70:cuong0fgfd:cuong0fgfd,73:quach ngoc bich a:123456,74:quach ngoc bich b:123456, 47 75:Phạm Ngọc Cường:123456,76:Phạm Ngọc Cường A:123456,77:Dang tran:123456,78:Pham Cuong:123456, 47 79:sds5:123456,80:cuong demo:123456,81:dang:123456,82:Dken:123456,83:Tran dang:123456, 47 84:Mr dang:123456,85:Dang tran minh:123456,86:cường a:123456,87:dang khoi:123456,88:fsdfdsfdsf:123456, .47 89:Lưu Gia Huy:123456,90:Nguyễn Thanh Hằng:123456 > 47 + Bước 9: Đăng nhập thông tin vừa tìm với: 47 * Tên Đăng Nhập: Nguyễn Thanh Hằng 47 * Password: 123456 47 3.2 Kết luận 47 3.2.1 Các vấn đề đạt 47 3.2.2 Hạn chế 48 3.2.3 Hướng phát triển đề tài .48 LỜI MỞ ĐẦU Cùng với phát triển công nghệ thông tin, công nghệ mạng máy tính phát triển mạng internet ngày phát triển đa dạng phong phú Các dịch vụ mạng thâm nhập vào hầu hết lĩnh vực đời sống xã hội Các thông tin Internet đa dạng nội dung hình thức, có nhiều thông tin cần bảo mật cao tính kinh tế, tính xác tính tin cậy Bên cạnh đó, hình thức phá hoại mạng trở nên tinh vi phức tạp Do hệ thống, nhiệm vụ bảo mật đặt cho người quản trị mạng quan trọng cần thiết Xuất phát từ thực tế đó, tìm hiểu cách công phổ biến phòng chống loại công Chính vậy, thông qua việc nghiên cứu số phương pháp công cách bảo mật lọa công này,chúng em mong muốn góp phần nhỏ vào việc nghiên cứu tìm hiểu vấn đề an ninh mạng giúp cho việc học tập nghiên cứu Chúng em xin chân thành cảm ơn hướng dẫn Thầy Lê Đức Thuận thầy trực tiếp hướng dẫn đồ án chuyên ngành cho chúng em, chúng em hoàn thành đồ án Lý chọn đề tài Trong năm gần đây, Việt Nam ngày phát triển mặt công nghệ thông tin Đặc biệt ứng dụng web, người nghe làm việc ứng dụng web Website trở nên phổ biến trở thành phần quan trọng người doanh nghiệp, công ty Bên cạnh lý an toàn bảo mật cho ứng dụng web vấn đề nan giải người.Vì tìm hiểu ứng dụng web cách thức công bảo mật web Mục tiêu Giúp hiểu ứng dụng website, mối đe dọa vấn đề an toàn thông tin làm việc ứng dụng web hàng ngày, hiểu rõ kỹ thuật công bảo mật web Phạm vi Tìm hiểu kỹ thuật công phổ biến SQL Injection, Denial Of Service, Local Attack…Cách bảo mật, phòng thủ loại công phổ biến cách tổng quan CHƯƠNG 1: TỔNG QUAN VỀ WEBSITE, CÁC DỊCH VỤ CỦA WEBSITE VÀ LỖI BẢO MẬT THÔNG DỤNG 1.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ách hàng truy cập nơi đâ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 phải có yếu tố bản: Cần phải có tên miền (domain name): 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; Nơi lưu trữ website (hosting):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 website, server bị cố chẳng hạn tắt thời điểm không 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 thích hợp cho website [thuê dung lượng host] - Dung lượng host: Là nơi để lưu sở trữ 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 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 Nội dung trang thông tin (web page):Chứa nội dung trang web bao gồm văn bản, hình ảnh, video, flash v.v… 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 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, Perl, , quản trị Cơ sở liệu SQL MySQL Website tĩnh lập trình 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 nay, hầu hết doanh nghiệp sử dụng website động, hệ công nghệ website người biết đến web 2.0 CHƯƠNG 2: CÁC LOẠI TẤN CÔNG VÀ BẢO MẬT ỨNG DỤNG WEB PHỔ BIẾN 2.1 LOCAL ATTACK 2.1.1 Tìm hiểu Local Attack - Local attack kiểu hack phổ biến không khuyên dùng.Đối web server thông thường bạn đăng ký tài khoản server bạn cấp tài khoản server thư mục để quản lý site Ví dụ : tenserver/tentaikhoancuaban Và có tài khoản người dùng khác tương tự : tenserver/taikhoan1.Giả sử taikhoan1 bị hacker chiếm hacker dùng thủ thuật,các đoạn scrip,các đoạn mã lệnh để truy cập sang thư mục chứa site bạn tenserver/namchu Và theo cách hacker công sang site người dùng khác lấy thông tin admin,database,các thông tin bảo mật khác chèn đoạn mã độc vào trang index site bạn Dạng công gọi Local Attack - Thông thường nhất, Local Attack sử dụng để đọc lấy thông tin config từ victim, sau dựa vào thông tin config mục đích hacker để phá hoại website 2.1.2 Cách công Local Attack - Để thực công Local Attack, tùy theo cách thức hacker mà có cách Local khác Thông thường hacker thường sử dụng đoạn lệnh để công vào database 2.1.2.1 Chuẩn bị - Trước tiên phải có PHP/ASP/CGI backdoor server Backdoor có nhiều loại khác phổ biến phpRemoteView (thường gọi remview) R57Shell, CGITelnet,C99,…Tiến hành upload công cụ lên, thường shell R57,C99, … - Upload công cụ lên host (Thường sử dụng shell R57,C99, mạnh dễ sử dụng) - Để có host có nhiều cách: + Mua host(cách hacker sử dụng nhiều lý lý tốn tiền mà up shell lên bị admin server phát bị del host, Với cách sau Local xong nên xóa shell + Hack trang bị lỗi upload shell lên (thường hacker sử dụng SQL Injection để hack trang web chiếm tài khoản admin trang web upload shell lên)hoặc khai thác lỗi inclusion + Search backdoor (Vào google.com search keyword: , r57Shell ) Vói cách hầu hết shell hacker sử dụng chưa bị xóa, nên upload cho shell khác 2.1.2.2.Tiến hành Attack - Sau chuản bị xong, tức upload shell lên server Chúng ta bắt đầu tìm website server mà bạn up shell lên, thông thường hacker thường sử dụng Reverse Ip domain mà hacker upload shell để xem website server - Sau tìm danh sách website ,lần lượt check xem site bị lỗi local sang - Các lệnh thường dùng shell để Local Attack Xem tên domain host ls -la /etc/valiases cd /etc/vdomainaliases;ls –lia - Trường hợp đặc biệt xem user nằm host ta thêm && vào cd /etc/vdomainaliases && ls –lia - Muốn biết tên user dùng lệnh : cat /etc/passwd/ Hoặc less /etc/passwd + local sang victim, tức local sang site khác ví dụ shell : /home/abcd/public_html/ local sang sau : dir home/tên user cần local/public_html - Muốn biết tên user cần local sang sử dụng Reverse Ip để lấy danh sách user server.Muốn biết user có tồn hay không mở trình duyệt web lên đánh đoạn : Ip server/~ tên user (Ví dụ : 203.166.222.121/~thuctapcoso) Nếu trình duyệt lên trang index website tức user tồn +Xem nội dung file cat /home/tên user cần local/public_html/index.php Hoặc Chúng ta muốn xem config forum dùng ln -s /home/tên user cần local/public_html/forum/includes/config.php thuctapcoso.txt Với thuctapcoso.txt file tạo host để xem file người khác ! Nếu không sử dụng lệnh tức server disable chức Thêm số lệnh shell linux : - pwd: đưa hình thư mục hoạt động (ví dụ: /etc/ssh) - cd: thay đổi thư mục (ví dụ: cd – cấp thư mục tại; cd vidu – vào thư mục /vidu) - ls: đưa danh sách nội dung thư mục - mkdir: tạo thư mục (mkdir tên_thumuc) - touch: tạo file (touch ten_file) - rmdir: bỏ thư mục (rmdir ten_thumuc) - cp: copy file thư mục (cp file_nguồn file_đích) - mv: di chuyển file thư mục; dùng để đặt lại tên file thư mục (mv vị_trí_cũ vị_trí_mới mv tên_cũ tên_mới) - rm: loại bỏ file (rm tên_file) - Để tìm kiếm file, bạn dùng: - find : dùng cho tên file - grep : để tìm nội dung file Để xem file, bạn dùng: - more : hiển thị file theo trang - cat : hiển thị tất file - Nếu muốn kết nối tới host từ xa, sử dụng lệnh ssh Cú pháp ssh Quản lý hệ thống: - ps: hiển thị chương trình thời chạy (rất hữu ích: ps nhìn toàn tất chương trình) - Trong danh sách đưa thực lệnh ps, bạn thấy có số PID (Process identification nhân dạng tiến trình) Con số hỏi đến muốn ngừng dịch vụ hay ứng dụng, dùng lệnh kill - top: hoạt động giống Task Manager Windows Nó đưa thông tin tất tài nguyên hệ thống, tiến trình chạy, tốc độ load trung bình… Lệnh top -d thiết lập khoảng thời gian làm tươi lại hệ thống Bạn đặt giá trị nào, từ (tức 10 mili giây) tới 100 (tức 100 giây) chí lớn - uptime: thể thời gian hệ thống tốc độ load trung bình khoảng thời gian đó, trước phút 15 phút Thông thường tốc độ load trung bình tính toán theo phần trăm tài nguyên hệ thống (vi xử lý, RAM, ổ cứng vào/ra, tốc độ load mạng) dùng thời điểm Nếu tốc độ tính toán 0.37, tức có 37% tài nguyên sử dụng Giá trị lớn 2.35 nghĩa hệ thống phải đợi số liệu, tính toán nhanh 235% mà không gặp phải vấn đề Nhưng phân phối khác chút - free: hiển thị thông tin nhớ hệ thống - ifconfig : để xem thông tin chi tiết giao diện mạng; thông thường giao diện mạng ethernet có tên eth() Bạn cài đặt thiết lập mạng địa IP cách dùng lệnh (xem man ifconfig) Nếu có điều chưa xác, bạn stop start (tức ngừng khởi_động) giao diện cách dùng lệnh ifconfig up/down - passwd: cho phép bạn thay đổi mật (passwd người_dùng_sở_hữu_mật_khẩu tên người dùng khác bạn đăng nhập hệ thống với vai trò root) - useradd: cho phép bạn thêm người dùng (xem man useradd) 10 ' UNION SELECT ALL SELECT OtherField FROM OtherTable WHERE ' '=' - Lúc này, câu truy vấn đầu không thành công, chương trình thực thêm lệnh sau từ khóa UNION - Tất nhiên ví dụ nói trên, dường nguy hiểm, thử tưởng tượng kẻ công xóa toàn sở liệu cách chèn vào đoạn lệnh nguy hiểm lệnh DROP TABLE Ví dụ như: ' DROP TABLE T_AUTHORS Chắc bạn thắc mắc biết ứng dụng web bị lỗi dạng Rất đơn giản, nhập vào chuỗi (*) trên, hệ thống báo lỗi cú pháp dạng: Invalid object name “OtherTable”; ta biết hệ thống thực câu SELECT sau từ khóa UNION, trả lỗi mà ta cố tình tạo câu lệnh SELECT - Cũng có thắc mắc làm biết tên bảng liệu mà thực thao tác phá hoại ứng dụng web bị lỗi SQL injection Cũng đơn giản, SQL Server, có hai đối tượng sysobjects syscolumns cho phép liệt kê tất tên bảng cột có hệ thống Ta cần chỉnh lại câu lệnh SELECT, ví dụ như: ' UNION SELECT name FROM sysobjects WHERE xtype = 'U' liệt kê tên tất bảng liệu iii Dạng công sử dụng câu lệnh INSERT - Thông thường ứng dụng web cho phép người dùng đăng kí tài khoản để tham gia Chức thiếu sau đăng kí thành công, người dùng xem hiệu chỉnh thông tin SQL injection dùng hệ thống không kiểm tra tính hợp lệ thông tin nhập vào Ví dụ, câu lệnh INSERT có cú pháp dạng: INSERT INTO TableName VALUES('Value One', 'Value Two', 'Value Three') Nếu đoạn mã xây dựng câu lệnh SQL có dạng : - Thì chắn bị lỗi SQL injection, ta nhập vào trường thứ ví dụ như: ' + (SELECT TOP FieldName FROM TableName) + ' Lúc câu truy vấn là: INSERT INTO TableName VALUES(' ' + (SELECT TOP FieldName FROM TableName) + ' ', 'abc', 'def') Khi đó, lúc thực lệnh xem thông tin, xem bạn yêu cầu thực thêm lệnh là: SELECT TOP FieldName FROM TableName iiii Dạng công sử dụng stored-procedures 35 - Việc công stored-procedures gây tác hại lớn ứng dụng thực thi với quyền quản trị hệ thống 'sa' - Ví dụ: ta thay đoạn mã tiêm vào dạng: ' ; EXEC xp_cmdshell ‘cmd.exe dir C: ' - Lúc hệ thống thực lệnh liệt kê thư mục ổ đĩa C:\ cài đặt server - Việc phá hoại kiểu tuỳ thuộc vào câu lệnh đằng sau cmd.exe Nếu cài SQL Server chế độ mặc định SQL Server chạy SYSTEM, tương đương mức truy cập Windows Có thể dùng master xp_cmdshell để thi hành lệnh từ xa: ; exec master xp_cmdshell 'ping 10.10.1.2'-Thử dùng dấu nháy đôi (") dấu nháy đơn (') không làm việc Dưới số extended stored procedure mà hacker thường hay sử dụng để thực thi câu lệnh xem nội dung thông tin máy nạn nhân: Xp_availablemedia: Hiển thị ổ đĩa hành máy Xp_dirtree: Hiển thị tất thư mục kể thư mục Xp_loginconfig: Lấy thông tin chế độ bảo mật server Xp_makecab: Cho phép người sử dụng tạo tập tin lưu trữ Server (hay tập tin mà server truy xuất Xp_ntsec_enumdomain: liệt kê domain mà server truy vấn Xp_terminate_process: chấm dứt tiến trình với tham số PID iiiii Tấn công SQL Injection nâng cao • Chuỗi kí tự dấu nháy đơn: - Những nhà lập trình bảo vệ ứng dụng họ cách loại bỏ tất dấu nháy, thông thường loại bỏ dấu nháy cách thay dấu nháy thành dấu nháy Ví dụ a.1 : function escape( input ) input = replace(input, "'", "''") escape = input Rõ ràng là, ngăn chặn tất kiểu công Tuy nhiên muốn tạo function chuỗi end giá trị mà không dùng dấu nháy, dùng hàm “char()” ví dụ sau: 36 Ví dụ a.2: INSERT into User VALUES(666, char(0x63) +char(0x68) +char(0x72) char(0x69) +char(0x73) ,char(0x63) +char(0x68) Ví dụ +char(0x72) a.2 +char(0x69) câu truy vấn dấu nháy đơn insert +char(0x73),0xffff) chuỗi vào bảng, tương đương với: INSERT into User VALUES( 666,’chris’,’chris’,255) Hacker chọn username , password sốđể tránh dấu nháy ví dụ sau: Ví dụ a.3: INSERT into User VALUES( 667,123,123,0xffff) SQL server tự động chuyển từ số sang chuỗi • Tấn công tầng: - Mặc dù ứng dụng thay dấu nháy đơn khả bị chèn đoạn mã SQL Ví dụ b.1: Để đăng kí account ứng dụng, nhập username sau: Username: admin'— Password: passofadmin - Ứng dụng thay dấu nháy, kết câu insert sau: INSERT into User VALUES(123, 'admin'' ', 'password',0xffff) (nhưng sở liệu lưu “admin’ “) - Giả sử ứng dụng cho phép người dùng thay đổi mật Các đoạn mã ASP thiết kế đảm bảo người sử dụng phải nhập mật cũ trước nhập mật Đoạn mã sau: username = escape( Request.form("username") ); oldpassword = escape( Request.form("oldpassword") ); newpassword = escape( Request.form("newpassword") ); var rso = Server.CreateObject("ADODB.Recordset"); var sql = "select * from users where username = '" + username + "' and password = '" + oldpassword + "'"; rso.open( sql, cn ); if (rso.EOF) - Câu truy vấn thiết lập mật sau: {… sql = "update users set password = '" + newpassword + "' where username= '" + rso("username") + "'" rso(“username”) giá trị username có câu truy vấn login admin’-Câu truy vấn lúc sau: update users set password = 'password' where username = 'admin' ' - Nhờ hacker thay đổi mật admin giá trị Đây trường hợp tồn hầu hết ứng dụng lớn ngày có sử dụng chế loại bỏ liệu Giải pháp tốt loại bỏ giá trị lỗi chỉnh sửa lại Nhưng có vấn đề có số ô nhập liệu (như ô nhập tên) cho phép kí tự Ví dụ: O’Brien 37 - Cách tốt để giải vấn đề không cho phép nhập dấu nháy đơn Nếu điều thựchiện , loại bỏ thay Trong trường hợp này, cách tốt đảm bảo tất liệu đưa vào câu truy vấn SQL (kể giá trị sở liệu) phải kiểm soát cách chặt chẽ Một số ứng dụng phòng chống việc thêm câu truy vấn từ người dùng cách giới hạn chiều dài ô nhập Tuy nhiên, với giới hạn số kiểu công thực có chỗ hở để hacker lợi dụng Ví dụ b.2: Giả sử username password bị giớihạn tối đa 16 kí tự.Nhập: Username: aaaaaaaaaaaaaaa’ Password :‘; shutdown-Ứng dụng thay dấu nháy đơn hai dấu nháy đơn chiều dài chuỗi bị giới hạn 16 kí tự nên dấu nháy đơn vừa thêm bị xoá Câu lệnh SQL sau: Select * from users where username=’aaaaaaaaaaaaaaa’’ and password=’’’; shutdown—‘ kết username câu lệnh có giá trị là: aaaaaaaaaaaaaaa’ and password=’ iiiii.3 Tránh kiểm soát: - SQL server có giao thức kiểm soát chặt chẽ họ hàm sp_traceXXX, cho phép ghi nhân nhiều kiện xảy sở liệu Đặc biệt kiện T-SQL, ghi nhận lại tất câu lệnh SQL thực Server Nếu chế độ kiểm soát bật tất câu truy vấn SQL hacker bị ghi nhận nhờ mà người quản trị kiểm soát xảy nhanh chóng tìm giải pháp Nhưng có cách để chống lại điều này, cách thêm dòng “sp_password” vào câu lệnh T-SQL, gặp chuỗi việc kiểm tra ghi nhậnnhư sau: ‘sp_password’ was found in the text of this event The text has benn replaced with this comment for security reasons “sp_password” xuất phần thích Vì để dấu tất câu truy vấn công, cần đơn giản thêm sp_password vào sau ‘ ’ sau: 2.3.2.Cách Phòng Tránh SQL Injection - Như vậy, thấy lỗi SQL injection khai thác bất cẩn lập trình viên phát triển ứng dụng web xử lí liệu nhập vào để xây dựng câu lệnh SQL Tác hại từ lỗi SQL injection tùy thuộc vào môi trường cách cấu hình hệ thống Nếu ứng dụng sử dụng quyền dbo (quyền người sở hữu sở liệu - owner) thao tác liệu, xóa toàn bảng liệu, tạo bảng liệu mới, … Nếu ứng dụng sử dụng quyền sa (quyền quản trị hệ 38 thống), điều khiển toàn hệ quản trị sở liệu với quyền hạn rộng lớn tạo tài khoản người dùng bất hợp pháp để điều khiển hệ thống bạn • Trong hầu hết trình duyệt, kí tự nên mã hoá địa URL trước sử dụng • Việc công theo SQL Injection dựa vào câu thông báo lỗi việc phòng chống hay không cho hiển thị thông điệp lỗi cho người dùng cách thay lỗi thông báo trang người phát triển thiết kế lỗi xảy ứng dụng • Kiểm tra kĩ giá trị nhập vào người dùng, thay kí tự ‘ ; v v Hãy loại bỏ kí tự meta “',",/,\,;“ kí tự extend NULL, CR, LF, string nhận từ: o liệu nhập người dùng đệ trình o tham số từ URL o giá trị từ cookie • Đối với giá trị numeric, chuyển sang integer trước thực câu truy vấnSQL, dùng ISNUMERIC để chắn số integer • Dùng thuật toán để mã hoá liệu i Kiểm tra liệu - Kiểm tra tính đắn liệu vấn đề phức tạp thường chưa quan tâm mức ứng dụng Khuynh hướng việc kiểm tra tính đắn liệu cần thêm số chức vào ứng dụng, mà phải kiểm tra cách tổng quát nhanh chóng để đạt mục đích - Những tóm tắt sau bàn việc kiểm tra tính đắn liệu, với ví dụ mẫu để minh hoạ cho vấn đề Có ba giải pháp tiếp cận vấn đề này: 1) Cố gắng kiểm tra chỉnh sửa để làm cho liệu hợp lệ 2) Loại bỏ liệu bất hợp lệ 3) Chỉ chấp nhận liệu hợp lệ • Giải pháp 1: khó thực - Thứ nhất, người lập trình không cần thiết phải biết tất liệu bất hợp lệ, dạng liệu bất hợplệ đa dạng - Thứ hai, vấn đề trường hợp bị công tầng (second-oder SQL injection) việc lấy liệu từ hệ thống • Giải pháp 2: bị vô hiệu trường hợp giải pháp : - Dữ liệu bất hợp lệ luôn thay đổi với việc phát triển kiểu công • Giải pháp 3: tốt hai giải pháp kia, gặp số hạn chế cài đặt - Cách bảo mật tốt kết hợp giải pháp Một ví dụ cho cần thiết kết hợp 2-3 dấu nối họ tên “Quentin Bassington-Bassington” phải cho phép dấu gạch ngang định nghĩa liệu hợp lệ, chuỗi kí tự “ “ chuỗi kí tự đặc biệt SQL server - Ví dụ có lọc để : + Lọc bỏ liệu bất hợp lệ ‘ ‘,’select’ ‘union’ + Một hàm kiểm soát để loại bỏ dấu nháy đơn đối phó sau 39 uni’on se’lect @@version-‘- Một số cách cài đặt chức kiểm tra liệu • Cách 1: Từ chối liệu bất hợp lệ function validate_string( input ) known_bad = array("select","insert", "update", "delete", "drop"," ", "'" ) validate_string = true for i = lbound( known_bad ) to ubound( known_bad ) if ( instr( 1, input, known_bad(i), vbtextcompare ) ) then validate_string = false • Cách 2: Thay dấu nháyexit đơn:function end if function escape( input ) next = replace(input, "'", "''") input escape = input function • Cáchend 3: Chỉ chấp nhận liệu hợp lệ end function function validatepassword( input ) good_password_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123 456789" validatepassword = true for i = to len( input ) c = mid( input, i, ) if ( InStr( good_password_chars, c ) = ) then validatepassword = false exit function end if next end function 40 ii Khoá chặt SQL Server (SQL Server Lockdown) Đây danh sách công việc cần làm để bảo vệ SQL server: • Xác định phương pháp kết nối đến server: o Dùng tiện ích Network Utility để kiểm tra có thư viện mạng dùng hoat động • Kiểm tra tất tài khoản có SQL Server o Chỉ tạo tài khoản có quyền thấp cho ứng dụng o Loại bỏ tài khoản không cần thiết o Đảm bảo tất tài khoản có mật hợp lệ, … • Kiểm tra đối tượng tồn o Nhiều extended stored procedure xoá bỏ cách an toàn Nếu điều thực hiện, nên xem xét việc loại bỏ tập tin dll chứa mã extended stored procedure o Xoá bỏ tất sở liệu mẫu “northwind” “pubs” o Xóa stored procedure không dùng như: master xp_cmdshell, xp_startmail, xp_sendmail, sp_makewebtask • Kiểm tra tài khoản truy xuất đến đối tượng o Đối với tài khoản ứng dụng dùng để truy xuất sở liệu cấp quyền hạn cần thiết tối thiểu để truy xuất đến đối tượng cần dùng Kiểm tra lớp sửa chữa server o Có số cách công “buffer overflow”, “format string” thường ý đến lớp bảo vệ • Kiểm tra phiên làm việc server • Thay đổi "Startup chạy SQL Server" mức người dùng quyền hạn thấp SQL Server Security - Nhận xét: + Qua phần tìm hiểu SQL Injection,càng thấy việc kiểm tra liệu trước xử lý cần thiết + Ứng dụng việckiểm tra tính đắn liệu, cần mã hóa liệu bên sở liệu không cho xuất trang Web lỗi, báo nội dung lỗi cú pháp SQL để hacker thu thập thông tin sở liệu - Song song công việc người quản trị mạng iii Thiết lập cấu hình an toàn cho hệ quản trị sở liệu 41 - Cần có chế kiểm soát chặt chẽ giới hạn quyền xử lí liệu đến tài khoản người dùng mà ứng dụng web sử dụng Các ứng dụng thông thường nên tránh dùng đến quyền dbo hay sa Quyền bị hạn chế, thiệt hại Ngoài để tránh nguy từ SQL Injection attack, nên ý loại bỏ thông tin kĩ thuật chứa thông điệp chuyển xuống cho người dùng ứng dụng có lỗi Các thông báo lỗi thông thường tiết lộ chi tiết kĩ thuật cho phép kẻ công biết điểm yếu hệ thống 2.4 Cross Site Scripting (XSS) 2.4.1 Tấn công XSS - Cross-Site Scripting (XSS) kĩ thuật công phổ biến hiên nay, đồng thời vấn đề bảo mật quan trọng nhà phát triển web người sử dụng web Bất kì website cho phép người sử dụng đăng thông tin mà kiểm tra chặt chẽ đoạn mã nguy hiểm tiềm ẩn lỗi XSS - Cross-Site Scripting hay gọi tắt XSS (thay gọi tắt CSS để tránh nhầm lẫn với CSS-Cascading Style Sheet HTML) kĩ thuật công cách chèn vào website động (ASP, PHP, CGI, JSP ) thẻ HTML hay đoạn mã script nguy hiểm gây nguy hại cho người sử dụng khác Trong đó, đoạn mã nguy hiểm đựơc chèn vào hầu hết viết Client-Site Script JavaScript, JScript, DHTML thẻ HTML.Kĩ thuật công XSS nhanh chóng trở thành lỗi phổ biến Web Applications mối đe doạ chúng người sử dụng ngày lớn Người chiến thắng thi eWeek OpenHack 2002 người tìm XSS Phải mối nguy hiểm từ XSS ngày người ý 2.4.1.1 Hoạt động XSS: - Về XSS SQL Injection hay Source Injection, 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 Nó request gửi từ form liệu URL http://www.example.com/search.cgi?query=alert('XSS was found !'); - Và trình duyệt bạn lên thông báo "XSS was found !" Các đoạn mã thẻ script không bị giới hạn chúng hoàn toàn thay file nguồn server khác thông qua thuộc tính src thẻ script Cũng lẽ mà chưa thể lường hết độ nguy hiểm lỗi XSS - Nhưng kĩ thuật công khác làm thay đổi liệu nguồn web 42 server (mã nguồn, cấu trúc, sở liệu) XSS gây tổn hại website phía client mà nạn nhân trực tiếp người khách duyệt site Tất nhiên hacker sử dụng kĩ thuật đề deface website công vào bề mặt website Thật vậy, 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 Mục tiêu công XSS không khác người sử dụng khác website, họ vô tình vào trang có chứa đoạn mã nguy hiểm hacker để lại họ bị chuyển tới website khác, đặt lại homepage, hay nặng mật khẩu, cookie chí máy tính bạn bị cài loại virus, backdoor, worm 2.4.1.2 Cách công i Scan lỗ hỗng XSS cua ứng dụng web - Cách 1: Sử dụng nhiều chương trình dò quét lỗi ứng dụng web, ví dụ chương trình Web Vulnerability Scanner để dò quét lỗi XSS - Cách 2: Thực bước: • Bước 1: Mở website cần kiểm tra • Bước 2: Xác định chỗ (phần) cần kiểm tra XSS Site có phần: Search, error message, web form Chủ yếu lỗi XSS nằm phần này, nói chung XSS xảy chỗ mà người dùng nhập liệu vào sau nhận Ví dụ nhập vào chuỗi ‘XSS’ • Bước 3: Xác minh khả site có bị lỗi XSS hay không cách xem thông tin trả Ví dụ thấy này: ‘Không tìm thấy XSS…’ , ‘Tài khoản XSS không xác’, ‘Đăng nhập với XSS không thành công’… khả chỗ bị dính XSS cao • Bước 4: Khi xác định chỗ có khả bị dính lỗi XSS chèn đoạn code vào để thử tiếp, ví dụ sau: Chèn đoạn code này: < script>alert('XSS')< /script> vào ô bị lỗi nhấn nút Login, nhận popup có chữ ‘XSS’ 100% bị dính XSS Nhưng xin ý , có trường hợp website bị dính XSS không xuất popup buộc lòng bạn phải VIEW SOURCES (mổ bụng) để xem Khi view sources nhớ kiếm dòng < script>alert('XSS)< /script> , có hết chạy , XSS Gọi http://thuctapcoso.com/index.php site bị dính lỗi XSS ta tìm nơi bị lỗi : http://thuctapcoso.com/index.php?page=

Ngày đăng: 14/10/2016, 16:03

TỪ KHÓA LIÊN QUAN

w