itprofes
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

Khai thác qua Hidden Input

Go down

Khai thác qua Hidden Input Empty Khai thác qua Hidden Input

Bài gửi  admin 27/4/2010, 10:45 am

I. Giới thiệu
Khi thiết kế ứng dụng web, do đặc tính HTTP là Stateless protocol nên việc cần thiết là làm thế nào giữ kết nối giữa Client và Server. Để làm công việc này các nhà lập trình dùng phương thức đưa các giá trị về cho User và kiểm tra lại khi cần thiết, giá trị được đưa xuống thường bằng một số cách: cookie, encode URL và HTTP Form hidden field.

Việc sử dụng form hidden field thường được sử dụng vì có thể chứa nhiều dữ liệu, nhưng đây là một phương thức không an toàn nếu chứa các dữ liệu nhạy cảm.

Vd sau minh họa một Form với hidden field:
Form trên HTML:
Trích:
Code:
< action="http://congty.com/shop.php" method="post">
...
< input color="Red">type=hidden< /span> name=price value="99.99">
...
< /form>

Khi sử dụng hidden field người dùng cuối sẽ không thấy các giá trị này được truyền xuống nhưng một Attacker chỉ cần đơn giản mở source code ra xem là sẽ thấy được các thông tin này và việc chỉnh sửa có thể thực hiện bằng cách save trang web hoặc dùng công cụ hỗ trợ như proxy sẽ thay đổi toàn bộ dữ liệu truyền lên Server:

Request lúc gửi lên Server:
Trích:
Code:
POST /shop.php HTTP/1.0
....

price=99.99
Request đã bị chỉnh sửa:
Trích:
Code:
POST /shop.php HTTP/1.0
....

price=0.99
Đoạn code trên minh họa một Attacker thay đổi trường giá được đưa xuống máy anh ta thông qua HTTP Form.

Một cách để hạn chế sự khai thác này là kiểm tra lại trang trước đó bằng trường HTTP_REFERER. Tuy nhiên, nếu một người biết lập trình sẽ dễ dàng thay đổi được các trường này trong HTTP header.

Hãy xem sự nguy hiểm của các khai thác này qua đoạn minh họa sau:

1. Mình muốn tìm việc làm nên đăng ký vào một trang web:
Khai thác qua Hidden Input Vlb1
2. Tí đăng nhập vào:
Khai thác qua Hidden Input Vlb2
3. Tí muốn chỉnh sửa hồ sơ mình nên vào mục chỉnh sửa:
Khai thác qua Hidden Input Vlb3
Khai thác qua Hidden Input Vlb4
4. Tí xem thử source code:
Khai thác qua Hidden Input Vlb5
..và thấy một hidden field nghi ngờ: user_id!
Khai thác qua Hidden Input Vlb6
Nghĩ đây có thể là id của user truyền lên Server để update thông tin, Tí thử thay đổi thông tin email của user_id trước đó bằng email của mình (id của Tí: 51369, id sửa: 51368). Tí làm với công cụ hỗ trợ Burpsuite:
Khai thác qua Hidden Input Vlb7
Xong.
Khai thác qua Hidden Input Vlb9
5. Tí vào mục "quên mật khẩu" để reset lại mật khẩu user này:
Khai thác qua Hidden Input Vlb10
Khai thác qua Hidden Input Vlb11
Khai thác qua Hidden Input Vlb12
Khai thác qua Hidden Input Vlb13
Khai thác qua Hidden Input Vlb14
Khai thác qua Hidden Input Vlb15
Khai thác qua Hidden Input Vlb16
6. Tí đăng nhập với email và mật khẩu mới:
Khai thác qua Hidden Input Vlb17
Thành công. Tí lúc này có thể xem hồ sơ user này:
Khai thác qua Hidden Input Vlb18
Với cách làm này Tí có thể đánh cắp được bất kỳ account nào.
Lỗi đã được gửi đến Quản trị website.

III. Hướng khắc phục:
- Không nên lưu các dữ liệu quan trọng tại Client.
- Sử dụng các phương thức encrypt session như SSL để encrypt cookie hay input data
- Dùng các giải thuật hash trên các dữ liệu.
admin
admin
Thiếu Úy III
Thiếu Úy III

Tổng số bài gửi : 627
Diem : 6548
Thank : 4
Join date : 24/03/2010
Đến từ : Bỉm Sơn - Thanh hóa

https://itprofes.forumvi.com

Về Đầu Trang Go down

Về Đầu Trang

- Similar topics

 
Permissions in this forum:
Bạn không có quyền trả lời bài viết