Một vài cách vượt qua tường lửa ứng dụng web (WAF) để tìm lỗ hổng SQLi

DDos

VIP Members
22/10/2013
524
2.191 bài viết
Một vài cách vượt qua tường lửa ứng dụng web (WAF) để tìm lỗ hổng SQLi
Chắc hẳn bạn đã ít nhiều nghe đến thuật ngữ "tường lửa" hoặc Firewall. Mục đích của Firewall là phát hiện và ngăn chặn tấn công. Hầu hết các ứng dụng web và hệ điều hành hiện nay đều được trang bị Firewall. Như một "hacker", làm thế nào để vượt qua cơ chế phát hiện của tường lửa, đó là câu hỏi đầu tiên và mục đích của hacker. Để trả lời câu hỏi này, trước hết bạn cần hiểu cách firewall làm việc như thế nào?


Firewall cơ bản là tấm lá chắn giữa máy tính của bạn (hoặc một mạng) và Internet. Firewall có thể được so sánh như một nhân viên bảo vệ của một tòa nhà nào đó, và nhân viên này có thể cho phép hoặc từ chối bất kỳ ai đi vào tòa nhà này. Tương tự, Firewall có thể là chương trình phần mềm, hoặc thiết bị phần cứng mà nó lọc gói tin đi từ Internet tới máy tính của bạn hoặc mạng máy tính.


Firewall có thể từ chối hoặc cho phép lưu lượng mạng giữa các thiết bị dựa trên các nguyên tắc mà nó đã được cấu hình hoặc cài đặt bởi một người quản trị tường lửa. Rất nhiều firewall cá nhân như Windows firewall hoạt động trên một tập hợp các thiết lập đã được cài đặt sẵn mà nó có thể ngăn ngừa các hiểm họa thông thường, người sử dụng không cần lo lắng về việc phải cấu hình firewall như thế nào.

Personal firewall rất dễ dàng để cài đặt và sử dụng. Tuy nhiên, ở trong một mạng lớn hoặc một công ty, việc cấu hình firewall là cực kỳ quan trọng để tránh khỏi các hiểm họa có thể có xảy ra trên mạng.

Ví dụ, một công ty có thể cấu hình khác nhau cho FTP server, Web server... Thêm nữa, công ty cũng có thể kiểm soát nhân viên việc truy cập Internet bằng cách khóa truy cập tới một số website nhất định.

Firewall sẽ sử dụng một hoặc nhiều phương pháp để kiểm soát lưu lượng mạng đến và đi trong một mạng:


  1. Packet Filtering: Trong phương pháp này, gói tin sẽ được phân tích và so sánh với bộ lọc đã được cấu hình trước đó. Lọc gói tin sẽ có rất nhiều nguyên tắc khác nhau tùy thuộc vào chính sách quản lý của công ty. Mỗi khi một lưu lượng mạng đến và đi, gói tin này sẽ được so sánh với cấu hình sẵn có ở trong firewall, nếu nó được cho phép thì gói tin sẽ được chấp nhận, còn nếu không được cho phép trong cấu hình của firewall, gói tin sẽ bị từ chối đi qua mạng.
  2. Stateful Inspection: Đây là phương pháp mới hơn, nó không phân tích nội dung của gói tin, thay vào đó, nó so sánh dạng, mẫu của gói tin tới cơ cở dữ liệu được tin tưởng của nó. Cả lưu lượng mạng đến và đi sẽ được đối chiếu tới cơ sở dữ liệu.
Cấu hình firewall:

Firewall có thể được cấu hình bằng cách thêm một hoặc nhiều bộ lọc dựa trên một vài tiêu chí sẽ được đề cập dưới đây:


  1. IP addresses: Trong rất nhiều trường hợp, nếu địa chỉ IP của mạng ngoài được cân nhắc như là có hại, người quản trị sẽ thêm địa chỉ IP này vào cấu hình firewall để khóa máy tính trong mạng truy cập tới địa chỉ IP này. Hoặc nếu trường hợp có quá nhiều kết nối tới một server, người quản trị cũng có thể quyết định để khóa địa chỉ IP này sử dụng firewall.
  2. Domain names: Sẽ rất là khó để nhớ địa chỉ IP, cách dễ dàng hơn để cấu hình firewall là thêm bộ lọc dựa trên tên miền. Bằng cách này, một công ty có thể khóa tất cả các truy cập tới những tên miền xác định, hoặc có thể chỉ cho phép truy cập tới một danh sách các tên miền đã được lựa chọn cho việc truy cập.
  3. Ports/Protocols: Mọi ứng dụng chạy trên server đều đưa ra một lưu lượng Internet sử dụng cổng tương ứng. Ví dụ, máy chủ chạy trên Web service thường chạy trên cổng 80, Telnet (23).... Các dịch vụ không cần thiết nên được đóng bằng cách sử dụng firewall để ngăn ngừa xâm phạm có thể có.
  4. Specific words hoặc phrases: Firewall có thể được cấu hình để lọc một hoặc nhiều từ (words) hoặc nhóm từ (phrases), cả lưu lượng mạng đến và đi sẽ được quét để so sánh tới nhóm từ này trong bộ lọc. Ví dụ, bạn có thể cài đặt firewall để lọc tất cả các gói tin mà chưa từ "hack facebook", bạn có thể khóa lưu lượng mạng chứa từ này.
Phần mềm Firewall và Phần cứng Firewall:

Phần cứng firewall cung cấp cấp độ bảo mật ở mức độ cao, và phù hợp cho server yêu cầu mức độ bảo mật ở mức cao nhất. Phần mềm firewall thì rẻ hơn và phù hợp với người dùng cá nhân hơn.

Phần cứng firewall thường được xây dựng sẵn trong router và cung cấp sự bảo mật ở mức cao nhất bởi nó sẽ lọc mỗi gói tin đến và đi trước khi nó tới máy tính cá nhân. Ví dụ: Linksys Cable/DSL router.

Một vài cơ chế đang được áp dụng với các Firewall:

  • Giao thức phát hiện ngoại lệ: Từ chối các yêu cầu không đáp ứng tiêu chuẩn HTTP
  • Xác thực đầu vào nâng cao: Xác thực phía máy chủ và proxy, không chỉ xác thực phía máy khách
  • Danh sách trắng & danh sách đen (Whitelist & Blacklist )
  • Ngoài ra còn có: Bảo vệ cookie, công nghệ tránh xâm nhập, giám sát phản hồi ...
Trong đó, phổ biến nhất vẫn là cơ chế Whitelist & Blacklist. Xét về độ bảo mật và an toàn thì Whitelist mạnh hơn Blacklist rất nhiều. Nhưng do những hạn chế nhất định và những nguy cơ chưa thể xác định, Blacklist vẫn đang được áp dụng nhiều hơn.


Một vài cách vượt qua tường lửa ứng dụng web (WAF) để tìm lỗ hổng SQLi


SQL Injection là một trong những kiểu hack web bằng cách inject các mã SQLquery/command vào input trước khi chuyển cho ứng dụng web xử lí, bạn có thể login mà không cần username và password, remote execution (thực thi từ xa), dump data và lấy root của SQL server. Công cụ dùng để tấn công là một trình duyệt web bất kì, chẳng hạn như Internet Explorer, Netscape, Lynx, …
sqli.jpg


  • Thay đổi ký tự tấn công hỗn hợp (Mixed Case Change)
    Thông thường, với một firewall áp dụng cơ chế blacklist, nó sẽ lọc theo các từ khóa tấn công như union, select... Với một bộ lọc yếu, bạn có thể thay đổi union thành Union hoặc UniOn... Ví dụ: http://target.com/index.php?page_id=-15 uNIoN sELecT 1,2,3,4
  • Thay thế từ khóa (Chèn các ký tự đặc biệt sẽ bị xóa bởi WAF) - SELECT có thể trở thành SEL<ECT sẽ được chuyển thành SELECT khi ký tự vi phạm bị xóa. Ví dụ: http://target.com/index.php?page_id=-15&nbsp;UNIunionON SELselectECT 1,2,3,4
  • Sử dụng mã hóa:
    URL encode: page.php?id=1%252f%252a*/UNION%252f%252a /SELECT
    Hex encode: target.com/index.php?page_id=-15 /*!u%6eion*/ /*!se%6cect*/ 1,2,3,4 SELECT(extractvalue(0x3C613E61646D696E3C2F613E,0x2f61))
    Unicode encode: ?id=10%D6‘%20AND%201=2%23
  • Sử dụng comment
    Chèn cú pháp comment vào giữa các chuỗi tấn công. Chẳng hạn, / *! SELECT * / có thể bị WAF bỏ qua nhưng được chuyển đến ứng dụng đích và được xử lý bởi cơ sở dữ liệu mysql. Ví dụ: index.php?page_id=-15 %55nION/**/%53ElecT 1,2,3,4 'union%a0select pass from users#
  • Sử dụng các ký tự đặc biệt
    + ` symbol: select `version()`;
    + +- :select+id-1+1.from users;
    + @:select@^1.from users;
    +Mysql function() as xxx
    +`、~、!、@、%、()、[]、.、-、+ 、|、%00

  • Kiểm soát tham số HTTP (HTTP_Parameter_Pollution):
    Cung cấp nhiều bộ tham số = giá trị cùng tên để gây nhầm lẫn cho WAF. Lấy ví dụ http://example.com?id=1&?id=’ or ‘1’=’1′ -‘ trong một số trường hợp như với Apache/PHP, ứng dụng sẽ chỉ phân tích "id =" trong khi WAF chỉ phân tích cú pháp đầu tiên. Nó dường như là một yêu cầu hợp pháp nhưng ứng dụng vẫn nhận và xử lý đầu vào độc hại. Hầu hết WAF ngày nay không dễ bị vượt qua bởi HTTP_Parameter_Pollution nhưng vẫn đáng để thử khi tìm cách vượt qua tường lửa.
  • Tràn bộ nhớ (Buffer overflow)
    Các ứng dụng, kể cả firewall dễ bị lỗi phần mềm giống như bất kỳ ứng dụng nào khác. Nếu một điều kiện tràn bộ đệm có thể tạo ra sự cố, ngay cả khi nó không dẫn đến thực thi mã, điều này có thể dẫn đến WAF không mở được. Lúc này chúng ta có thể vượt qua tường lửa.
  • Phương pháp cuối cùng là kết hợp lại các phương pháp ở trên, để làm cho firewall khó phát hiện hơn.
 
Thẻ
sql injection sqli
Bên trên