1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo môn học an toàn Ứng dụng web và csdl bài thực hành 2 ldap , web brokenaccess, web sde , db access

30 1 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề An toàn ứng dụng web và CSDL Bài Thực Hành 2: Ldap , web-brokenaccess, web-sde , db-access
Tác giả Vũ Tuấn Hùng
Người hướng dẫn Giảng viên Vũ Minh Mạnh
Trường học Học viện Công nghệ Bưu chính Viễn thông
Chuyên ngành An toàn thông tin
Thể loại Báo cáo môn học
Thành phố Hà Nội
Định dạng
Số trang 30
Dung lượng 7,03 MB

Nội dung

Xác thực người dùng máy chủ Linux bằng dịch vụ LDAPldap Mục đích Bài thực hành này minh họa việc sử dụng LDAP để xác thực người dùng trên hệ thốngLinux, sao cho nhiều máy tính chia sẻ mộ

Trang 1

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

KHOA AN TOÀN THÔNG TIN

BÁO CÁO MÔN HỌC: An toàn ứng dụng web và CSDL

Bài Thực Hành 2:

Ldap , web-brokenaccess, web-sde , db-access

Giảng viên: Vũ Minh Mạnh Sinh viên: Vũ Tuấn Hùng

Mã sinh viên: B21DCAT097

Hà Nội

Trang 2

Xác thực người dùng máy chủ Linux bằng dịch vụ LDAP

(ldap)

Mục đích

Bài thực hành này minh họa việc sử dụng LDAP để xác thực người dùng trên hệ thốngLinux, sao cho nhiều máy tính chia sẻ một kho thông tin người dùng và nhóm duynhất, bao gồm cả mật khẩu xác thực người dùng Chiến lược này cho phép người dùng

và quản trị viên quản lý một tập hợp thông tin đăng nhập duy nhất có thể được sửdụng để truy cập vào nhiều máy tính

Yêu cầu đối với sinh viên

Nắm được kiến thức về các kiến thức cơ bản của người dùng, nhóm và xác thực trongLinux, ví dụ như các tệp /etc/passwd và /etc/shadow Ngoài ra, cần có kiến thức cơbản về việc sử dụng Lightweight Directory Access Protocol (LDAP)

Cấu hình mạng (trình bày trong hình topo mạng cho bài lab như dưới đây):

1.1 Cấu hình mạng cho bài lab

Trang 3

Mạng gồm một máy khách (client), hai máy chủ (server1 và server2) và một máy chủ LDAP như được hiển thị trong Hình 1 Khi thực hành, sinh viên có một cửa sổ terminal ảo được kết nối với máy tính khách và một cửa sổ terminal ảo được kết nối với máy chủ LDAP Cũng sẽ có các cửa sổ terminal ảo được kết nối với hai máy chủ Tên máy chủ tuân thủ theo sơ đồ Tệp /etc/hosts cho phép sử dụng các tên máy chủ này thay vì các địa chỉ IP cụ thể.

Hai máy chủ Linux đã được cấu hình để sử dụng máy chủ LDAP để xác thực ngườidùng Máy chủ LDAP đã được cấu hình ban đầu với một người dùng duy nhất có ID

là "mike"

Máy chủ LDAP được cấu hình cho miền "example.com", với một quản trị viên LDAP

có tên "admin" và mật khẩu là "adminpass"

Các nhiệm vụ

Nhiệm vụ 1: Tìm hiểu

Trên máy chủ LDAP, hiển thị nội dung thư mục LDAP bằng cách sử dụng lệnh:

ldapsearch -x | less

và quan sát các mục trong thư mục Lưu ý mục cho "mike" và "projx"

Bắt đầu Wireshark trên thành phần LDAP để có thể quan sát giao thức

wireshark &

Chọn thiết bị eth0 Từ máy tính "client", kết nối SSH đến server1 với người dùng

"mike":

ssh mike@server1

Trang 4

Mật khẩu ban đầu cho "mike" là "password123" Hệ thống sẽ yêu cầu thay đổi mật

khẩu này, sau đó cần kết nối SSH lại vào server1 Thay đổi mật khẩu thành một mật

khẩu bất kỳ Sử dụng SSH một lần nữa để đăng nhập vào server1 với vai trò là mike,

cung cấp mật khẩu mới Sử dụng lệnh id để xem ID người dùng và nhóm của mình.Sau đó, xem tệp /etc/passwd

Nhiệm vụ 2:Xem lưu lượng giao thức

Chuyển đến cửa sổ Wireshark và dừng việc bắt gói tin (ví dụ: nút dừng màu đỏ) Nhập

bộ lọc hiển thị là "ldap" vào ô gần đầu "Áp dụng bộ lọc hiển thị " Xem lại lưu lượngLDAP Các thành phần nào đang trao đổi gói tin? Tìm gói tin đã thay đổi mật khẩu

Trang 5

của mike và sử dụng File / Export Specified Packets để lưu gói tin đó vào tệp có tênpassword.pcapng.

Nhiệm vụ 3: Sử dụng tài khoản mike để truy cập máy chủ còn lại

Thoát khỏi phiên SSH đến server1 bằng cách nhập lệnh "exit" Sau đó, SSH đếnserver2 bằng cách nhập lệnh "ssh mike@server2" Mật khẩu bạn mong đợi sử dụng đểxác thực đến server2 là mật khẩu mới mà bạn đã thay đổi trên server1

Sau khi đăng nhập vào server2, thoát khỏi phiên SSH đó bằng cách nhập lệnh "exit"

Nhiệm vụ 4: Thêm một người dùng LDAP

Trang 6

Chuyển đến cửa sổ terminal ảo LDAP và sử dụng lệnh ls để xem danh sách thư mục.Xem tệp có tên mike.ldif, tệp này được sử dụng để định nghĩa người dùng có tên

"mike" Sau đó, xem tệp projx.ldif Lệnh LDAP được sử dụng để thêm mục đã địnhnghĩa trong tệp mike.ldif là:

ldapadd -x -W -D "cn=admin,dc=example,dc=com" -f mike.ldif

Lưu ý cách tùy chọn -D chỉ định tên quản trị viên thực hiện thêm vào LDAP Sử dụnglệnh `man ldapadd` để tìm hiểu thêm về cú pháp của lệnh này Mật khẩu ban đầu chongười dùng mike được tạo bằng lệnh sau:

ldappasswd -s password123 -W -D "cn=admin,dc=example,dc=com" -x

"uid=mike,ou=users,dc=example,dc=com"

Tạo các tệp ldif để định nghĩa một nhóm mới có tên "qa" và một người dùng mới có

ID là "mary" Gán mary vào nhóm qa Chú ý điều chỉnh các giá trị uidNumber vàgidNumber Sử dụng lệnh ldapadd để thêm nhóm mới và người dùng mới Sử dụnglệnh ldappasswd để gán mật khẩu ban đầu cho mary Một lần nữa, mật khẩu cho quản

trị viên LDAP là "adminpass".

Trang 7

- Thêm nhóm "qa" vào LDAP

ldapadd -x -W -D "cn=admin,dc=example,dc=com" -f qa.ldif

- Thêm người dùng "mary":

ldapadd -x -W -D "cn=admin,dc=example,dc=com" -f mary.ldif

- Đặt mật khẩu cho mary:

ldappasswd -s password123 -W -D "cn=admin,dc=example,dc=com" -x

"uid=mary,ou=users,dc=example,dc=com"

- Kiểm tra kết nối SSH với người dùng "mary"

ssh mary@server1 ssh mary@server2

Sau đó, chuyển đến máy khách và kiểm tra khả năng để SSH với vai trò là mary đến

cả server1 và server2

Nhiệm vụ 5: Mã hóa dữ liệu truyền LDAP

Quay trở lại cửa sổ Wireshark và thiết lập bộ lọc hiển thị gói tin làldap.bindRequest_element Khám phá các thành phần giao thức của một yêu cầu bind

sử dụng Wireshark Có thấy điều gì đáng lo ngại không? Mật khẩu người dùng đượctruyền đi dưới dạng văn bản thuần!

Trang 8

Khởi động lại việc bắt gói tin trong Wireshark, tức là nhấn vào nút hình cá mập bêntrái và xóa bộ lọc.

Máy chủ LDAP có một chứng chỉ PKI tự ký và đã được cấu hình để chấp nhận lưulượng SSL được mã hóa cũng như lưu lượng không được mã hóa mà bạn đã quan sát

Trang 9

Ban đầu, chúng ta không mã hóa lưu lượng để có thể xem giao thức Bây giờ, ta sẽcấu hình các máy khách LDAP (tức là hai máy chủ) để giao tiếp với LDAP thông quaSSL.

Cơ chế để yêu cầu một máy khách LDAP sử dụng SSL (hoặc TLS) khác nhau tùythuộc vào sản phẩm LDAP và phiên bản Linux Đối với các máy chủ Ubuntu này,thực hiện các bước sau:

Chỉnh sửa tệp /etc/ldap.conf và thay đổi dòng sau:

Trang 10

Khám phá điều khiển truy cập bị lỗi

(web-brokenaccess)

1 Mục đích

Bài tập Labtainer này khám phá Kiểm soát truy cập bị hỏng Kiểm soát truy cập bị hỏng xảy ra khi ứng dụng cho phép người dùng thực hiện các hành động trái phép Có nhiều lỗ hổng góp phần gây ra rủi ro này, chẳng hạn như nếu nhà phát triển quên xác thực quyền.

2 Yêu cầu đối với sinh viên:

Nắm được kiến thức cơ bản về hoạt động của ứng dụng web, biết sử dụng OWASP ZAP.

1 Nội dung thực hành

Sinh viên khởi động bài lab bằng câu lệnh:

labtainer web-brokenaccess

(chú ý: sinh viên sử dụng tên tài khoản của mình để nhập thông tin email người thực hiện bài lab khi

có yêu cầu trong terminal, để sử dụng khi chấm điểm Thông thường tên tài khoản của sinh viên chính

Trang 11

● Sử dụng lệnh ping từ máy sinh viên để xác nhận kết nối

ping 192.168.99.100

Task 2: Mở FireFox và truy cập vào webserver

● Tại cửa sổ student gõ lệnh sau

Trang 12

● Ở cửa sổ dòng lệnh trên máy trạm của sinh viên, nhập:

owasp-zap &

Lưu ý: Nếu Firefox đang chạy trên cửa sổ dòng lệnh và không có dấu "&" được baogồm, thì Firefox sẽ không chạy trong nền Đóng Firefox và mở lại bằng cách sử dụng

"Firefox &" trên cửa sổ dòng lệnh

Ứng dụng OWASP ZAP sẽ mở và yêu cầu người dùng nhập thông tin

Nhập vào ứng dụng OWASP ZAP: chọn "yes, I want to persist this session with thename based on the current timestamp" sau đó nhấp vào start Nếu được yêu cầu

"Manage Add-on", hãy nhấp vào close

Task 4: Cấu hình FireFox proxy để sử dụng OWASP ZAP

Mục tiêu của nhiệm vụ này là cài đặt OWASP ZAP để hoạt động và cho phép bắt gói tin từ máy tính sinh viên trên trình duyệt web-xss Trong phần thiết lập của Firefox, cấu hình theo các bước sau đây:

● Trên Firefox của máy tính sinh viên, mở "Preferences"

● Trong cửa sổ tìm kiếm, gõ "proxy"

● Trong Cài đặt proxy mạng, chọn "Cài đặt"

● Chọn "Cấu hình proxy thủ công"

● Trong phần Proxy HTTP: sử dụng "127.0.0.1" và Cổng "8080"

● Cũng chọn "Sử dụng máy chủ proxy này cho tất cả các giao thức"

● Nhấp vào "ok" để chấp nhận các cài đặt

Cài đặt trên đảm bảo Firefox sử dụng OWASP Zap làm proxy Thực hiện các bước sau để đảm bảo Firefox đang kết nối và sử dụng ZAP như là proxy:

● Làm mới trang web "192.168.99.100:3000"

● Một cảnh báo bảo mật với thông báo "Kết nối của bạn không an toàn" sẽ đượchiển thị

● Phải chấp nhận thông báo cảnh báo này Để làm điều đó, nhấp vào "Advanced"

● Nó sẽ hiển thị chứng chỉ SSL và nên hiển thị "SEC_ERROR_UNKOWN

ISSUE" Bấm "Add Exception" để sử dụng chứng chỉ này

● Một cửa sổ xác nhận sẽ hiện ra, xác nhận ngoại lệ bằng cách nhấp vào

"Confirm Security Exception"

Task 5: Truy cập vào dữ liệu bị hạn chế

Mục tiêu của phần này là xem xét quyền truy cập được phép và xác định ngay cả khibạn có thể truy cập vào một khu vực bị hạn chế thì bạn có được phép làm bất cứ điều

gì không Theo OWASP WSTG-ATHZ-01, một trong những nhiệm vụ đầu tiên khi

Trang 13

xem xét một trang web là xem bạn có quyền truy cập vào các URL và thư mục nào.Thực hiện một cuộc khảo sát cơ bản của trang web bằng cách sử dụng một công cụthu thập dữ liệu trên trang web là phương pháp ưu tiên để thu thập dữ liệu trên trangweb.

Ví dụ 1 - Path Traversal

Scan một trang web để xác định xem những đường dẫn nào có thể truy cập được:

● Mở OWASP Zap và thực hiện quét trang web trên địa chỉ IP:

192.168.99.100:3000

● Dưới phần alert, bạn nên thấy một phần được ghi là Path Traversal, hãy xem xem có thể thấy những đường dẫn nào được bảo vệ bằng mật khẩu hoặc đượcbảo mật

● Cần tìm đường dẫn tới trang quản trị

● Hãy lưu kết quả quét của OWASP Zap, lưu nó trên màn hình desktop và đặt tên là "traversal.html" nếu traversal không phải là một tùy chọn, hãy lưu toàn

bộ báo cáo

Task 6: Tự tạo tài khoản cho quản trị viên

Mục đích của nhiệm vụ này là để xem xét xem có lỗ hổng nào có thể cho phép tạo tàikhoản quản trị viên khi không nên có tùy chọn đó Theo OWASP WSTG-ATHN-06,theo dõi bộ nhớ cache và các phần tử để xem chúng có thể thực hiện các yêu cầu PUT/ GET hoặc truy cập vào trang web hoặc API cho phép thực hiện việc tạo tài khoản admin

Ví dụ 1 - Sửa đổi yêu cầu POST để tạo tài khoản quản trị viên

Làm theo các bước được liệt kê dưới đây để bắt và sửa đổi yêu cầu POST khi tạo người dùng mới

● Sử dụng OWASP-ZAP, tạo một người dùng mới Đăng nhập với người dùngmới

● Tại trang đăng ký người dùng Có thể điền thông tin sau đây:

o Email: test@noemail.com

o Password: Password#1

o Nhập lại mật khẩu: Password#1

o Câu hỏi bảo mật: Name of your favorite Pet?

o Trả lời: Dogs

Tìm HTTP request trong tab History: "http://192.168.99.100:3000/rest/user/whoami".Sao chép trường Authorization lên đến hết ngoại trừ phần Connection: keep-alive vàoclipboard

Trang 14

Tại phần Sites, tìm đường dẫn tới http://192.168.99.100:3000 -> user -> POST:Login Nhấp chuột phải, chọn Open/Resend with Request Editor.

Sửa đổi HTTP request line thành: GET http://192.168.99.100:3000/api/Users Sau đó xóa trường Cookie và paste phần Authorization vừa copy bên trên

Thay đổi email thành một email mới, chưa từng dùng và chọn “Send” Phản hồi sẽ liệt

kê danh sách tất cả các tài khoản người dùng

Lưu ý: Bạn có thể chỉ cần thực hiện POST thay vì GET nếu bạn không muốn có danhsách tài khoản người dùng Thực hiện điều này sẽ thêm tài khoản mới không phải quản trị viên vào hệ thống

Cuối cùng, thêm vào phần body: "role":"admin" và chuyển lại thành method POST, phần path là api/Users Người dùng sẽ được tạo mới, nhưng chưa thể chắc chắn

trường “role” có tồn tại hay người dùng mới là một quản trị viên hay chưa

Trong thanh địa chỉ của Firefox, truy cập URL sau để xem thông tin tài khoản mới đã xuất hiện hay chưa:

http://192.168.99.100:3000/rest/products/search?q=qwert')) UNION SELECT id, email, password, '4', '5', '6','7', '8', '9' FROM Users

Đăng nhập bằng tài khoản mới này và xác minh xem nó có phải là một quản trị viên bằng cách truy cập: https://192.168.99.100:3000/#/administration

Task 7: Bỏ qua xác thực

Mục tiêu của tác vụ này là tìm cách vượt qua yêu cầu đăng nhập của người dùng theo cách truyền thống

Ví dụ 1 - Vượt qua xác thực người dùng bằng cách sử dụng hai dấu gạch ngang

Chỉ cần thêm ' (ví dụ: admin@juice.org' ) vào cuối bất kỳ người dùng nào, điều nàycho phép đăng nhập bằng bất kỳ mật khẩu nào

Thử đăng nhập bằng tài khoản jim@juice.org' và sử dụng mật khẩu bất kỳ

Các người dùng khác nào dễ bị bỏ qua xác thực kiểu này? Sử dụng danh sách người dùng bên dưới và xem xét những người dùng nào cho phép lợi dụng này hoạt động

Trang 15

Ví dụ 2 - Bỏ qua email người dùng bằng cách sử dụng tên

Sau khi hoàn thành ví dụ 1 và thấy được hậu quả mà hai dấu gạch ngang có thể gây ra Hãy xem xem chúng ta có thể đăng nhập bằng tên người dùng thay vì địa chỉ email.Tại trang đăng nhập, nhập: ('%jim%');

Chọn bất kỳ mật khẩu nào, đăng nhập có hoạt động không?

Liệu có người dùng nào trong danh sách bên dưới cho phép đăng nhập?

Trang 16

Task 8: Giả mạo tài khoản

Mục tiêu của phần này là xem liệu bạn có thể đăng nhập vào một tài khoản khác để đăng bình luận Theo OWASP WSTG-ATHZ-02, một phương pháp kiểm thử phổ biến là đảm bảo rằng mỗi phiên là chỉ có thể truy cập bởi chủ sở hữu của phiên đó và các nhiệm vụ được thực hiện bởi chủ sở hữu phiên chỉ ảnh hưởng trực tiếp đến ngườidùng đó Phần này sẽ xem xét xem liệu có thể truy cập các chức năng và tài nguyên

mà chỉ nên được truy cập bởi người dùng với vai trò hoặc đặc quyền khác

Ví dụ 1 - đăng nhập giả mạo:

Trên trình duyệt Firefox, truy cập vào phản hồi của khách hàng Nếu cần, đăng nhập với tài khoản jim để xem trang này

Trên trình duyệt Firefox, để lại một bình luận dưới phần bình luận Ghi nhớ tên tác giả Điền vào đánh giá và mã CAPTCHA, nhưng chưa bấm nút Gửi

Trong OWASP ZAP, bật tính năng intercept

Trên trình duyệt Firefox, bấm nút Gửi

Trong OWASP ZAP, sẽ hiển thị HTTP request đã bị chặn

Lưu ý: CAPTCHA có thể khác

Cách đọc dòng trên:

UserID: 1 - đây là ID của người dùng đăng bình luận

captchaId: 1 - đây là câu hỏi CAPTCHA

captcha: 30 - đây là câu trả lời của CAPTCHA

comment: "comment entered (.org)" - đây là nội dung bình luận

“rating”:4 - đây là đánh giá đã được đăng

Sửa User ID thành ID của user khác

Trang 17

Kiểm tra phản hồi tại đường link sau để xem liệu người dùng đã đăng nhập vào tài khoản nào hay tài khoản Jim hoặc Admin đã đăng bình luận Đường dẫn là:

http://192.168.99.100:3000/#/administration

Trang 18

Task 9: Đăng nhập tài khoản và phá vỡ mật khẩu

Cơ chế xác thực phổ biến nhất và dễ quản trị nhất là mật khẩu tĩnh Theo OWASP WSTG-ATHN-07, có thể chống lại các dạng tấn công mật khẩu phổ biến bằng cách đánh giá độ dài, độ phức tạp, sự tái sử dụng và yêu cầu thay đổi mật khẩu Có thể lấybăm và chạy nó qua một rainbow table hoặc thậm chí là tìm kiếm đơn giản trên

Google

Ví dụ 1 - Đăng nhập người dùng

Trong phần 4.5, trình duyệt web tìm thấy một số URL, trong đó có phần chi tiết xác thực Loại khai thác này có thể không hoạt động,nếu giá trị băm không có thì chuyển sang task tiếp theo

Trong Firefox, nhấp chuột phải và chọn "inspect element" trong tab network, tìm kiếmhttps://192.168.99.100:3000/rest/user/authentication-details/

• Các phản hồi cho cuộc gọi sẽ có dạng như sau: [ ]

Ngày đăng: 18/11/2024, 14:41

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w