



















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