Ca kiểm thử cho chức năng Upload

Một phần của tài liệu (LUẬN văn THẠC sĩ) xây dựng các ca kiểm thử an toàn thông tin cho ứng dụng web (Trang 88 - 94)

Chức năng Upload thƣờng gặp các lỗi CSRF, lỗi liên quan đến thao tác với file và lỗi liên quan đến việc xác thực phân quyền. Phƣơng pháp tiếp cận hệ thống để kiểm tra các lỗi này là dựa vào việc nhập dữ liệu đầu vào trên giao diện có sử dụng thêm các công cụ hỗ trợ nhƣ firebug. Chúng tôi thiết kế các trƣờng hợp kiểm tra cho chức năng Upload nhƣ trong bảng 2.11.

Bảng 2.11. Các ca kiểm thử với màn hình có chức năng Upload

Mã ca kiểm

thử

Mục đích kiểm

thử Các bƣớc thực hiện mong muốn Kết quả Ghi chú

CHỨC NĂNG: Upload

Kiểm soát các thao tác với file

F9_R7_1

Path traversal (Kiểm tra việc chặn lƣu file vào thƣ mục share)

Pre: Link phải chƣa đƣợc mã hóa thì mới nhìn đƣợc thƣ mục lƣu trữ file

1. Thực hiện Upload file 2. Copy link upload

3. Kiểm tra thƣ mục lƣu (xem trong link download)

Không cho phép lƣu vào thƣ mục share

- Phạm vi kiểm thử: Mỗi chức năng 1 case

- Biểu hiện lỗi: Cho phép lƣu

- Giải thích lỗi: Không cho phép lƣu giữ các file upload tại thƣ mục nằm ngoài thƣ mục web hoặc các thƣ mục không đƣợc phép

F9_R7_2

Path traversal (Kiểm tra việc chặn lƣu file upload vào các thƣ mục không đƣợc phép)

1. Thực hiện Upload file

2. Copy link upload => Paste link vào ađress trên trình duyệt: Sửa đƣờng dẫn lƣu file vào thƣ mục không đƣợc phép => enter (hoặc dùng tamper data)

Hệ thống thông báo không đƣợc phép

- Phạm vi kiểm thử: Mỗi chức năng 1 case

- Biểu hiện lỗi: Hệ thống cho phép lƣu

- Giải thích lỗi: Không cho phép lƣu giữ các file upload tại thƣ mục nằm ngoài thƣ mục web hoặc các thƣ mục không đƣợc phép (VD: share)

F9_R7_3

Path traversal (Đổi phần

FileName lƣu trữ trên server)

1. Thực hiện Upload file tên a1

2. Thực hiện Upload file khác cùng tên a1

3. Download 2 file vừa upload để kiểm tra xem hệ thống có định danh chính xác 2 file (2 file có bị lẫn lộn với nhau không)?

Khi download 2 file, hệ thống vẫn định danh chính xác (bản chất là 2 file này lƣu trữ trên server với 2 tên đƣợc sinh ngẫu nhiên khác nhau, dù tên hiển thị trên Client vẫn là tên gốc khi user upload lên)

- Phạm vi kiểm thử: Mỗi chức năng 1 case

- Biểu hiện lỗi: Khi upload 2 file trùng tên => chức năng bị lỗi - Giải thích lỗi: Phần filename ban đầu upload lên server phải bỏ đi, dùng 1 chuỗi mới ngẫu nhiên thay thế cho tên file

F9_R7_4

Check file type khi upload

Kiểm tra xem hệ thống có kiểm soát chỉ cho upload giới hạn 1 số file đƣợc phép nhƣ mô tả không? - Hệ thống chỉ cho phép upload các định dạng file theo mô tả - Các định dạng file ngoài giới hạn này hệ thống không cho phép upload

- Phạm vi kiểm thử: Mỗi chức năng 1 case

- Biểu hiện lỗi: Hệ thống cho upload cả các file không đƣợc phép upload

Thực hiện upload file thực thi .exe, .bat, Hệ thống không

- Phạm vi kiểm thử: Mỗi chức năng 1 case

80

Hành động (action)

F9_R4_6

Kiểm tra xác thực, phân quyền

(Kiểm tra URL Manipulation - Lỗi leo quyền với các action có phân quyền thực hiện)

1. Đăng nhập bằng user 1

2. Sửa giá trị của trƣờng đƣợc phân quyền: có thể thực hiện 1 trong các cách sau:

- Cách 1: Vào firebug/ HTML/ di chuyển con trỏ đến trƣờng đƣợc phân quyền miền dữ liệu => Sửa Value/ID = Value/ID tồn tại trong DB, nhƣng là miền dữ liệu không thuộc quyền của user 1 => thực hiện action

- Cách 2:

+ Tab 1: Thực hiện thao tác/ Copy Location with Parameters của thao tác

+ Tab 2: Paste link trên thanh ađress. Nếu cần thì:

=> sửa ID/tham số của bản ghi vừa thực hiện thao tác = 1 ID/tham số tồn tại trong DB

=> sửa các tham số, nếu hệ thống tự reset tham số đó khi thực hiện thao tác (VD: 1 số hệ thống đƣợc xử lý reset token trƣớc mỗi thao tác nhƣ thêm, sửa, xóạ..)

+ Tab 1: Đăng xuất khỏi hệ thống

+ Tab 2: enter để chạy link

- Cách 3: Dùng tamper

Thông báo không có quyền thực hiện action

- Phạm vi kiểm thử: Action làm thay đổi DL trong DB (thêm, sửa, xóa, download, upload, import, action nghiệp vụ quan trọng...)

- Biểu hiện lỗi: Thực hiện đƣợc action với bản ghi có id/tham số vừa sửa

F9_R4_7

Kiểm tra xác thực, phân quyền

(Kiểm tra URL Manipulation - Lỗi leo quyền - 2 user với các action có phần quyền Miền dữ liệu) 1. Firefox: + Đăng nhập bằng user 1

+ Sửa giá trị của trƣờng đƣợc phân quyền: Vào firebug-> HTML-> di chuyển con trỏ đến trƣờng đƣợc phân quyền miền dữ liệu -> lấy Value/ID

2. Chrome:

+ Đăng nhập bằng user 2

+ Sửa giá trị của trƣờng đƣợc phân quyền: Vào firebug-> HTML-> di chuyển con trỏ đến trƣờng đƣợc phân quyền miền dữ liệu -> Sửa Value/ID = Miền dữ liệu thuộc quyền của user 1, không thuộc quyền của user 2

+ Thực hiện action (Chú ý: khi thực hiện action, user 1 ở trình duyệt firefox vẫn đang đăng nhập và chƣa bị hết session)

Thông báo không có quyền thực hiện action

- Phạm vi kiểm thử: Các action có liên quan đến phân quyền miền dữ liệụ VD:

+ Đơn vị có phân quyền miền DL cho từng user

+ Combo, listbox: có phân quyền mỗi user 1 miền

+ Chức năng mà mỗi user có phạm vi quyền khác nhau (thêm, sửa, xóa, download, upload …)

+ Chú ý: 1 số trƣờng hợp thêm mới mà không gửi value/ ID đƣợc phân quyền miền DL lên server thì thƣờng không cần check lỗi này - Biểu hiện lỗi: Hệ thống cho phép thực hiện action trên trên Miền dữ liệu không đƣợc phân quyền (lỗi leo quyền)

82 F9_R4_8

Kiểm tra xác thực, phân quyền

(Kiểm tra URL Manipulation - Lỗi leo quyền với các action có ràng buộc quyền thực hiện )

1. Đăng nhập bằng user 1

2. Chọn dữ liệu mà user 1 không có quyền thực hiện action (do có ràng buộc, VD: bản ghi bị khóa - không cho phép thực hiện action): lấy ID dữ liệu của thao tác

3. Chọn dữ liệu mà user 1 có quyền thực hiện: sửa ID dữ liệu của thao tác = ID lấy đƣợc ở bƣớc 2

4. Thực hiện action

Thông báo không có quyền thực hiện action (việc check validate các ràng buộc phải thực hiện trên server)

- Phạm vi kiểm thử: Check với trƣờng hợp:

+ Các action tác động đến các DL đã bị ràng buộc không cho phép thực hiện action (VD: Thêm, sửa, xóa… với các DL đã bị khóa hoặc hết hiệu lực, vv...).

+ Và việc validate các ràng buộc này chỉ thực hiện phía client, không check trên server

- Biểu hiện lỗi: Hệ thống cho phép thực hiện action với DL đã có ràng buộc không cho phép thực hiện (VD: Dữ liệu đã bị khóa, hoặc đã hết hiệu lực…)

F9_R3_9 CSRF (Kiểm tra lỗi với các chức năng - action tác động đến DB) - Cách 1: 1. Mở firebug

2. Vào màn hình nhập đầy đủ thông tin (chƣa nhấn action)

3. Gõ lệnh java script:

tctResetToken("<giá trị token mới>") để reset lại toàn bộ token trƣớc khi nhấn action

4. Nhấn action

5. Kiểm tra hồi đáp từ ứng dụng

- Cách 2:

1. Ứng dụng: Vào màn hình nhập đầy đủ thông tin (chƣa nhấn action)

2. Tamper data: click start 3. Ứng dụng: Nhấn action

3. Tamper data: Click Tamper => Sửa trƣờng value của tất cả các Token trong Post data = 1 giá trị bất kỳ => submit. Tuy nhiên, với 1 số trƣờng hợp thì server lại check giá trị token đc gửi kèm trong link, chứ không phải trong post data, khi đó cách test này không chính xác

4. Ứng dụng: Kiểm tra hồi đáp từ ứng dụng

Chƣơng trình thông báo Token không hợp lệ.

- Phạm vi kiểm thử: Mỗi action tƣơng ứng 1 case (thƣờng chỉ check với các chức năng làm thay đổi DL trong DB (thêm, sửa, xóa, action quan trọng khác ...) + các action quan trọng

- Biểu hiện lỗi:

+ Không tìm thấy token (không gửi token lên server)

+ Hoặc vẫn thực hiện thao tác thành công

84

Một phần của tài liệu (LUẬN văn THẠC sĩ) xây dựng các ca kiểm thử an toàn thông tin cho ứng dụng web (Trang 88 - 94)