GIO] THIEU VE INPUT VALIDATION Input Validation — Kiểm tra dữ liệu đầu vào được thực hiện nhằm đảm bảo chỉ có những dữ liệu phù hợp đi vào hệ thống thông tin, tránh những đữ liệu độc hại
Trang 1BO GIAO DUC VA DAO TAO Trường Đại Học Ngoại Ngữ - Tin Học Thành Phó Hồ Chí Minh
Khoa Công Nghệ Thông Tin
MÔN HỌC : AN NINH MẠNG
DE TAIL: TIM HIEU VE INPUT VALIDATION
Giáo Viên Hướng Dẫn : Thầy Phạm Dình Thắng
Thành Viên :
1 Dao Doan Duy Thang : 20DHI10174
Trang 2TP Hồ Chí Minh, Ngày tháng năm
Trang 3NHAN XET CUA GIANG VIEN
Trang 4PHIẾU CHAM DIEM MON THI VAN DAP Diém phan trinh bay — Diém hé 10
Họ tên OC he6t9Sd0dtdetd9dhSeetbdsedeedeeebe
CBCT [Chữ ký;, QÁ s11 Sx 3# 3 522222 Chữ ký: 5-5 2< se seeerre
Điểm «ÓC 9 Ọ 9 4 9 4 ĐH HỌC 9 4 c9 4 9 0 6 0 09 6000 4008.06.09 0 60.0 6000 6.0009 — hd th Đo 9 in oi oi CD CĐ 9 CĐ ho CĐ ĐC Đ 0 0 0 00 600 60 0 6 0 6 0.0 6 006 Băng chữ: .- Bằng CHÑ: co Qo Q1 s.ee
Nhận xét
Điễm quá trình — Điểm hệ 10
Họ tên CBCT:
Điểm tổng kết: (Bằng chữ:
Trang 5MUC LUC
I.GI: ỚTHI Ê VÊÊ INPUT VALIDATION à 5 5c S2 2112 10 12.1111 1x ng 111 111g nu ng
I PH UG@IG PHAP TAAN CÔNG THÔNG QUA INPUT VALIDATION cc chui
1 XML external entity - XX nh nh Hà HH HH KH TH HT KH xikrt 6
ha c9 8 6
CÔ EI Ồ äA ằố 6
Rs Fa 20 90 7
I0 ro ƑÈẰ 7 1.5 Các loại tân công XXE HH HH HH KHE KHE KH KT KĐT KHE ĐH KH Et 7
nh 7
2 Cross Site Scripting— XSS nh Hà Hà Hà Hà HH Ho HH KH HH HH 8
PP con na 4 8 2.2 Tần công XSS thực hiện như thề nào? - S1 St 212 2 E212 E12181135111115121111111 111111111 Ttrey 8 2.3 Các loại tân công XSS LH HH HH KH KHE KH KH KH KH KHE gà 9
3 Direcfory (raV€TSaÌL nhà Hà HH Hà HH HH HH HH KH HT HH HH HH HH pH HN 9 chÁc on a1 9 3.2 Phương thỨC tần CÔng - LH Tnhh HH HH HH TH HH HH TH HH HT HH TH HH kg trệt 10 h0 0) n ốố ốốằằằằắằẮ Ầ 10
"Nc oi na 10 L0) 0002 (0020 0.9) 0| sïlới:iiaiadđaiañi4ÁÝÝ 10 4.3 Phương thỨc tân công ¡th nh nh HH HT HH HH HH HH HH TT HH HH TH HH Hiện 10
II PHƯƠNG PHÁP BẢO MẬT DÙNG INPUT VALIDATION :- S 23t rét he ren re 11
Lo ROB OX tn 11 I4 00 auÀÌ ©®." 11
1.2 Ưu điểm và nhược điểm cỦa Regex - ch HH TH HH Hà HH hà ng gan 11
Trang 64, Kiém tra file upload .cccccscccsssssssssessssessssssssessssessusesssscsssessssessusessusesssscsssecsssessssesssecessesessesaveceaveeeess 20 4.1 Input Validation trong trong viéc kiểm tra file UPlOa oo cc cccccccsecssesessesessssessesessssetsseeseeesess 20
' sào nh 21
4.2.1 Giới hạn dung lượng cỦa file đưƯỢc uplOad c2 x22 E2 1xx ren re, 21 4.2.2 Giới hạn loại file được upload lên trang Web: - 2: tt v2 Hv 2221121111 E81 811151 8 re g 22
IV CÁC H_ Á CHÊÂ CỦA INPUT VALIDATION ccc tL t1 TH 1T ng nàng 111 1n gà nh niên 26
V KÊÂT LUẬN 5 L1 112 11021221111 Hà ng nành n1 1H11 ng te 26
Trang 7I GIO] THIEU VE INPUT VALIDATION
Input Validation — Kiểm tra dữ liệu đầu vào được thực hiện nhằm đảm bảo chỉ có những
dữ liệu phù hợp đi vào hệ thống thông tin, tránh những đữ liệu độc hại xâm nhập và gây hại cho
hệ thống thông tin Input Validation nên được thực hiện sớm nhất có thể, nhất là ngay khi một
nguồn dữ liệu bên ngoài đi vào hệ thống thông tin
Tất cả các luồng dữ liệu đến từ các nguồn không dang tin cay (cac website, app ) cd thé
có chứa những mã độc gây hại đến hệ thống thông tin Vì vậy chúng đều phải được kiểm duyệt qua Input Validation
Input Validation không nên được sử dụng làm phương pháp chính trong việc ngặn chan những phương pháp xâm nhập vào hệ thống thông tin như SQL Injection, XSS, XXE Tuy nhiên, nêu được thiết lập cẩn thận, Input Validation có thể giảm thiểu thiệt hại từ các phương pháp tấn công trên
II PHƯƠNG PHAP TAN CONG THONG QUA INPUT VALIDATION
1 XML external entity - XXE
1.1 Giới thiệu
XXE (XML external entity) injection là một lỗ hông đã có từ lâu và hiện tại độ phủ sóng của XML trên các Web Application cũng đã giảm đi đôi chút Dù vậy, đây là một lỗ hồng một khi đã xuất hiện thì đều được đánh giá ở mức độ nghiêm trọng XXE đứng top 4/10 trong top Top 10 Web Application Security Risks cua OWASP
1.2, XML
XML được hiểu đơn giản là ngôn ngữ đánh dau mo rong Day la 1 cong cy duge phat triển để lưu trữ và vận chuyển dữ liệu Nó dùng để cấu trúc, lưu trữ va trong trao đổi đữ liệu giữa các ứng dụng và lưu trữ dữ liệu
Cụ thể hơn, chúng là những file có đuôi (extension) xml , nd giúp đơn giản hóa việc chia sẻ đữ liệu giữa các hệ thống khác nhau, vì thế nên có rất nhiều ngôn ngữ đánh đấu hay các ứng dụng khác dựa trên XML với những myc dich khac nhau (Vi du: RDF, RSS,
Trang 81.3 Entity
Các thực thé là 1 tính nang của định nghĩa loại tải liệu (DTD) được xác định bang cau lệnh ENTITY Các thực thê giúp ta xác định cấu trúc và sử dụng các phím tắt về cú pháp cũng như tham chiếu đến các cú pháp đó trong XML Thực thê có thể ở ngoài hoặc ở trong External entity la 1 thực thê tham chiếu đến nội dung ngoài tài liệu XXE
XXE (XML external entity) hay tấn công thực thê bên ngoài XML là lỗ hồng lợi dụng tính năng phân tích cú pháp của XML dùng để phân tích cú pháp đầu vào XML từ người dùng Từ đó kẻ tắn công có thể truy cập đến các tệp cục bộ, chạy các lệnh, quét các dịch vụ
và các công nội bộ, truy cập mạng nội bộ, từ đó có thể thực hiện 1 cuộc tấn công DOS đến máy chủ đề bị khai thác
1.4 Nguyên nhân
Về bán chất, lỗi XXE phát sinh đo bên trong XML có chứa các tính năng nguy hiểm và XML cho phép sử dụng các công cụ phân tích các tính nang nay
1.5 Các loại tấn công XXE,
® - Khai thác XXE để lấy dữ liệu tap tin
® - Khai thác XXE để thực hiện tan công SSRF
® - Khai thác blind XXE lọc dữ liệu ngoài băng
® - Khai thác blind XXE thông qua các thông báo lỗi
1.6 Hậu quả
Kẻ tấn công có thể lấy được dữ liệu của hệ thống, ngoải ra kẻ tấn công còn có thể truy
cập được tới các ứng dụng và các thiết bị phụ trợ mà ứng dụng này được phép truy cập Trong một số tình huống, kẻ tấn công có thể leo thang một cuộc tấn công XXE để xâm phạm các dữ liệu nhạy cảm của server hoặc cơ sở hạ tầng back-cnd khác, bằng cách tận dụng lễ hổng XXE để thực hiện các cuộc tấn công giả mạo yêu cầu phía máy chủ
Trang 92 Cross Site Scripting — XSS
2.1 Giới thiệu
Cross Site Scripting (XSS) là một trong những tấn công phố biến và đễ bị tấn công nhất mà tất cá các Tester có kinh nghiệm đều biết đến Nó được coi là một trong những tan công 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 Giới thiệu về tấn công XSS Tấn công XSS là một đoạn mã độc, để khái thác một lỗ héng XSS, hacker sẽ chèn mã độc thông qua các đoạn script để thực thi chúng ở phía Client Thông thường, các cuộc tấn công XSS được sử dụng để vượt qua truy cập và mạo danh người dùng
Mục đích chính của cuộc tấn công này 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 Trong hầu hết các trường hợp, cuộc tan cong này đang được sử dụng để ăn cắp cookie của người khác Như chúng ta biết, cookie giúp chúng tôi đă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 Và đây là một trong những lý do, tại sao cuộc tấn công này được coi là một trong những cuộc tấn công nguy hiêm nhất
Tấn công XSS được thực hiện ở phía client Nó có thể được thực hiện với các ngôn ngữ lập trinh phía client khác nhau Tuy nhiên, thường xuyên nhất cuộc tân công này được thực
hiện với Javascript va HTML
2.2 Tấn công XSS thực hiện như thế nào?
Tấn công Cross Site Scripting nghĩa là gửi và chèn lệnh và script độc hại, những mã độc này thường được viết với ngôn ngữ lập trình phía client nhu Javascript, HTML, VBScript, Flash Tuy nhién, cach tấn công này thông thường sử dụng Javascript và HTML Cách tan công này có thể được thực hiện theo nhiều cách khác nhau, phụ thuộc vào
loại tấn công XSS, 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ở đữ liệu và được chạy mỗi khi người dùng gọi chức năng thích hợp Nguyên nhân chính của loại tấn công này là xác thực đầu vào đữ 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 seript 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 thị trên trình duyệt của nạn nhận hoặc bat kỳ hình thức giả nào đang được hiển thị cho
người sử dụng Có một số hình thức tấn công XSS có thể xảy ra Bên dưới là những hình thức tấn công chính cua Cross Site Scripting:
® Cross Site Scripting c6 thé xảy ra trên tập lệnh độc hại được thực hiện ở phía client
¢ Trang web hoac form gia mao duge 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)
Trang 10e _ 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 Chúng ta hãy phân tích một ví dụ đơn giản sau đây: Tưởng tượng chúng ta co | trang web với trường search, néu truong search là trường có lỗ hông, khi người dùng nhập bat kỳ
doan script thi né sé được thực thi
thé thay đổi đữ liệu hay thậm chí là chiếm quyền điều khiến server
Kiểm soát hợp lí truy cập nội dung trang web là yếu tố quyết định trong việc điều hành một máy chủ bảo mật Directory traversal là một khai thác HI'TP cho phép tin tặc truy cập đến những chỉ mục bị giới hạn, thực thi lệnh bên ngoài chỉ mục gốc của máy chủ web May chủ web cung cấp hai mức cơ ché bảo mật chính:
¢ Access Control Lists (ACLs)
¢ Root directory
Access Control List duoc su dung trong quá trình xác thực Đây là danh sách quản trị viên máy chủ sử dụng để xác định người dùng hay nhóm nảo đó có thê truy cập, thay đổi hoặc thực thí những file cụ thể trên máy chủ cũng như những quyền truy cập khác Chỉ mục gốc là chỉ mục đặc biệt trên ñle hệ thống máy chủ mà người dùng bị hạn chế trong đó Người dùng không thể truy cập bắt cứ thứ gì trong chỉ mục này
Ví dụ chỉ mục gốc mặc định của IIS trên Windows là C:\netpub\wwwroot và với cài đặt này, người dùng không thẻ truy cập vào C:\Windows nhưng có thê truy cập vào
10
Trang 11C: Mnetpubìwwwroof\news, bat ki chi muc nao khac va file năm dưới chỉ mục gốc (giá thiết rằng người dùng hợp lệ trong ACL) Chỉ mục gốc ngăn người dùng truy cập những
file nhay cam trên máy chủ như emd.exe trên Windows hay passwd trén Linux/UNIX
3.2 Phương thức tắn công
Đẻ thực hiện một cuộc tấn công Directory Traversal, tất cả những gì tin tặc cần là
một trình duyệt web và một sô kiên thức tìm ra nơi chứa file và chỉ mục trên hệ thông
Với một hệ thống tổn tại lỗ hồng Directory traversal, tin tac cé thé lợi dụng nó để tìm
ra chi muc gốc và truy cập một phân của ñle hệ thống Điều này cho phép tin tặc xem những file bị giới hạn hay nguy hiểm hơn là tin tặc có thể thực thi những lệnh mạnh trên máy chủ, dẫn đến xâm hại hoàn toàn hệ thống Tin tặc sẽ thực thị những lệnh giả mạo thành thành viên của trang web Do đó kiểu tấn công hoàn toàn phụ thuộc vào cách thiết đặt người dùng trang web được phép truy cập những gì trong hệ thống
4 SQL Injection
4.1 Giới thiệu
SQL Injection là một kỹ thuật lợi dụng những lỗ hổng về câu truy vấn của các ứng
dụng Được thực hiện bằng cách chèn thêm một đoạn SQL để khai thác đữ liệu từ database
SQL injection có thể cho phép những ké tấn công thực hiện các thao tác như một người
quản trị web, trên cơ sở dữ liệu của ứng dụng
4,2 Sw nguy hiém cia SQL Injection
*® An cap hoặc sao chép dữ liệu của trang web hoặc hệ thống
e Thay đổi dữ liệu nhạy cảm của hệ thống
® - Người dùng có thê đăng nhập vào ứng dụng với tư cách người dùng khác
® - Người dùng có thê xem thông tin cá nhân thuộc về những người dùng khác
® - Người dùng có thê sửa đối cấu trúc của cơ sở đữ liệu
® Người dùng có thể kiểm soát máy chủ cơ sở đữ liệu, thực thi lệnh họ muốn
Trang 12Regex là từ viết tắt của Regular Expression có nghĩa là biểu thức chính quy Đây
là một chuỗi các ký tự đặc biệt được định nghĩa để tạo nên các mẫu (pattern) Chúng được
sử dụng để phân tích cú pháp, sự trùng khớp, tìm kiếm, thay thế trong các chuỗi và đoạn ký
tự
1.2 Ưu điểm và nhược điểm của Regex
Ưu điểm: Vì các biểu thức chính quy có tac dung dé so khớp các dữ liệu đầu vào
chi tiết và cụ thê hơn Bạn có thê có thể kiểm tra, tìm lỗi và xử ly các tiện ích tìm kiếm các chuỗi từ người dùng nhập vào dựa vào những mẫu quy định sẵn Chính vì đó nên ta có thể ràng buộc được những chi tiết các dữ liệu đầu vào nhanh chóng và chính xác
Nhược điểm: Khó nắm bắt được vì nó khá trừu tượng và rắc tối, Regular
expression đòi hỏi bạn phải biết được những cú pháp mà kẻ xấu có thể sử dụng để thực hiện việc tấn công, đồng thời phải thường xuyên cập nhật để tránh bị tắn công
1.3 Triển khai
Ta xét đoạn code PHP sau :
12
Trang 13Sẽ rất nguy hiểm nếu hacker tiêm các lệnh javascript
<script>alert(Hacked')</script> vào đoạn code trên, nó sẽ được thực thi , và hacker sẽ lấy
Trang 14$dataGet = filter_input(INPUT_GET,'s',FILTER SANITIZE SPECIAL CHARS);
$data = preg _replace("/<script.*?>+.*?<\/script>/', ”", $ GET['s']);