Tải bản đầy đủ (.pdf) (20 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 (1.22 MB, 20 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>

WEB APPLICATION SECURITY



<b>Author: Nguyễn Trường Phú – Nguyễn Tuấn Anh </b>


</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

ABOUT AUTHOR



• 

Name: Nguy

n Tu

n Anh



Nguyễn Trường Phú



• 

Class: 23CCAN04



</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

CONTENT



1. 

Web application attack and defense



</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

<b>Web Application </b>



</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

<b>N</b>

<b>ề</b>

<b>n t</b>

<b>ả</b>

<b>ng Website ph</b>

<b>ổ</b>

<b> bi</b>

<b>ế</b>

<b>n: </b>



•  Apache (httpd)


•  Nginx


•  IIS


•  Apache Tomcat


•  PHP


•  ASPX (ASP.NET)



•  JSP + Servlet (JAVA)


•  HTML + CSS / HTML5 + CSS3


•  Javascript / Jquery


<b>Client – Side </b>


<b>Server - Side </b>


•  MySQL


•  MariaDB


•  MongoDB


•  MemSQL


•  Access


•  SQLserver


•  MSSQL


•  ……..


<b>+ </b>

<b>+ </b>



</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

<b>1 Website có th</b>

<b>ể</b>

<b> b</b>

<b>ị</b>

<b> t</b>

<b>ấ</b>

<b>n cơng nh</b>

<b>ư</b>

<b> th</b>

<b>ế</b>

<b> nào? </b>




•  <b>Thơng qua Authencation (Các hình thức tấn cơng vào mật khẩu, giao thức mã hố, hình thức chứng thực,…) </b>


•  <b>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) </b>


<b>Thơng qua L</b>

<b>ổ</b>

<b> h</b>

<b>ổ</b>

<b>ng Web Application </b>



•  <b>Thơng qua Lổ hổng OS (Đặc biệt nhiều đối với Windows và khá ít đối với Linux) </b>


•  <b>Thơng qua Server Application/Software (Lổ hổng các service/software khác trên server: Mail, browser,adobe,java,…) </b>


•  <b>Thơng qua Mã độc hoặc Backdoor được thiết lập từ trước </b>


•  <b>Thơng qua các hình thức tấn công từ chối dịch vụ (DoS, DDoS, DRDoS, Spam, …..) </b>


•  <b>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,…) </b>


•  <b>Thơng qua Tấn công vật lý </b>


</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

<b>L</b>

<b>ổ</b>

<b> h</b>

<b>ổ</b>

<b>ng Web Application </b>



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)


</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>

<b>Ví d</b>

<b>ụ</b>

<b> v</b>

<b>ề</b>

<b> 1 s</b>

<b>ố</b>

<b> hình th</b>

<b>ứ</b>

<b>c t</b>

<b>ấ</b>

<b>n cơng Web Application ph</b>

<b>ổ</b>

<b> bi</b>

<b>ế</b>

<b>n: </b>



• 

SQL injection (SQLi)



• 

Cross Site Scripting (XSS)



• 

Local File Inclusion (LFI)



• 

Remote File Inclusion (RFI)



• 

Local File Discluse/Download (LFD)



</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>

<b> Định ngh</b>

ĩ

<b>a: </b>



<b>1. SQL injection </b>



<b>SQL injection (SQLi) là m</b>ộ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


</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>

<b>Ví dụ: </b>



<b>1. SQL injection </b>



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<sub>ể</sub> $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 ln đú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.


</div>
<span class='text_page_counter'>(11)</span><div class='page_container' data-page=11>

<b>Định ngh</b>

ĩ

<b>a: </b>



<b>2. XSS </b>



<b>XSS</b>

<b> xu</b>

<b>ấ</b>

<b>t hi</b>

<b>ệ</b>

<b>n khi m</b>

<b>ộ</b>

<b>t </b>

<b>ứ</b>

<b>ng d</b>

<b>ụ</b>

<b>ng web cho phép ng</b>

<b>ườ</b>

<b>i dùng nh</b>

<b>ậ</b>

<b>p các d</b>

<b>ữ</b>

<b> li</b>

<b>ệ</b>

<b>u vào mà </b>



<b>không thông qua ki</b>

<b>ể</b>

<b>m duy</b>

<b>ệ</b>

<b>t n</b>

<b>ộ</b>

<b>i dung, nh</b>

<b>ữ</b>

<b>ng d</b>

<b>ữ</b>

<b> li</b>

<b>ệ</b>

<b>u này s</b>

<b>ẽ</b>

<b> t</b>

<b>ươ</b>

<b>ng tác tr</b>

<b>ự</b>

<b>c ti</b>

<b>ế</b>

<b>p v</b>

<b>ớ</b>

<b>i </b>



<b>nh</b>

<b>ữ</b>

<b>ng ng</b>

<b>ườ</b>

<b>i dùng khác cùng s</b>

<b>ử</b>

<b> d</b>

<b>ụ</b>

<b>ng website. Nguy c</b>

<b>ơ</b>

<b> t</b>

<b>ạ</b>

<b>o ra là hacker có th</b>

<b>ể</b>



<b>chèn các mã k</b>

<b>ị</b>

<b>ch b</b>

<b>ả</b>

<b>n nh</b>

<b>ư</b>

<b> HTML, Javascript… (client side) nh</b>

<b>ằ</b>

<b>m </b>

ă

<b>n c</b>

<b>ắ</b>

<b>p </b>




<b>SessionCookie, thay </b>

<b>đổ</b>

<b>i giao di</b>

<b>ệ</b>

<b>n (deface) ho</b>

<b>ặ</b>

<b>c chuy</b>

<b>ể</b>

<b>n h</b>

<b>ướ</b>

<b>ng </b>

<b>đế</b>

<b>n trang có mã </b>



</div>
<span class='text_page_counter'>(12)</span><div class='page_container' data-page=12>

<b>Định ngh</b>

ĩ

<b>a: </b>



</div>
<span class='text_page_counter'>(13)</span><div class='page_container' data-page=13>

<b>Ví dụ: </b>


<b>2. XSS </b>


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


} else {
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


</div>
<span class='text_page_counter'>(14)</span><div class='page_container' data-page=14>

<b>Định ngh</b>

ĩ

<b>a: </b>



<b>3. LFI </b>



<b>L</b>

<b>ỗ</b>

<b> h</b>

<b>ổ</b>

<b>ng cho phép các attacker có th</b>

<b>ể</b>

<b> truy v</b>

<b>ấ</b>

<b>n các t</b>

<b>ậ</b>

<b>p tin nh</b>

<b>ạ</b>

<b>y c</b>

<b>ả</b>

<b>m trên </b>




<b>web server và </b>

<b>đọ</b>

<b>c </b>

<b>đượ</b>

<b>c </b>



<b>N</b>

<b>ộ</b>

<b>i dung các t</b>

<b>ậ</b>

<b>p tin </b>

đ

<b>ó. Ví d</b>

<b>ụ</b>

<b> các t</b>

<b>ậ</b>

<b>p tin nh</b>

<b>ạ</b>

<b>y c</b>

<b>ả</b>

<b>m: /etc/passwd, /etc/</b>



</div>
<span class='text_page_counter'>(15)</span><div class='page_container' data-page=15>

<b>Ví dụ: </b>



<b>3. LFI </b>



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:


<?php
$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:


<?php
$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.



</div>
<span class='text_page_counter'>(16)</span><div class='page_container' data-page=16>

<b>Định ngh</b>

ĩ

<b>a: </b>



<b>3. RFI </b>



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


</div>
<span class='text_page_counter'>(17)</span><div class='page_container' data-page=17>

<b>Ví dụ: </b>



<b>3. RFI </b>



Code:


<?php



$test=$_GET['test'];


include $test.'id=1';



?>



register_globals = off




Input:


</div>
<span class='text_page_counter'>(18)</span><div class='page_container' data-page=18>

<b>Định ngh</b>

ĩ

<b>a: </b>



<b>3. LFD </b>



<b>Gi</b>

<b>ố</b>

<b>ng LFI nh</b>

<b>ư</b>

<b>ng thay vì attacker có th</b>

<b>ể</b>

<b>đọ</b>

<b>c các file nh</b>

<b>ạ</b>

<b>y c</b>

<b>ả</b>

<b>m thì </b>

<b>ở</b>

đ

<b>ây attacker có th</b>

<b>ể</b>



</div>
<span class='text_page_counter'>(19)</span><div class='page_container' data-page=19>

<b>Ví dụ: </b>



<b>3. LFD </b>



Đoạn code sau:


<?php



$test=$_GET['test'];


readfile($test);



?>



Hàm

<b>readfile()</b>

cho phép chúng ta đọc code file được truyền vào .



</div>
<span class='text_page_counter'>(20)</span><div class='page_container' data-page=20>

<b>Phát hiện, kiểm tra các lổ hổng Web Application: </b>




•  Ở 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  <b>Sử dụng phương pháp thủ công </b>


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  <b>Sử dụng phương pháp tự động </b>


Sử dụng các cơng cụ Scan, tìm kiếm lổ hổng


Ví dụ:


</div>

<!--links-->

×