Khai thác qua Hidden Input
Trang 1 trong tổng số 1 trang
Khai thác qua Hidden Input
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:
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:
Trích:
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:
2. Tí đăng nhập vào:
3. Tí muốn chỉnh sửa hồ sơ mình nên vào mục chỉnh sửa:
4. Tí xem thử source code:
..và thấy một hidden field nghi ngờ: user_id!
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:
Xong.
5. Tí vào mục "quên mật khẩu" để reset lại mật khẩu user này:
6. Tí đăng nhập với email và mật khẩu mới:
Thành công. Tí lúc này có thể xem hồ sơ user này:
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.
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
Trích:
- Code:
POST /shop.php HTTP/1.0
....
price=0.99
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:
2. Tí đăng nhập vào:
3. Tí muốn chỉnh sửa hồ sơ mình nên vào mục chỉnh sửa:
4. Tí xem thử source code:
..và thấy một hidden field nghi ngờ: user_id!
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:
Xong.
5. Tí vào mục "quên mật khẩu" để reset lại mật khẩu user này:
6. Tí đăng nhập với email và mật khẩu mới:
Thành công. Tí lúc này có thể xem hồ sơ user này:
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.
Similar topics
» Vx khai thác lỗi IE7 0-day
» Khai thác lỗi tràn bộ đệm.
» Khai thác lỗi của DNS Server
» Khai thác cơ chế System Restore
» Metasploit - Công cụ khai thác lỗ hổng
» Khai thác lỗi tràn bộ đệm.
» Khai thác lỗi của DNS Server
» Khai thác cơ chế System Restore
» Metasploit - Công cụ khai thác lỗ hổng
Trang 1 trong tổng số 1 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết
27/8/2013, 11:45 am by echcondihoc
» Quản Lí Tiến Trình Dùng Thư Viện PSAPI
11/10/2011, 9:42 pm by CNTT_DH
» xin tai lieu tieng viet
31/8/2011, 6:59 am by bantoisg
» Theo dõi tiến trình
27/8/2011, 5:51 pm by haigaopro01
» Giải pháp Bảo mật của Cisco
17/6/2011, 8:50 am by admin
» Nghiên cứu và đưa ra giải pháp phòng chống tấn công DoS, DDoS (Phần 1)
16/6/2011, 2:32 pm by admin
» Learn to hack !
16/6/2011, 8:49 am by admin
» Giải pháp hệ thống dành cho doanh nghiệp với thiết bị mạng Fortinet (Phần 1)
15/6/2011, 11:12 am by admin
» Ô Long Viên (Tập II)
27/9/2010, 4:56 pm by root
» những ebook về hack tiếng việt cho người mới tìm hiểu.
27/9/2010, 4:54 pm by root