STDIO
Tìm kiếm gần đây
    Nội dung
    0
    0
    Chia sẻ
    Nội dung
    0
    0
    Chia sẻ

    Hướng Dẫn Trích Xuất Dữ Liệu Bằng ModSecurity

    Hướng dẫn trích xuất dữ liệu thông qua ModSecurity.
    31/03/2015 29/09/2020 2 phút đọc
    Hướng Dẫn Trích Xuất Dữ Liệu Bằng ModSecurity

    Kiểm tra ModSecurity trên hệ thống

    Để kiểm tra ModSecurity đã cài đặt thành công hay chưa, tạo một trang web (với phương thức GET) nhập input (là một đoạn text) sau đó gửi lên server một đoạn dữ liệu (thường là XSS hoặc SQL Injection). Ví dụ như nhập vào 1 đoạn SQL Injection:

    1' or '1' == '1'

    Khi nhấn submit gửi lên server, ModSecurity sẽ chặn lại và phân tích dữ liệu gửi lên. Do đoạn dữ liệu phía trên là một kiểu tấn công SQL Injection nên ModSecurity sẽ phát hiện và ngăn chặn. Phía bên màn hình của client sẽ xuất hiện thông báo request bị chặn lại (tùy vào rule của ModSecurity mà thông báo hiện lên sẽ khác nhau).

    Hướng dẫn cách trích xuất dữ liệu từ ModSecurity

    Lý do cài đặt ModSecurity từ source code tải về nhằm có thể chỉnh sửa mã nguồn của ModSecurity, qua đó có thể thêm các tính năng mong muốn ( như ở bài này là trích xuất dữ liệu khi client gửi lên server ) với phương thức GET.

    Trong file source code ModSecurity 2.8 tải về từ trang chủ, mở file mod_security2.c theo đường dẫn apache2/mod_security2.c. Sau đó tìm đến hàm create_tx_context. Đó là hàm xử lý request của client gửi lên server bằng phương thức GET. Trang web thử nghiệm ở đây rất đơn giản, bao gồm 2 input do client nhập vào và nút submit để gửi lên server:

    Khi client nhập vào đoạn dữ liệu và gửi lên server, dữ liệu (input user và pass) sẽ nằm trong một biến dữ liệu có tên là r->query_string. Ví dụ khi nhập vào user và pass lần lượt là haidang và 12345 thì biến r->query_string sẽ có giá trị là user=haidang&pass=12345&submit=Dang+nhap ,  ở  bài viết này sẽ lấy dữ liệu của input user gửi lên server và ghi thành file để lưu vào hệ thống.

    Đầu tiên, add 2 thư viện stdio.h và stdlib.h vào. Sau đó ở cuối hàm create_tx_context, thêm đoạn code sau để lấy dữ liệu input user từ client gửi lên server:

    FILE * pfile = fopen("/tmp/data_user.txt", "a");
    
    if(msr->query_string != NULL)
    {
    	int i = 5;
    	for(i; msr->query_string[i] != '&'; i++)
    	{
    		fputc(msr->query_string[i], pfile);
    	}
    	fputc('\n', pfile);
    }

    Ở đoạn code này, khi client gửi lên server, giá trị của input user sẽ được lưu lại ở file data_user.txt trong thư mục tmp nằm trong thư mục của hệ thống Ubuntu.

    0 Bình luận
    Khi bạn nhấn vào sản phẩm do chúng tôi đề xuất và mua hàng, chúng tôi sẽ nhận được hoa hồng. Điều này hỗ trợ chúng tôi có thêm kinh phí tạo nhiều nội dung hữu ích. Tìm hiểu thêm.
    STDIO

    Trang chính

    Công ty TNHH STDIO

    • 30, Trịnh Đình Thảo, Hòa Thạnh, Tân Phú, Hồ Chí Minh
      +84 28.36205514 - +84 942.111912
      developer@stdio.vn
    • 383/1 Quang Trung, Phường 10, Quận Gò Vấp, Hồ Chí Minh
      Số giấy phép ĐKKD: 0311563559 do sở Kế hoạch và Đầu Tư TPHCM cấp ngày 23/02/2012
    ©STDIO, 2013 - 2021