Thứ Hai, 20 tháng 6, 2011

Sử dụng ISA Server 2006 hạn chế tấn công SQL Injection (P1)

Phần 1: Tìm hiểu và xây dựng cơ sở dữ liệu trên MSDE.

>>> Phần 2

I. Giới thiệu

Bạn là quản trị mạng của một doanh nghiệp, công ty bạn có xây dựng website đặt tại web server của công ty. Bạn sử dụng Firewall Microsoft ISA Server 2006 để tiến hành publish web server để khách hàng có thể truy cập website của công ty bạn. Đây là website động, có tương tác với cơ sở dữ liệu. 

Cơ sở dữ liệu có thể là Microsoft SQL Server, MySQL, MSDE, Oracle,... SQL Injection là một trong những hình thức tấn công vào cơ sở dữ liệu dựa trên sự sơ hở của người lập trình web. Attacker (kẻ tấn công) sau khi tìm ra lỗi của trang web, attacker có thể nhập vào một số từ khóa đặc trưng vào FORM hoặc URL để tiến hành khai thác cơ sở dữ liệu như xem dữ liệu, xóa dữ liệu, cập nhật dữ liệu theo ý muốn. Để minh họa bài viết này tôi minh họa việc khai thác lỗi SQL Injection dựa trên đoạn code có sẵn, chưa khắc phục lỗi này và sử dụng ISA Server 2006 để hạn chế hình thức tấn công trên.

II. Một số khái niệm cơ bản về MSDE

MSDE (Microsoft Data Engine hoặc Microsoft Desktop Engine) là một hệ quản trị cơ sở dữ liệu của Microsoft, tương tự MS SQL Server. Phiên bản này là FREE, nên có một số giới hạn sau:

- Không có công cụ giao diện đồ họa để quản lý cơ sở dữ liệu.
- Kích thước database không vượt quá 2GB lưu trữ.
- Không vượt quá 25 kết nối đồng thời.

Một số giới hạn khác khi sử dụng MSDE

- Failover clustering.
- Log shipping.
- Parallel DBCC.
- Parallel create index.
- Enhanced read ahead and scan.
- Indexed views.
- Federated database server.
- System area network support (SAN).
- Graphical DBA, and developer utilities and wizards.
- Full-text search.
- Analysis services.
- OLAP partitions.
- Partition wizard.
- Linked OLAP cubes.
- ROLAP dimension support.
- HTTP Internet support.
- Custom rollups.
- Calculated Cells.
- Write back to dimensions.
- Very large dimension support.
- Actions.
- Real-time OLAP.
- Distributed partition cubes.
- Data mining.
- English query.

Tuy nhiên MSDE lại phù hợp với web site nhỏ, doanh nghiệp nhỏ khi doanh nghiệp đó mới bắt đầu cho sự phát triển của mình.

Yêu cầu khi cài đặt MSDE

- Hỗ trợ tối đa 2CPU trong Windows NT/Win2000/XP/2003 và 1CPU trong Win98/ME.
- Hỗ trợ tối đa 2 GB Ram
- Database lưu trữ tối đa 2GB.

1. Cài đặt MSDE

- Download MSDE 2000 SP4 tại đây

- Sau khi tải file này về, chạy file này để xả nén vào 1 thư mục (ví dụ C:\SQL2KSP4)
- Để cài đặt MSDE, bạn vào thư mục sau khi xả nén (C:\SQL2KSP4\MSDE) có file setup.ini . Bạn có thể khai báo sẵn cơ chế chứng thực khi login vào database trong file setup.ini hoặc có thể không xài file setup.ini thì khai báo cơ chế chứng thực trong lúc quá trình setup.

Có 4 loại cơ chế chứng thực

+ Windows authentication without network access
+ Windows authentication with network access
+ Mixed Windows and SQL mode authentication without network access
+ Mixed Windows and SQL mode authentication with network acces

Để việc cài đặt tốt hơn, trước khi cài đặt MSDE, bạn nhớ disable các chương trình diệt virus, sau khi cài đặt xong thì có thể enable lại bình thường.

Không sử dụng file setup.ini thì thực hiện như sau:

  • Windows authentication with network access: Với kiểu chứng thực này, khi client kết nối vào database, client không nhập username và password do đó username và password (dưới dạng plain text) sẽ không gửi qua đường mạng, chỉ có chương trình ứng dụng của Windows và .NET mới có thể truy cập vào database.Chương trình ứng dụng tại client sẽ tự động login vào MSDE bằng user account hiện hành tại máy trạm. Chạy file setup.exe như sau:

C:\...MSDE\>Setup.exe DISABLENETWORKPROTOCOLS=0 SAPWD="password"INSTANCENAME="myinstance"
với SAPWD là password của user sa (system admin: account quản trị database), INSTANCENAME là 1 hệ cơ sở dữ liệu

  • Mixed Windows and SQL mode authentication with network access (Java and Win access over a network): Với kiểu chứng thực này, sử dụng trộn lẫn 2 loại chứng thực là dùng user account của Windows và user sa (system admin) của MSDE. Client có thể truy cập database bằng chương trình ứng dụng của Windows và ứng dụng Java qua đường mạng. Username và password sẽ được gửi qua đường mạng dạng plain text (không mã hóa). Chạy file setup.exe như sau:

C:\...MSDE\>Setup.exe DISABLENETWORKPROTOCOLS=0 SAPWD="password" INSTANCENAME="myinstance" SECURITYMODE=SQL 

  • Mixed Windows and SQL mode authentication without network access (Local Java and Win access only): Với kiểu chứng thực này, không gán quyền cho việc truy cập qua mạng, sử dụng trộn lẫn 2 loại chứng thực là dùng user account của Windows và user sa (system admin) của MSDE. Chỉ có những chương trình cục bộ mới được phép truy cập database.

C:\...MSDE\>Setup.exe SAPWD="password "INSTANCENAME="myinstance" SECURITYMODE=SQL
Windows authentication without network access: Với kiểu chứng thực này, không gán quyền cho việc truy cập qua mạng. Sử dụng user account của Windows để chứng thực và chỉ có cục bộ mới được phép truy cập database. Đây là loại chứng thực được đánh giá là bảo mật nhất.
C:\...MSDE\>Setup.exe SAPWD="password " INSTANCENAME="myinstance"

Sử dụng file setup.ini như sau:

Điền vào sau từ khóa [Option] tùy theo mỗi loại chứng thực

Mixed Windows and SQL mode authentication with network access

[Options]
DISABLENETWORKPROTOCOLS=0
SAPWD="password"
INSTANCENAME="myinstance"
SECURITYMODE=SQL 

Windows authentication with network access

[Options]
DISABLENETWORKPROTOCOLS=0
SAPWD="password"
INSTANCENAME="myinstance"

Mixed Windows and SQL mode authentication without network access
    [Options]
    SAPWD="password"
    INSTANCENAME="myinstance"
    SECURITYMODE=SQL

    Windows authentication without network access
      [Options]
      SAPWD="password"
      INSTANCENAME="myinstance"

      Sau đó chạy file setup.exe để cài đặt.

      Trường hợp MSDE đã cài sẵn rồi, và muốn cấu hình lại cơ chế chứng thực thì thực hiện như sau

      - Mở Administrative Tools > Services : stop dịch vụ database instance tương ứng

      - Vào Run gõ Regedit , tìm tới HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\myinstance\MSSQLServer, tìm key LoginMode. Key này =1 sử dụng Windows authentication, key này =0 hoặc =2 sử dụng Windows và SQL authentication

      2. Một số lệnh cơ bản khi sử dụng MSDE

      Để thay đổi password của user sa (system administrator) , truy cập vào đường dẫn C:\Program Files\Microsoft SQL Server\80\Tools\Binn, sử dụng công cụ osql

      - Đối với Windows authentication 

      C:\Program Files\Microsoft SQL Server\80\Tools\Binn> osql –E –S localhost\myinstance
      1> use master
      2> go
      1> exec sp_password @old = null, @new = ‘newpassword’, @loginame = 'sa'
      2> go
      Password changed.
      1>quit
      Trong đó localhost là tên máy cài MSDE

      - Đối với Mixed mode 

      C:\Program Files\Microsoft SQL Server\80\Tools\Binn>osql –U sa –P password –S localhost\myinstance
      1> use master
      2> go
      1> exec sp_password @old = null, @new = ‘newpassword’, @loginame = 'sa'
      2> go
      Password changed.
      1>quit

      - Để xem version của MSDE gõ lệnh

      C:\Program Files\Microsoft SQL Server\80\Tools\Binn>osql -E -S localhost\myinstance
      1> select @@version
      2> go

      Microsoft SQL Server 2000 - 8.00.2039 (Intel X86)
      May 3 2005 23:18:38
      Copyright (c) 1988-2003 Microsoft Corporation
      Desktop Engine on Windows NT
      5.2 (Build 3790: Service Pack 2)


      8.00.194 - MSDE 2000
      8.00.384 - MSDE 2000 SP1
      8.00.534 - MSDE 2000 SP2
      8.00.760 - MSDE 2000 SP3
      8.00.2039 - MSDE 2000 SP4

      Bạn có thể dùng lệnh osql /? để tìm hiểu thêm về lệnh này

      III. Chuẩn bị

      Download và cài đặt các công cụ sau:

      - Microsoft .NET Framework 2.0 Service Pack 1 (x86): download
      - Microsoft Core XML Services (MSXML) 6.0 Service Pack 1: download
      - Microsoft SQL Server Management Studio Express: download
      hoặc tất cả phần mềm tại đây

      Mô hình lab


      IV. Các bước thực hiện

      1. Cài đặt ASP.NET và IIS
      2. Cài đặt Microsoft .NET Framework 2.0 Service Pack 1 (x86)
      3. Cài đặt Microsoft Core XML Services (MSXML) 6.0 Service Pack 1
      4. Cài đặt Microsoft SQL Server Management Studio Express
      5. Cài đặt MSDE
      6. Tạo cơ sở dữ liệu

      V. Thực hiện

      Thực hiện tại máy Web Server

      1. Cài đặt ASP.NET và IIS
      2. Cài đặt Microsoft .NET Framework 2.0 Service Pack 1 (x86)
      3. Cài đặt Microsoft Core XML Services (MSXML) 6.0 Service Pack 1
      4. Cài đặt Microsoft SQL Server Management Studio Express
      5. Cài đặt MSDE

      B1. Mở file setup.ini và khai báo như sau:

      [Options]
      SAPWD="P@ssword"
      INSTANCENAME="Bank"
      SECURITYMODE=SQL

      B2. Chạy file setup.exe, cài đặt xong thì khởi động lại máy

      6. Tạo cơ sở dữ liệu

      Sử dụng MS SQL Server Management Studio Express để tạo cơ sở dữ liệu


      Chạy chương trình SQL Server Management Studio Express, login bằng username sa, password P@ssword


      Chuột phải Database chọn New Database


      Đặt tên database là CreditCardDB


      Chọn Script Action to New Query Windows, nhìn góc tay trái bên dưới đợi tạo xong query đóng cửa sổ này lại


      Chọn Menu Query > Excute


      Chuột phải Database chọn Refresh thấy CreditCardDB đã tạo xong


      Chuột phải Tables > New Table


      Khai báo các trường trong table này như hình


      Chuột phải UserID chọn Set Primary Key


      Đóng cửa sổ tạo table chọn Yes


      Đặt tên cho table này là Users >OK


      Chuột phải Tables chọn New Table


      Tạo các trường trong table như hình


      Chuột phải OrderID chọn Set Primary Key


      Đóng cửa sổ này


      Chọn Yes


      Đặt tên cho Table này là Orders


      Chuột phải dbo.Users chọn Open Table


      Nhập dữ liệu cho Table Users


      Chuột phải dbo.Orders chọn Open Table


      Nhập dữ liệu cho Table Orders


      Chuột phải CreditCardDB chọn New Query


      gõ lệnh như hình
      SELECT * FROM Users; SELECT * From Orders;


      Chọn Meny Query > Execute


      Kết quả của 2 Table Users và Orders như hình


      Kết thúc phần 1.

      Editor: Vương L. Kiều (Baomathethong.blogspot.com)
      Author & Source: Nhatnghe.com

      Không có nhận xét nào:

      Đăng nhận xét