



















Preview text:
  lOMoAR cPSD| 58647650
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG 
Khoa Công nghệ Thông tin 2 
---------------------------------------   
AN TOÀN ỨNG DỤNG WEB VÀ CƠ SỞ DỮ LIỆU  ĐỒ ÁN MÔN HỌC 
Xây dựng website nghe nhạc có sử dụng các biện pháp bảo mật website & cơ sở dữ  liệu   
Giảng viên: ThS Phan Nghĩa Hiệp   
Sinh viên thực hiện: Võ Tiến Đạt – N19DCAT016 
Trần Việt Hoàng – N19DCAT033 
Hoàng Anh Nhàn – N19DCAT056 
Nguyễn Cao Phong – N19DCAT060 
Đoàn Hồng Tiến – N19DCAT072    Lớp: D19CQAT01-N 
TP. HỒ CHÍ MINH - 2022      lOMoAR cPSD| 58647650 2 
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN 
........................................................................................................................................... 
........................................................................................................................................... 
........................................................................................................................................... 
........................................................................................................................................... 
........................................................................................................................................... 
........................................................................................................................................... 
........................................................................................................................................... 
........................................................................................................................................... 
........................................................................................................................................... 
........................................................................................................................................... 
........................................................................................................................................... 
........................................................................................................................................... 
........................................................................................................................................... 
........................................................................................................................................... 
........................................................................................................................................... 
........................................................................................................................................... 
........................................................................................................................................... 
........................................................................................................................................... 
........................................................................................................................................... 
........................................................................................................................................... 
........................................................................................................................................... 
........................................................................................................................................... 
........................................................................................................................................... 
........................................................................................................................................... 
........................................................................................................................................... 
........................................................................................................................................... 
........................................................................................................................................... 
...........................................................................................................................................   
Giảng viên hướng dẫn    
(Ký và ghi rõ họ tên)         LỜI CẢM ƠN 
Đầu tiên, chúng em xin gửi lời cảm ơn chân thành đến trường PTITHCM đã đưa môn An 
toàn ứng dụng web và cơ sở dữ liệu vào trương trình giảng dạy. Bên cạnh đó để thực hiện 
và hoàn thành tốt đồ án này, chúng em cũng nhận được sự giúp đỡ và hướng dẫn rất tận 
tình của các thầy cô thuộc khoa Công Nghệ Thông Tin 2. Các thầy cô thuộc bộ môn chuyên 
ngành đã cung cấp cho chúng em các thông tin, kiến thức vô cùng quý báu và cần thiết 
trong suốt thời gian qua để chúng em có thể thực hiện và hoàn thành đồ án của mình. Đặc 
biệt, chúng em xin gửi lời cảm ơn sâu sắc đến giảng viên bộ môn - Thầy Ths. Phan Nghĩa      lOMoAR cPSD| 58647650 3 
Hiệp - người đã trực tiếp hướng dẫn chúng em trong suốt thời gian học tập và thực hiện đồ  án vừa qua. 
 Trong thời gian tham gia lớp học An toàn ứng dụng web và cơ sở dữ liệu của thầy, chúng 
em đã có thêm cho mình nhiều kiến thức bổ ích, tinh thần học tập hiệu quả, nghiêm túc. 
Đây chắc chắn sẽ là những kiến thức quý báu, là hành trang để chúng em có thể vững bước 
sau này. Bộ môn An toàn ứng dụng web và cơ sở dữ liệu là môn học thú vị, vô cùng bổ ích 
và có tính thực tế cao. Đảm bảo cung cấp đủ kiến thức, gắn liền với nhu cầu thực tiễn của  sinh viên. 
 Tuy nhiên, do vốn kiến thức còn nhiều hạn chế và khả năng tiếp thu thực tế còn nhiều 
bỡ ngỡ. Mặc dù chúng em đã cố gắng hết sức nhưng chắc chắn bài báo cáo khó có thể tránh 
khỏi những thiếu sót và nhiều chỗ còn chưa chính xác. Kính mong thầy thông cảm, xem 
xét và góp ý để bài báo cáo của chúng em được hoàn thiện hơn.     
Chúng em xin chân thành cảm ơn!  MỤC LỤC 
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN........................................................2 
LỜI CẢM ƠN................................................................................................................3 
MỤC LỤC.....................................................................................................................4 
DANH MỤC HÌNH ẢNH.............................................................................................6 
LỜI GIỚI THIỆU..........................................................................................................7 
CHƯƠNG 1. BẢO MẬT ỨNG DỤNG VÀ MÁY CHỦ WEB.....................................8   1.1 
XSS..................................................................................................................8   1.2 
CSRF..............................................................................................................12   1.3 
SQL Injection.................................................................................................13   1.4 
Tấn công các cơ chế xác thực.........................................................................19   1.5 
Các lỗ hổng trong cấu hình máy chủ web.......................................................20 
CHƯƠNG 2. BẢO MẬT CƠ SỞ DỮ LIỆU...............................................................23   2.1 
Mật khẩu yếu hoặc mặc định..........................................................................23   2.2 
SQL Injection.................................................................................................24   2.3 
Đặc quyền quá mức cho người dùng hoặc nhóm người dùng.........................25   2.4 
Cho phép các tính năng không sử dụng trong DBMS.....................................26   2.5 
Leo thang đặc quyền (Privilege Escalation)...................................................26   2.6 
Denial of Service............................................................................................27   2.7 
Không mã hóa dữ liệu....................................................................................28 
CHƯƠNG 3. THỰC NGHIỆM...................................................................................30   3.1 
XSS................................................................................................................30      lOMoAR cPSD| 58647650 4   3.2 
CSRF..............................................................................................................32   3.3 
SQL Injection.................................................................................................33   3.4 
Tấn công các cơ chế xác thực.........................................................................34   3.5 
Các lỗ hổng trong cấu hình máy chủ web.......................................................34   3.6 
Mật khẩu yếu hoặc mặc định..........................................................................34   3.7 
Đặc quyền quá mức cho người dùng hoặc nhóm người dùng.........................34   3.8 
Cho phép các tính năng không sử dụng trong DBMS.....................................35   3.9 
Leo thang đặc quyền.......................................................................................35   3.10 
Denial of Service............................................................................................35   3.11 
Không mã hóa dữ liệu....................................................................................35 
CHƯƠNG 4. TỔNG KẾT...........................................................................................36 
TÀI LIỆU THAM KHẢO...........................................................................................37 
BẢNG PHÂN CÔNG CÔNG VIỆC...........................................................................38        lOMoAR cPSD| 58647650 5  DANH MỤC HÌNH ẢNH 
Hình 1.1: Chèn script vào thanh search ........................................................................... 8 
Hình 1.2: Chèn script độc hại ở các ô input .................................................................... 9 
Hình 1.3: Script độc hại được render ra giao diện người dùng ....................................... 9 
Hình 1.4: Script code trong source code ......................................................................... 9 
Hình 1.5: Form search ..................................................................................................... 9 
Hình 1.6: URL form search ............................................................................................. 9 
Hình 1.7: Lấy giá trị của query search .......................................................................... 10 
Hình 1.8: Alert xuất hiện ............................................................................................... 10 
Hình 1.9: Đoạn code sử dụng method POST ................................................................ 11 
Hình 1.10: Form code dùng để tiến hành tấn công CSRF............................................. 11 
Hình 1.11: Tham số truyền vào của form ...................................................................... 12 
Hình 1.12: Mục favourite của user ................................................................................ 13 
Hình 1.13: Query get tất cả album với mode = public .................................................. 13 
Hình 1.14: Form đăng nhập ........................................................................................... 13 
Hình 1.15: Sử dụng tool BurpSuite (Repeater) ............................................................. 14 
Hình 1.16: Tab Repeater ................................................................................................ 15 
Hình 1.17: Tab Intruder ................................................................................................. 15 
Hình 1.18: Ký tự khi chạy brute force ........................................................................... 16 
Hình 1.19: Chế độ Sniper .............................................................................................. 16 
Hình 1.20: Tab Payloads ................................................................................................ 16 
Hình 1.21: Kết quả brute force ...................................................................................... 17 
Hình 1.22: Tài khoản ngầm định trên một số máy chủ web ......................................... 19 
Hình 1.23: Trang phpinfo.php dùng cho quản trị cho phép đọc thông tin cấu hình ..... 20 
Hình 1.24: Nội dung một thư mục của website được liệt kê ......................................... 20 
Hình 2.1: Máy tấn công quét các máy có trong mạng LAN ......................................... 22 
Hình 2.2 Kẻ tấn công dò ra được port của MySQL ...................................................... 22 
Hình 2.3: Kẻ tấn công tìm ra được user và password ................................................... 22 
Hình 3.1: File tag_black_list ......................................................................................... 28 
Hình 3.2: File attributes_black_list ............................................................................... 28 
Hình 3.3: Kết quả từ tìm kiếm trong ô Search hiện ra .................................................. 29 
Hình 3.4: HTML thymeleaf “th:text” mặc định value đó luôn là text .......................... 29 
Hình 3.5: Source HTML ............................................................................................... 29 
Hình 3.6: Cấu hình để ngăn chặn XSS .......................................................................... 29 
Hình 3.7: Form code của tin tặc dùng để tiến hành tấn công CSRF ............................. 30 
Hình 3.8: Người dùng mở form từ link của hacker và truyền tham số ......................... 30 
Hình 3.9: Kết quả website từ chối request truyền tham số từ link bên ngoài ............... 30 
Hình 3.10: Xác thực session đến từ chính máy của client ............................................ 30    LỜI GIỚI THIỆU 
Trong thời đại ngày nay, Internet đã trở nên quen thuộc và là một công cụ hữu ích phục vụ 
các hoạt động, nhu cầu sống của tất cả mọi người, đặc biệt là nhu cầu giải trí mà trong đó 
nghe nhạc chiếm một phần không nhỏ. Nắm bắt được nhu cầu này, nhóm đã lên ý tưởng và      lOMoAR cPSD| 58647650 6 
đưa ra kế hoạch thực hiện xây dựng một trang web nghe nhạc. Trong quá trình phát triển 
ứng dụng web nghe nhạc, nhóm đã nhận thấy những vấn đề nguy hiểm đe dọa đến cơ sở 
dữ liệu cũng như ứng dụng web nghe nhạc. Điều này đã đặt ra vấn đề cấp thiết cần làm như 
thế nào để bảo đảm an toàn thông tin cho ứng dụng web và thông tin người sử dụng. Đồ án 
này được thực hiện nhằm mục đích giới thiệu rõ hơn về những mối nguy đến ứng dụng 
web, máy chủ web và cơ sở dữ liệu, từ đó đưa ra cách phòng chống cũng như các phương 
thức bảo mật cho ứng dụng web nghe nhạc. 
Nội dung của đồ án môn học này được biên soạn thành 3 phần ứng với 3 chương. Phần I – 
Bảo mật ứng dụng và máy chủ web, Phần II – Bảo mật cơ sở dữ liệu và Phần III – Thực 
nghiệm trên ứng dụng web nghe nhạc. Nội dung tóm tắt các chương như sau: 
Chương 1 – Bảo mật ứng dụng và máy chủ web giới thiệu khái quát về một số dạng tấn 
công lên ứng dụng và máy chủ web mà nhóm đã lên kịch bản tấn công và đưa ra được cách 
phòng chống như: tấn công XSS, tấn công CSRF, SQL Injection, tấn công các cơ chế xác 
thực và các lỗ hổng trong cấu hình máy chủ web. 
Chương 2 – Bảo mật cơ sở dữ liệu khái quát các mối nguy hại tới cơ sở dữ liệu như: mật 
khẩu yếu hoặc mặc định, SQL Injection, đặc quyền quá mức cho người dùng hoặc nhóm 
người dùng, cho phép các tính năng không sử dụng trong DBMS, leo thang đặc quyền, tấn 
công từ chối dịch vụ (denial of service) và không mã hóa dữ liệu. Bên cạnh đó chương cũng 
đề cập tới các kịch bản tấn công và phương pháp phòng chống những nguy cơ trên. 
Chương 3 – Thực nghiệm trình bày về mô hình triển khai ứng dụng web nghe nhạc và các 
kết quả thành công trong việc ngăn chặn những yếu tố nguy hại đã kể ở trên. 
Bài báo cáo được biên soạn dựa trên những kiến thức được học từ môn An toàn Ứng dụng 
Web và cơ sở dữ liệu và một số môn học liên quan trong suốt quá trình học tập của nhóm 
tác giả tại Học viện Công nghệ Bưu chính Viễn thông. Trong quá trình biên soạn và triển 
khai mô hình, mặc dù nhóm tác giả đã rất cố gắng song không thể tránh khỏi những thiếu 
sót. Nhóm mong rằng sẽ nhận được ý kiến phản hồi và góp ý, cũng như ý kiến về cập nhật,  hoàn thiện đồ án.   
1 CHƯƠNG 1. BẢO MẬT ỨNG DỤNG VÀ MÁY CHỦ WEB  1.1 XSS    1.1.1.  Khái quát 
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 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. 
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      lOMoAR cPSD| 58647650 7 
chỉ email) và mã (cú pháp và các phần tử như  • 
Hacked vào các ô input đầu  vào ở ô tìm kiếm.   
Hình 1.1: Chèn script vào thanh search 
Trong trường hợp này phía server không có một sự kiểm tra nào cho giá trị 
đầu vào này mà chèn ngay lập tức vào response thì đây là điều kiện cho các 
attackers khai thác lỗ hổng Reflected XSS. 
Stored cross-site scripting: 
Ứng dụng có chức năng thêm mới bài hát. 
Ta tiến hành Thêm thông tin bài hát. tuy nhiên ở đây ta cố tình chèn vào các 
đoạn script độc hại, script này sẽ được lưu trực tiếp xuống Database. Và tất nhiên là 
nội dung này sẽ được render ra ở một giao diện nào đó. Đến khi ai đó có một tác 
động (click) vào nội dung đó thì lập tức script sẽ được thực thi.        lOMoAR cPSD| 58647650 9 
Hình 1.2: Chèn script độc hại ở các ô input   
Hình 1.3: Script độc hại được render ra giao diện người dùng 
DOM-based cross-site scripting: 
Chức năng tìm kiếm của ứng dụng 
Ta nhấn tổ hợp phím Ctrl+U: phát hiện có một đoạn script nhỏ bên dưới.   
Hình 1.4: Script code trong source code    Hình 1.5: Form search 
Ta thấy form search với method là GET, do đó người dùng submit search thì 
value sẽ hiện trên URL như sau:    Hình 1.6: URL form search 
URLSearchParams là một Object, object này định nghĩa các methods để làm 
có thể xử lý với query string trên URL. Cụ thể như sau:      lOMoAR cPSD| 58647650 10   
Hình 1.7: Lấy giá trị của query search 
Sau khi get ra được giá trị từ ô search, ta thử thêm một malicious code để khai  thác XSS (DOM based).        
Hình 1.8: Alert xuất hiện 
Ứng dụng đã bị lỗi hổng XSS (DOM based), Từ đó Attackers có thể tiếp tục 
khai thác và lấy ra các thông tin quan trọng như cookie của người dùng…vv    1.1.3.  Phòng chống 
Sử dụng một blacklist các tags và attributes không được phép nhập vào. Khi 
mà đầu vào của người dùng chứa các ký tự nằm trong blacklist được khai báo như 
trên sẽ bị từ đối request và trả về một message lỗi. 
Tuy nhiên, việc khai báo ra các tags, attributes này là thủ công và ta không 
thể lường trước được các trường hợp. Attacker có thể brute force để tìm ra các tags 
cũng như attributes có thể nhập mã độc vào thì hắn có thể khai thác được Reflected  XSS. 
Sử dụng các framework và các thư viện có sẵn sẽ đặt hiệu quả cao hơn.  1.2 CSRF    1.2.1.  Khái quát 
CSRF (Cross-Site Request Forgery) là dạng tấn công bẫy nạn nhân tải một 
trang web có chứa yêu cầu độc hại. Tấn công CSRF sử dụng thông tin nhận dạng và 
quyền truy nhập của nạn nhân để thực hiện các thao tác không mong muốn thay mặt 
họ, như thay đổi địa chỉ email, thay đổi địa chỉ nhà, thực hiện giao dịch mua bán, ... 
CSRF hoạt động bằng cách gửi các yêu cầu độc hại đến cho người dùng nạn 
nhân nhằm đánh cắp các thông tin cá nhân, quyền truy cập và dữ liệu nhạy cảm. Hầu 
hết các trang web không thể xác định các yêu cầu là giả mạo hay thực khi có người 
dùng đang được xác thực. 
CSRF tấn công trực tiếp vào các trạng thái trên máy chủ như thay đổi địa chỉ 
IP hoặc mật khẩu của nạn nhân. Đầu tiên, kẻ tấn công sẽ yêu cầu nạn nhân đăng nhập      lOMoAR cPSD| 58647650 11 
vào tài khoản mà chúng đang kiểm soát để bổ sung các thông tin như thẻ tín dụng, 
tài khoản ngân hàng hay địa chỉ nhà. Sau đó, chúng sẽ tiến hành lấy các dữ liệu cá 
nhân vừa thu thập được để đăng nhập tài khoản trên ứng dụng web. 
Lỗ hổng lưu trữ CSRF là các cuộc tấn công có sẵn trên các trang web bảo mật 
kém được thực hiện bằng thẻ IMG/IFRAME trong môi trường HTML. Bởi vì CSRF 
được lưu trữ trên trang web nên nó có thể đem đến nhiều mối nguy hại như các cuộc 
tấn công sẽ được kích hoạt và mở rộng bất cứ lúc nào. 
CSRF còn được gọi bằng một số tên khác như XSRF, Sea Surf, Session 
Riding, Cross-Site Reference Forgery và Hostile Linking. Microsoft coi CSRF là 
một cuộc tấn công nhấp chuột có thể đe dọa đến nhiều tài liệu quan trọng.    1.2.2.  Kịch bản tấn công 
Giả thiết trang web tồn tại lỗi cho phép tấn công CSRF: 
Đoạn code này sử dụng để ghi tên bài hát và tên ca sĩ vào cơ sở dữ liệu 
Gồm có hai tham số truyền vào có “name” lần lượt là “album_name”,  “singer_name”   
Hình 1.9: Đoạn code sử dụng method POST 
Đoạn code method post có thể dẫn đến CSRF   
Hình 1.10: Form code dùng để tiến hành tấn công CSRF 
Kẻ tấn công tạo ra một đường link giả mạo có chức năng nhập name album 
và name singer nhằm thay đổi giá trị 2 biến album_name và singer_name của  website trong hình 1.9        lOMoAR cPSD| 58647650 12 
Hình 1.11: Tham số truyền vào của form 
Khi request này được gửi lên cùng tham số đó sẽ lưu lại vào cơ sở dữ liệu của  website.    1.2.3.  Phòng chống 
- Nâng cao ý thức bảo mật của user, không ấn vào các đường link lạ. 
- Sử dụng các framework, thư viện chuẩn có phòng chống CSRF 
- Với mỗi request gửi lên đều được kiểm tra session có phải từ chính máy client  gửi hay không  1.3 SQL Injection    1.3.1.  Khái quát 
Tấn công chèn mã SQL (SQL Injection) là một kỹ thuật cho phép kẻ tấn công 
chèn mã SQL vào dữ liệu gửi đến máy chủ và cuối cùng được thực hiện trên máy 
chủ cơ sở dữ liệu. Tùy vào mức độ tinh vi, tấn công chèn mã SQL có thể cho phép 
kẻ tấn công (1) vượt qua các khâu xác thực người dùng, (2) chèn, sửa đổi, hoặc xóa 
dữ liệu, (3) đánh cắp các thông tin trong cơ sở dữ liệu và (4) chiếm quyền điều khiển 
hệ thống máy chủ cơ sở dữ liệu. Tấn công chèn mã SQL là dạng tấn công thường 
gặp ở các ứng dụng web, các trang web có kết nối đến cơ sở dữ liệu. 
Có 2 nguyên nhân của lỗ hổng trong ứng dụng cho phép thực hiện tấn công  chèn mã SQL: 
- Dữ liệu đầu vào từ người dùng hoặc từ các nguồn khác không đượckiểm tra 
hoặc kiểm tra không kỹ lưỡng; 
- Sử dụng các câu lệnh SQL động trong ứng dụng, trong đó có thao tácnối dữ 
liệu người dùng với mã lệnh SQL gốc.    1.3.2.  Kịch bản tấn công 
Có rất nhiều kĩ thuật để thực hiện tấn công SQL injection và trong các tình 
huống khác nhau thì các kĩ thuật này có thể thay đổi: 
- Retrieving hidden data: can thiệp vào query tới database để lấy thêm dữ liệu  ẩn 
- Bypass login: sử dụng SQL injection để qua mặt cơ chế authentication. 
- SQL injection union attack: sử dụng union trong sql để lấy dữ liệu ở table  khác. 
- Examining the database: Lấy dữ liệu về version của database. 
- Blind SQL injection: Dữ liệu từ SQL query không được trả về theo ứng dụng 
web. Đây là một kĩ thuật khó hơn và phức tạp hơn nhiều để thực hiện so với  4 kỹ thuật trên. 
Retrieving hidden data: 
Giả sử trên ứng dụng có chức năng show toàn bộ albums, playlists, sound ở trang  home        lOMoAR cPSD| 58647650 13 
Hình 1.12: Mục favourite của user 
Với một điều kiện toàn bộ album, playlist, sound với một trường mode=public. Vì 
mặc định sẽ không được hiển thị những album, playlist, sound ở mode=private.  Query như sau:   
Hình 1.13: Query get tất cả album với mode = public  Gửi query lên server:   
Như đã biết “--” là bắt đầu cho comment trong SQL, do đó toàn bộ phần 
mode=’public’ sẽ xem như bị bỏ đi trong SQL query này. Mà “1=1” là điều kiện 
luôn luôn đúng, do đó câu query này liệt kê toàn bộ giá trị có trong bảng. Như vậy 
attacker đã có thể lấy được tất cả dữ liệu kể cả mode=’private’.  Bypass login:   
Hình 1.14: Form đăng nhập 
Khi mà người dùng nhập username và password sau đó bấm Login thì ngay lập tức 
một SQL query được thực hiện:   
Thay đổi giá trị username hoặc password bằng cách thêm “--”, là comment syntax  trong SQL:   
Như vậy and password=’password’ đã bị biến thành comment và bị bỏ đi khi thực  hiện query. 
SQL injection union attack 
Mệnh đề UNION trong SQL dùng để kết hợp các kết quả của hai hay nhiều câu 
lệnh SELECT lại với nhau mà không trả về bất kỳ hàng nào trùng. Attacker có thể 
lợi dụng tính năng của UNION để thực hiện kết hợp các câu lệnh SELECT trên 
nhiều bảng lại với nhau, từ đó trả về cho attacker nhiều thông tin cần thiết hơn.      lOMoAR cPSD| 58647650 14   
Để sử dụng mệnh đề UNION, mỗi câu lệnh SELECT phải thỏa:  • 
Cùng số cột được chọn  •  Cùng kiểu dữ liệu 
Như vậy, một điều tối quan trọng để có thể thực hiện được mệnh đề UNION đó là 
các câu lệnh SELECT phải trả về các bảng có cùng số cột. Như vậy ta cần phải xác 
định SQL query của web application thực hiện sẽ trả về bao nhiêu cột để áp dụng 
mệnh đề UNION vào sao cho phù hợp. Để có thể đạt được mục đích này, ta có thể  sử dụng ORDER   
Ta lần lượt thay đổi để truy xuất ra số lượng cột trong Table   
Thay đổi cho đến khi server hết báo lỗi thì dừng lại. và đó chính là số cột mà Table  hiện có. 
Ta sử dụng tool BurpSuite (Repeater):   
Hình 1.15: Sử dụng tool BurpSuite (Repeater)  Blind SQL injection:       lOMoAR cPSD| 58647650 15 
Blind SQL injection được sử dụng khi mà ứng dụng web không có bất cứ phản hồi 
(error, message) được gửi về sau một lần request. 
Do đó toàn bộ những cách tấn công, các kĩ thuật sử dụng UNION như đã trình bày 
ở trên dường như không có tác dụng. 
Ở chức năng login của ứng dụng. Ta tiến hành sử dụng query như sau: Note: 
Thông thường ở những trang web thông account admin thường sẽ có 
username là: admin,administrator,root… Ta tiến hành thử một vài trường hợp:  Query truy vấn:      Hình 1.16: Tab Repeater 
Để tiến hành brute force ta tiến hành đẩy package đến tab Intruder (Ở mục ta ta có 
thể tự tay config các value để tiến hành brute force)    Hình 1.17: Tab Intruder 
Ở đây ta nhận thấy các value của package đều nằm trong ký tự $. Đây là ký tự khi 
chạy brute force thì các giá trị này sẽ được thay đổi và chèn vào các giá trị từ file 
(chứa list key, giá trị) để brute force.      lOMoAR cPSD| 58647650 16   
Hình 1.18: Ký tự khi chạy brute force 
Ở trường hợp này ta muốn tìm ra độ dài password, chỉ cần đặc bộ tải trọng bọc số 
6. Chế độ brute force là Sniper (vì chỉ có 1 trọng tải cần brute force) Ngoài ra:   
Hình 1.19: Chế độ Sniper  Chuyển sang tab payload:    Hình 1.20: Tab Payloads 
Ở mục Payload Options: Chính là danh sách các giá trị sẽ được chèn vào bộ trọng 
tải (ở số 6 lúc nãy). Nhấn Start attack      lOMoAR cPSD| 58647650 17   
Hình 1.21: Kết quả brute force 
Đây là quá trình brute force. Sau khi brute force nếu nhận thấy một package nào 
khác hoặc bất thường so với các gọi tin còn lại chẳng hạn (length, status…). Có thể 
đó chính là giá trị mà chúng ta cần tìm 
Trong trường hợp này nếu như server trả về một dòng lỗi (500 Internal Server 
Error) ở Response. Attacker biết rằng query trên là hợp lệ và có thể dựa vào 
Condition Error này để khai thác tiếp tục và tìm được độ dài của password. Tiếp 
tục là tìm ra lần lượt các ký tự của password. Query truy vấn:   
Attacker có thể sử dụng hàm substring và công cụ BurpSuite (Intruder) có thể tìm 
lần lượt các ký tự của password.    1.3.3.  Phòng chống 
- Mã hóa (filter) các ký tự đầu vào có thể gây lỗi SQL Injection 
- Sử dụng các framework, thư viện chuẩn phòng chống SQL Injection 
1.4 Tấn công các cơ chế xác thực    1.4.1.  Khái quát 
Xác thực (authentication) trong một mức độ nào đó nhằm xác minh thông tin 
nhận dạng của một cá nhân hoặc một thực thể. Trao quyền (authorization) xác định 
các quyền truy nhập vào các đối tượng, tài nguyên mà người dùng được cấp, sau khi 
người dùng đã được xác thực. Tấn công vào các cơ chế xác thực (Authentication 
attacks) là các loại tấn công vào khâu xác thực thông tin định danh người dùng (User 
authentication) và trao quyền cho người dùng (User authorization). Để phá được cơ 
chế xác thực ứng dụng web, kẻ tấn công có 2 lựa chọn: (1) Đánh cắp mật khẩu tài      lOMoAR cPSD| 58647650 18 
khoản người dùng và (2) Bỏ qua khâu xác thực người dùng. Cả 2 lựa chọn trên đều 
được các tin tặc sử dụng trong từng điều kiện khác nhau trên các hệ thống khác nhau. 
Các dạng tấn công vào các cơ chế xác thực bao gồm các dạng sau: phát lại 
chuỗi định danh phiên, vét cạn, nghe lén, khởi tạo lại mật khẩu và XSS / SQL  Injection.    1.4.2.  Kịch bản tấn công 
Phát lại chuỗi định danh phiên: Giao thức HTTP không hỗ trợ phiên (session) 
làm việc. Tuy nhiên, đa số các máy chủ hỗ trợ phiên làm việc bằng việc sử dụng 
cookie để nhận dạng người dùng. Cookie là một mẩu thông tin mà máy chủ web lưu 
lên trình duyệt. Theo đó, cookie có thể lưu thông tin về phiên như chuỗi định danh 
(ID) của phiên và các thông tin xác thực người dùng. Các phiên làm việc có thể được 
xác thực bằng 1 tên người dùng (username) và một mật khẩu (password). Kẻ tấn 
công có thể đánh cắp thông tin xác thực và giả danh người dùng để đăng nhập vào  hệ thống. 
Vét cạn: Tấn công vét cạn (Brute force) sử dụng kiểu quét, hoặc thử tất cả các 
trường hợp để tìm tên người dùng và mật khẩu. Kẻ tấn công có thể dựa vào các tín 
hiệu phản hồi, hoặc báo lỗi của hệ thống để nhận biết dấu hiệu thành công hoặc thất 
bại trong vét cạn tìm mật khẩu. Chẳng hạn, nếu báo lỗi là "Invalid username and 
password" có nghĩa là username và password đều sai, nếu báo lỗi là "Invalid 
password" thì chỉ password sai, còn username đã đúng. Kẻ tấn công cũng có thể dựa 
vào thời gian xử lý để nhận biết: Nếu không tìm thấy username có nghĩa là thời gian 
tìm kiếm thường dài hơn do phải quét hết 50 danh sách. Ngược lại, nếu tìm thấy 
username thì thời gian tìm kiếm thường ngắn hơn do không phải quét hết danh sách  người dùng. 
Nghe lén: Nghe lén (Sniffing) là việc chặn bắt lưu lượng mạng truyền qua 
card mạng hoặc các thiết bị mạng như router hoặc switch để phân tích lấy thông tin 
nhạy cảm. Các mạng WLAN dễ bị nghe lén hơn do môi trường truyền tín hiệu qua 
không khí. Lưu lượng HTTP có thể dễ dàng bị nghe lén do không được mã hóa. Một 
số công cụ, thư viện nghe lén điển hình, gồm: Tcpdump, Wireshark, Pcap/Wincap  và Firesheep plugin. 
Khởi tạo lại mật khẩu: Khởi tạo lại mật khẩu (Password resetting) là kỹ thuật 
khai thác điểm yếu trong tính năng khởi tạo lại mật khẩu cho người dùng hỗ trợ bởi 
nhiều website. Một website có thể 51 gửi mật khẩu ở dạng rõ cho người dùng qua 
email, hoặc cung cấp một cơ chế xác thực bằng các câu hỏi an ninh và thông tin cá 
nhân. Website cũng có thể gửi 1 liên kết (link) vào hộp thư của người dùng cho phép 
người dùng khởi tạo lại mật khẩu. Kẻ tấn công có thể nghe lén để đánh cắp các thông 
tin xác thực phụ, hoặc mật khẩu nếu được gửi dưới dạng rõ. Hắn cũng có thể nghe 
lén để đánh cắp link cho phép khởi tạo lại mật khẩu và thực hiện đổi mật khẩu của  người dùng. 
XSS / SQL Injection: Kẻ tấn công có thể sử dụng tấn công XSS để đánh cắp 
thông tin phiên làm việc, cookie chứa thông tin xác thực người dùng trên các website 
có tồn tại lỗi cho phép tấn công XSS. Tương tự, nếu website tồn tại lỗi chèn mã SQL,      lOMoAR cPSD| 58647650 19 
kẻ tấn công cũng có thể sử dụng các kỹ thuật tấn công chèn mã SQL để đăng nhập 
vào hệ thống không cần mật khẩu, hoặc thậm chí đăng nhập mà không cần tên truy  nhập và mật khẩu.    1.4.3.  Phòng chống  - 
Sử dụng và lưu trữ mật khẩu dưới dạng mã hóa.  - 
Tạo mật khẩu có độ bảo mật cao, có các ký tự đặc biệt.  - 
Áp dụng các cách phòng chống các dạng tấn công khác như XSS, 
SQLInjection, brute force, … 
1.5 Các lỗ hổng trong cấu hình máy chủ web    1.5.1.  Khái quát 
Cấu hình máy chủ web thiết lập các tùy chọn cho phép điều khiển hoạt động 
của máy chủ web, theo đó có ảnh hưởng đến tất cả các website chạy trên máy 
chủ đó. Các điểm yếu, lỗ hổng trong cấu hình máy chủ web bao gồm: các tài 
khoản quản trị ngầm định, các nội dung ngầm định, liệt kê nội dung thư mục 
và các phương thức nguy hiểm. 
Các tài khoản quản trị ngầm định 
Hầu hết máy chủ web đều có các tài khoản quản trị ngầm định với mật khẩu 
yếu hoặc thậm chí không có mật khẩu, đặc biệt là với các phiên bản cũ của 
máy chủ web và hệ điều hành nền.   
Hình 1.22: Tài khoản ngầm định trên một số máy chủ web 
Các nội dung ngầm định 
Nhiều phần máy chủ web được xuất xưởng kèm theo các nội dung ngầm định, 
có thể là "đòn bẩy" giúp tin tặc tấn công máy chủ và các ứng dụng web. Một 
số nội dung ngầm định có thể gây rủi ro cho hệ thống:  - 
Các tính năng gỡ rối và kiểm thử cho người quản trị.  - 
Các tính năng mẫu được thiết kế cho các công việc dùng chung.  - 
Một số tính năng đặc biệt được thiết kế dùng trong nội bộ, nhưng lại 
vôtình để người ngoài có thể truy nhập.      lOMoAR cPSD| 58647650 20  - 
Tài liệu hướng dẫn sử dụng, hoặc quản trị máy chủ web có thể là 
côngcụ hỗ trợ đắc lực cho tin tặc.   
Hình 1.23: Trang phpinfo.php dùng cho quản trị cho phép đọc thông tin cấu  hình 
Liệt kê nội dung thư mục   
Hình 1.24: Nội dung một thư mục của website được liệt kê 
Khi máy chủ web nhận được yêu cầu truy nhập là 1 thư mục, các hành động 
sau có thể được thực hiện: 
- Nếu trong thư mục tồn tại trang ngầm định (index.html, 
default.htm, ...), trang ngầm định được gửi cho trình duyệt; 
- Nếu trong thư mục không tồn tại trang ngầm định, máy chủ web có thể: + 
Trả về thông báo lỗi mã 403 (cấm truy nhập) nếu không cho phép liệt kê  thư mục; 
+ Trả về danh sách các file trong thư mục nếu cho phép liệt kê thư mục