BÀI 6. AN TOÀN DỊCH VỤ WEB SQL INJECTION
Bùi Trọng Tùng, Viện Công nghệ thông tin và Truyền thông, Đại học Bách khoa Hà Nội
1
Nội dung
• Tổng quan về hoạt động của dịch vụ Web • Tấn công dạng Command Injection • SQL Injection • XSS • CSRF • Quản lý phiên
2
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
1
1. TỔNG QUAN VỀ DỊCH VỤ WEB
Bùi Trọng Tùng, Viện Công nghệ thông tin và Truyền thông, Đại học Bách khoa Hà Nội
3
World Wide Web
• Ra đời năm 1990 • Hệ thống các siêu văn bản trình bày bằng ngôn ngữ
HTML được liên kết với nhau
• Cho phép truy cập đến nhiều dạng tài nguyên thông tin khác nhau (văn bản, hình ảnh, âm thanh, video...) qua URL (Uniform Resource Location) và URI (Uniform Resource Identifier)
• Đang được điều hành bởi W3C • Các công nghệ liên quan: CSS, XML, JavaScrips, Adobe
Flash, Silverlight...
• Hiện tại đã trở thành nền tảng (Web-based service)
4
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
2
Giao thức HTTP
Web clients
• Sử dụng TCP, cổng 80 • Trao đổi thông điệp HTTP
IE
Web
(giao thức ứng dụng) HTTP Request HTTP Response
server
Firefox
Navigator
5
Thông điệp HTTP Request
• Mã ASCII (dễ dàng đọc được dưới dạng văn bản)
request line (GET, POST, HEAD commands)
header lines GET /dccn/index.html HTTP/1.1 Host: www.it-hut.edu.vn User-agent: Mozilla/4.0 Connection: close Accept-language:en-us
CR, LF (extra carriage return, line feed)
indicates end of message
6
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
3
Thông điệp HTTP Response
status line (protocol status code status phrase)
header lines
HTTP/1.1 200 OK Connection close Date: Tue, 16 Mar 2008 12:00:15 GMT Server: Apache/1.3.0 (Unix) Last-Modified: Mon, 15 Mar 2008 …... Content-Length: 8990 Content-Type: text/html
data data data data data ...
data, e.g., requested HTML file
7
Tương tác với web server
• Địa chỉ URL
http://coolsite.com/tools/info.html
Giao thức Tên miền(sẽ được phân giải thành địa chỉ IP)
Đường dẫn tới tài nguyên (nội dung tĩnh, thường là file HTML)
8
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
4
Tương tác với web server (tiếp)
• Tương tác với các kịch bản được thực thi trên server
(servlet)
http://coolsite.com/tools/doit.php?cmd=play&vol=44
Các tham số cho quá trình sinh nội dung
Đường dẫn tới servlet, cho phép server sinh nội dung trang web tùy thuộc các tham số: CGI: Common Gateway Interface PHP, JSP, ASP: ngôn ngữ kịch bản (scrips)
9
Kiến trúc chung của các dịch vụ web
subdomain.mysite.com/folder/page?id=5
HTML Page, JS file, CSS file, image, etc.
run code
Database Queries
Người dùng có thể tương tác với các tài nguyên khác thông qua dịch vụ web
10
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
5
Các nguy cơ đối với dịch vụ web
• Tấn công server từ phía client
Tấn công dạng Injection File System Traversal Broken Access Control
11
Các nguy cơ đối với dịch vụ web
• Tấn công từ phía server:
Clickjacking HistoryProbing Phishing
12
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
6
Các nguy cơ đối với dịch vụ web
• Tấn công người dùng khác:
XSS CSRF Remote Script Inclusion
13
Top 15 lỗ hổng(2015 White Hat Security)
70
56
47
29 26 24
16 15 11
8
6
6
6
5
80 70 60 50 40 30 20 10 0
14
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
7
2013 OWASP Top10 Project
Tên
Mô tả
Mã
Injection
A-1
Cho phép chèn dữ liệu ác tính vào câu lệnh hoặc truy vấn
A-2
Đánh cắp mật khẩu, khóa, thẻ phiên, hoặc khai thác lỗ hổng để giả mạo người dùng
Authentication and Session Management
A-3
XSS
Ứng dụng Web không kiểm tra mã thực thi nhúng vào dữ liệu nhận được và gửi lại mã thực thi này cho trình duyệt
…
Để lộ file, thư mục chứa thông tin cấu hình quan trọng, phân quyền truy cập không hợp lý…
Các lỗ hổng xuất hiện trong quá trình triển khai
A-8
CSRF
Trình duyệt của nạn nhân gửi thông điệp HTTP Request một cách ngoài ý muốn khi nạn nhân đang ở trạng thái đăng nhập
15
2. TẤN CÔNG DẠNG COMMAND INJECTION
Bùi Trọng Tùng, Viện Công nghệ thông tin và Truyền thông, Đại học Bách khoa Hà Nội
16
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
8
Command Injection
• Lợi dụng lỗ hổng không kiểm soát giá trị các đối số khi
thực thi kịch bản (servlet) trên web server Không phân biệt các ký hiệu điều khiển (ký hiệu phép toán, dấu ; “
• Ví dụ: Website chứa servlet cung cấp tính năng tính toán
‘...) trong giá trị của đối số và trong câu lệnh
biểu thức bất kỳ qua hàm eval() http://site.com/calc.php Nội dung biểu thức được truyền qua đối số exp. Ví dụ: http://site.com/calc.php?exp=1+1 • Servlet thực thi như thế nào nếu truyền đối số như sau: http://site.com/calc.php?exp=“10 ; system(‘rm *.*’)”
… $in = $_GET[‘exp']; eval('$ans = ' . $in . ';'); …
17
Command Injection – Ví dụ khác
1. http://site.com/exec/
Client
Server
2. Send page
Ping for FREE
Ô nhập dữ liệu
Enter an IP address below: