Tải bản đầy đủ (.pdf) (51 trang)

Bài giảng An toàn mạng máy tính nâng cao: Chương 6 - ThS. Nguyễn Duy

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.64 MB, 51 trang )

WEB APPLICATION SECURITY
Author: Nguyễn Trường Phú – Nguyễn Tuấn Anh

Date: 1-5-2015


ABOUT AUTHOR
•  Name: Nguyễn Tuấn Anh
Nguyễn Trường Phú
•  Class: 23CCAN04
•  Unit: An toàn ứng dụng


CONTENT
1.  Web application attack and defense
2.  Modsecurity (mod_sec)


Web Application
attack and Defense


Web Application Security

Nền tảng Website phổ biến:
Web services:

Languages:

Databases:


Client – Side
•  Apache (httpd)
•  Nginx

+

•  HTML + CSS / HTML5 + CSS3
•  Javascript / Jquery
Server - Side

•  IIS
•  Apache Tomcat

•  PHP
•  ASPX (ASP.NET)
•  JSP + Servlet (JAVA)

+

• 
• 
• 
• 
• 
• 
• 
• 

MySQL
MariaDB

MongoDB
MemSQL
Access
SQLserver
MSSQL
……..


Web Application Security

1 Website có thể bị tấn công như thế nào?
•  Thông qua Authencation (Các hình thức tấn công vào mật khẩu, giao thức mã hoá, hình thức chứng thực,…)
•  Thông qua Session, Transport,…. (Các hình thức tấn công qua bảo mật đường truyền bao gồm cả MITM)

•  Thông qua Lổ hổng Web Application
• 
• 
• 
• 
• 
• 
• 

Thông qua Lổ hổng OS (Đặc biệt nhiều đối với Windows và khá ít đối với Linux)
Thông qua Server Application/Software (Lổ hổng các service/software khác trên server: Mail, browser,adobe,java,…)
Thông qua Mã độc hoặc Backdoor được thiết lập từ trước
Thông qua các hình thức tấn công từ chối dịch vụ (DoS, DDoS, DRDoS, Spam, …..)
Thông qua Crawler hoặc các kẻ hở trong configure và 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ý
Thông qua tâm lý con người (Social)



Web Application Security

Lổ hổng Web Application
10 quy chuẩn bảo mật và cũng là 10 phân nhóm lỗ hổng bảo mật ứng dụng web theo OWASP 2010.
1.  Injection (SQLi, LDAPi, OS command injection,…)
2.  Cross Site Scripting (XSS)
3.  Broken Authentication and Session Management (Nguy cơ về quản lý phiên/session)
4.  Insecure Direct Object References (Các lổ hổng trong tham chiếu)
5.  Cross Site Request Forgery (CSRF)
6.  Security Misconfiguration (Lổ hổng trong cấu hình, triển khai dịch vụ web,…)
7.  Insecure Cryptographic Storage (Lổ hổng trong mã hoá dữ 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)


Web Application Security

Ví dụ về 1 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)
…..


1. SQL injection

Web Application Security

Định nghĩa:
SQL injection (SQLi) là một kỹ thuật cho phép những kẻ tấn công lợi dụng lỗ
hổng của việc kiểm tra dữ liệu đầu vào trong các ứng dụng web và các thông
báo lỗi của hệ quản trị cơ sở dữ liệu trả về để inject (tiêm vào) và thi hành các
câu lệnh SQL bất hợp pháp


1. SQL injection

Web Application Security

Ví dụ:
Truy cập chuyên mục SQL trên ceh.vn thấy URL có dạng: /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 trên URL: /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 vì 1=1 luôn đúng nên truy vấn trả lại tất cả những thông tin có trong bảng chuyenmuc
⇒  Thông tin bị khai thác => Lỗi.

Attacker có thể thực hiện truy vấn phức tạp hơn, truy vấn các cột, trường, thông tin quan trọng hơn.


2. XSS

Web Application Security

Định nghĩa:

XSS xuất hiện khi một ứng dụng web cho phép người dùng nhập các dữ liệu vào mà
không thông qua kiểm duyệt nội dung, những dữ liệu này sẽ tương tác trực tiếp với
những người dùng khác cùng sử dụng website. Nguy cơ tạo ra là hacker có thể
chèn các 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ã
độc khác.


2. XSS
Định nghĩa:

Web Application Security


2. XSS

Web Application Security

Ví dụ:
Code lây $name trực tiếp từ giá trị khung name và in ra 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 này được javascript được gán cho biến name và in ra
Như một câu lệnh chứ không phải là 1 truy vấn bình thường
ó đoạn javascript độc hại của attacker được thực thi

if(!empty($_GET['name']))
{
$name=$_GET['name'];
print $name;
} else {


3. LFI

Web Application Security

Định nghĩa:
Lỗ hổng cho phép các attacker có thể truy vấn các tập tin nhạy cảm trên
web server và đọc được
Nội dung các tập tin đó. Ví dụ các tập tin nhạy cảm: /etc/passwd, /etc/
shadow, httpd.conf,……


Web Application Security

3. LFI
Ví dụ:


Truy cập chuyên mục SQL trên ceh.vn thấy URL có dạng: /index.php?page=SQl
è Nếu code trang view có dạng:

$Bien=$_GET[‘page’];
Include $Bien; ?>

Attacker cố tình truy vấn trên URL: /index.php?page=../../../etc/passwd
è Lúc này trở thành giống như là ta code như sau:
$Bien=$_GET[‘page’];
Include ../../../etc/passwd; ?>
è Attacker có thể đọc được nội dung của tập tin passwd trong đường dẫn ../../etc/ trên server
ngay chính tại trang view.
Chú ý ../ là chuyển lên một thư mục trong Linux. Nếu server windows thì dung ..\ ó URL lencode = %5C


3. RFI

Web Application Security

Định nghĩa:

Cho phép attack gọi đến một file trên web server hoặc trên server khác ngay tại web
server này.
Ví dụ:
/>Nếu ceh.vn bị lỗi RFI thì nội dung trang vietnamnet.vn sẽ hiển hị trên ceh.vn
Nếu attacker đặt backdoor trên vietnamnet.vn dạng:
/>Tại ceh.vn attacker truy vấn: />Thì nội dung backdoor shell.php sẽ được include vào source code của ceh.vn ó ta cắm
backdoor trưc tiếp trên ceh.vn



3. RFI

Web Application Security

Ví dụ:

Input:

/>Out:

Code:
$test=$_GET['test'];
include $test.'id=1';
?>
Và register_globals = off


3. LFD

Web Application Security

Định nghĩa:

Giống LFI nhưng thay vì attacker có thể đọc các file nhạy cảm thì ở đây attacker có thể
Download các file nhạy cảm về máy



3. LFD

Web Application Security

Ví dụ:
Đoạn code sau:
$test=$_GET['test'];
readfile($test);
?>
Hàm readfile() cho phép chúng ta đọc code file được truyền vào .
/>

Web Application Security

Phát hiện, kiểm tra các lổ hổng Web Application:
•  Ở vị trí attacker tấn công Opensource hoặc ở 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 các input
(Nhập vào chuỗi ký tự ngẫu nhiên hoặc có mục địch nhằm xác định lổ hổng)
Ví dụ: Thêm vào URL, khung Search, Login,… các 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ác công cụ Scan, tìm kiếm lổ hổng
Ví dụ:
OpenSource: W3AF, Paros (Andiparos và Zed attack Proxy), Skipfish, Grabber, Zero Day Scan,…
CloseSource: Acunetix, N-stalker, NeXpose, Retina, AppScan, ParosPro, ….



Web Application Security

Giải pháp Web Application Security:
•  An Toàn Source code: Fix lổ hổng trong source code. Đưa ra 1 số hàm lọc, Security phù hợp
•  Authencation: Áp dụng các hình thức mã hoá, chứng thực phù hợp (Kể cả mã hoá đường
truyền (SSL, TLS,…))
•  Đảm bảo toàn vẹn dữ liệu
•  Permission: Phân quyền tập tin source code web, tập tin quan trọng server, quản trị web,…
phù hợp
•  Nâng cao kiến thức quản trị viên, tâm lý con người.
•  Thủ thuật riêng (Tuỳ kinh nghiệm mỗi quản trị viên): Giả lập patch web home, Giấu Configure
file, tạo bẫy (honeypot), thiết lập php.ini phù hợp, lợi dụng mod rewirte, ……..

•  Sử dụng Web Application Firewall


Web Application Security

Tại sao cần Web Application Firewall?
Nếu 1 Server chứa hàng trăm website è Việc Fix code từng website sẽ gây tốn kém tiền bạc, thời gian,
Vô tình bỏ sót lổ hổng hoặc tạo phản ứng ngược nếu đội ngũ Fix Code trình độ yếu, cần một lớp gia cố
Chắn chắn bên ngoài

è Web Application Firewall: Nhanh, Tiết kiệm chi phí, công sức, hiệu quả lớn,
nhiều tính năng mở rộng, Quản trị tập trung, …. Và còn nhiều lợi ích khác


Web Application Security

Tại sao dùng Web Application khi có Firewall thông thường?

Bởi vì ta cần những thứ firewall thông thường không có hoặc không được thiết kế với mục đích:
Hoạt động và bảo vệ mạnh mẽ Layer 7, chống các cuộc tấn công layer 7.
Phân tích, lọc, kiểm duyệt, thậm chí sửa đổi mạnh mẽ không chỉ header mà còn cả Request body,
Request Response, được thiết kế để phù hợp với từng ứng dụng web, từng hệ thống web,
Buffer các request/response để đảm bảo phân tích toàn diện vào bảo vệ tốt ứng dụng trong thời gian
Thực
Một số sản phẩm WAF cung cấp nhiều tính năng mở rộng như: Kiểm soát Cookies, Fake port,
Fake Comment, Fake Compoment, …….


Web Application Security

Sơ đồ triển khai hệ thống đề nghị (Chỉ đối với 1 hệ thống Web server)

User

Reverse
Proxy
----WAF
(mod_sec)

Web
Server

Database
Server

Chú ý: WAF (Trong bài này là Mod_sec) và các luật chính của firewall tầng dưới sẽ triển khai tại Reverse
Proxy. 1 Reverse Proxy có thể triển khai với nhiều Web Server. Tuỳ nhu cầu và điều kiện + Độ quan trọng
Của DB mà triển khai Database riêng như mô hình hay để DB ngay tại Webserver còn Database triển

Khai như một Server AD Backup hoặc gỡ bỏ để tiết kiệm chi phí.


Web Application Security

Một vài thắc mắc:
Tại sao triển khai WAF trên Reverse Proxy?
è Để bảo toàn Web Server và các Server bên trong khi cuộc tấn công nặng nề. Attacker tiếp xúc trực
Tiếp với reverse proxy.
è Giảm thiểu tài nguyên tiêu tốn cho Web server vì các WAF cần 1 lượng tài nguyên không nhỏ.
è  WAF cũng có thể kiểm soát tài nguyên tĩnh được Caching trên Reverse Proxy (HTML, CSS,…)
Một số lời khuyên:
Triển khai Reverse proxy với Nginx hoặc Apache (khuyên dùng Nginx vì độ chịu tải và caching)
Có thể sử dụng Linux cho các server, Nếu sử dụng Linux cho các Server thì khuyên dùng firewall
Application: modsecurity và Firewall tầng dưới dùng Iptables, lý do: Free, Mạnh mẽ, tuỳ biến mạnh,
Modsecurity và Iptables có thể kết hợp với nhau hoàn hảo, Modsecurity có thể ra lệnh cho iptables
Thực hiện các action khi cần thiết thông qua module hỗ trợ.


×