You are on page 1of 29

Tìm Hiểu Các Phương

Pháp Khai Thác Lỗ


Hổng Website
Nhóm 86
5 phương pháp khai thác lỗ hổng website
phổ biến

01 02 03
SQL Injection Cross Site Scripting Malware

(XSS)
04 05
Denial Of Service Man-in-the-Middle
(DOS) (MITM)
01
SQL injection
SQL Injection Cách phát
là gì hiện

Cách khai thác Cách phòng chống


SQL injection là gì?
SQL injection là một lỗ hổng bảo mật web cho phép kẻ tấn công can thiệp vào các
truy vấn mà ứng dụng thực hiện đối với cơ sở dữ liệu của nó.
Tác động của SQL
injection?
Các loại SQl injection
Cách phát hiện lỗi SQL injection
Việc phát hiện lỗi SQLi phụ thuộc vào dạng kiểm tra
Error-based
SQLi

Out-of-band Union-based
SQLi SQLi
Khai thác lỗ
hổng SQLi

Time-based Boolean-based
Blind SQLi Blind SQli
Một số công cụ khai thác lỗ hổng tự động
Phương pháp phòng chống SQLi

Xác thực Tham số


đầu vào hóa truy vấn

Thủ tục lưu Sử dụng


trữ Escaping
02
Cross Site Scripting
(XSS)
Tổng Quan
1. Khái niệm

Cross Site Scripting (XSS) là một trong những tấn công phổ biến và dễ bị tấn công
nhất nguy hiểm nhất đối với các ứng dụng web và có thể mang lại những hậu quả
nghiêm trọng. Tấn công XSS là dùng một đoạn mã độc khai thác một lỗ hổng XSS,
hacker sẽ gửi và chèn các đoạn script độc hại bằng ngôn ngữ lập trình như
Javascript và HTML thực thi chúng ở phía Client để chiếm phiên đăng nhập của
người dùng.
Tổng Quan
2. Mục đích

Là ăn cắp dữ liệu nhận dạng của người dùng như: cookies, session tokens và các
thông tin khác. Như chúng ta đã biết, cookie giúp ta đăng nhập tự động. Do đó với
cookie bị đánh cắp, chúng tôi có thể đăng nhập bằng các thông tin nhận dạng khác.

3. Vị trí của đoạn script độc hại

Những mã độc có thể được phản chiếu trên trình duyệt của nạn nhân hoặc được
lưu trữ trong cơ sở dữ liệu và được chạy mỗi khi người dùng gọi chức năng thích
hợp.
Tổng Quan
4. Nguyên nhân

Do xác thực đầu vào dữ liệu người dùng không phù hợp, dữ liệu độc hại từ đầu vào
có thể xâm nhập vào dữ liệu đầu ra. Mã độc có thể nhập một script và được chèn
vào mã nguồn của website. Khi đó trình duyệt không thể biết mã thực thi có phải
độc hại hay không. Do đó mã độc hại có thể đang được thực thi trên trình duyệt
của nạn nhận hoặc bất kỳ hình thức giả nào đang được hiển thị cho người sử dụng.
Tổng Quan
5. Hình thức tấn công

 XSS có thể xảy ra trên tập lệnh độc hại được thực hiện ở phía client.

 Trang web hoặc form giả mạo được hiển thị cho người dùng (nơi nạn nhân
nhập thông tin đăng nhập hoặc nhấp vào liên kết độc hại).

 Trên các trang web có quảng cáo được hiển thị.

 Email độc hại được gửi đến nạn nhân. Tấn công xảy ra khi tin tặc tìm kiếm
những lỗ hổng trên website và gửi nó làm đầu vào độc hại. Tập lệnh độc hại
được tiêm vào mã lệnh và sau đó được gửi dưới dạng đầu ra cho người dùng
cuối cùng.
Các phương pháp thực hiện tấn công XSS

Reflected XSS Stored XSS DOM Based XSS


Reflected XSS là dạng Stored XSS thì hướng Là loại tấn công XSS
tấn công thường gặp đến nhiều nạn nhân nâng cao, dựa vào việc
nhất trong các loại hình hơn. thay đổi cấu trúc của
XSS, tấn công có chủ DOM.
đích.
Reflected XSS
● Reflected XSS là dạng tấn công thường gặp nhất trong các loại hình XSS.
Hacker không gửi dữ liệu độc hại lên server nạn nhân, mà sử dụng email
phishing và các phương pháp social engineering khác để dụ nạn nhân đưa ra
yêu cầu đến máy chủ có chứa payload XSS, khi người dùng click vào link này
thì trang web sẽ được load chung với các đoạn script độc hại. Reflected XSS
thường dùng để ăn cắp cookie, chiếm session,… của nạn nhân hoăc cài
keylogger, trojan … vào máy tính nạn nhân.

● Nó không phải là một cuộc tấn công liên tục, nên hacker phải cung cấp
payload cho mỗi nạn nhân.
Có nhiều hướng để khai thác
thông qua lỗi Reflected XSS, một
trong những cách được biết đến
nhiều nhất là chiếm phiên làm
việc (session) của người dùng, từ
đó có thể truy cập được dữ liệu
và chiếm được quyền của họ trên
website.
Reflected XSS được mô tả như sau:
Trước tiên, hacker sẽ gửi cho nạn nhân một đường link có chứa mã độc hại đi kèm, ví dụ:
http://victim.com/index.php?id=<script>alert(document.cookie)</script>
Để cho người dùng khó phát hiện nên khi gửi đường link trên cho nạn nhân, hacker có
thể sẽ mã hoá nó thành những ký tự lạ khó đọc, ví dụ:
http%3A%2F%2Fvictim.com%2Findex.php%3Fid%3D%3Cscript%3Ealert%2
Như vậy, nạn nhân sẽ không nghi ngờ đường link lạ, và click vào link.
Khi nạn nhân click vào đường link được hacker gửi, trình duyệt sẽ load trang web và thực
thi các đoạn script kèm theo, sau đó gửi về cho hacker những thông tin của nạn nhân.
Từ phía site của mình, hacker sẽ bắt được nội dung request trên và coi như session của
người dùng sẽ bị chiếm. Đến lúc này, hacker có thể giả mạo với tư cách nạn nhân và thực
hiện mọi quyền trên website mà nạn nhân có.
Stored XSS
● Stored XSS là dạng tấn công mà hacker chèn trực tiếp các mã độc vào cơ sở dữ
liệu của website. Dạng tấn công này xảy ra khi các dữ liệu được gửi lên server
không được kiểm tra kỹ lưỡng mà lưu trực tiếp vào cơ sở dữ liệu. Khi người
dùng truy cập vào trang web này thì những đoạn script độc hại sẽ được thực
thi chung với quá trình load trang web.

● Ví dụ như các form góp ý, các comment … trên các trang web. Với kỹ thuật
Stored XSS , hacker không khai thác trực tiếp mà phải thực hiện tối thiểu qua 2
bước.
1. Đầu tiên hacker sẽ thông qua các 2. Tiếp theo, khi người dùng truy cập
điểm đầu vào (form, input, vào ứng dụng web và thực hiện các
textarea…) không được kiểm tra kỹ thao tác liên quan đến dữ liệu được
để chèn vào CSDL các đoạn mã nguy lưu này, đoạn mã của hacker sẽ
hiểm. được thực thi trên trình duyệt người
dùng.
DOM Based XSS
● DOM Based XSS là kỹ thuật khai thác XSS dựa trên việc thay đổi cấu trúc DOM,
cụ thể là HTML.

● Thực hiện được khi tập lệnh phía Client của ứng dụng web ghi dữ liệu do
người dùng cung cấp vào Document Object Model (DOM).

● Sau đó, ứng dụng web sẽ đọc dữ liệu từ DOM và gửi nó đến trình duyệt. Nếu
dữ liệu không được xử lý chính xác, kẻ tấn công có thể đưa ra payload được
lưu trữ như một phần của DOM. Payload sau đó sẽ thực thi khi dữ liệu được
đọc lại từ DOM.
● Một website có URL đến trang đăng ký như sau:
● http://example.com/register.php?message=Please fill in the form
● Thay vì truyền

● message=Please fill in the form

● thì truyền

● message=<label>Gender</label>

● <select class = "form-control" onchange="java_script_:show()"><option


value="Male">Male</option><option
value="Female">Female</option></select>

● <script>function show(){alert("Hacked");}</script>
Người dùng sẽ chẳng chút nghi ngờ với một
form “bình thường” như thế này, và khi lựa chọn
giới tính, Script sẽ được thực thi
Phương pháp
ngăn chặn
XSS
Giúp giảm thiểu rủi ro, nhưng có thể không đủ
để ngăn chặn lỗ hổng XSS có thể xảy ra
Data validation Chỉ chấp nhận những dữ liệu hợp lệ
Từ chối nhận các dữ liệu hỏng

Tìm kiếm các từ khóa nguy hiểm trong mục nhập


của người dùng và xóa chúng hoặc thay thế
Filtering chúng bằng các chuỗi trống.
Xóa thẻ <script> </ script>
Tạo danh sách thẻ HTML được phép sử dụng

Khiến các ký tự quan trọng trong dữ liệu mà


trang web nhận được không bị hiểu là mã thực
thi. Escape các ký tự này có nghĩa là chuyển đổi
Escaping chúng từ các ký tự đơn thành các chuỗi khi trình
duyệt biên dịch.
Xóa các kí tự “>”, “<” hoặc Output Endcoding các kí tự
đó.
Ví dụ Ecaping
VD: sử dụng hàm Strip_tags hoặc htmlentities để chuyển tất
cả những ký tự nguy hiểm thành các ký tự HTML an toàn.
<div class="comment_div">
<p class="name">Posted By:<?php echo htmlentities($name);?></p>
<p class="comment"><?php echo htmlentities($comment);?></p>
<p class="time"><?php echo $time;?></p> Kết quả sau khi vá lỗ hổng XSS:
</div>

You might also like