Mineme2
Link challenges : https://pwnable.vn/challenges#MineMe2-1
Last updated
Link challenges : https://pwnable.vn/challenges#MineMe2-1
Last updated
Bài mineme2 sẽ chỉ khác so với bài mineme1 1 chút ở class vulnerable và 1 vài filter payload khi thực hiện rce :
Link wu của bài mineme1 có thể tham khảo : https://sec.vnpt.vn/2022/06/kma-ctf-2022-lan-2-web-writeup/
Thử Trigger test lỗi log4j trước với bản minecraft này :
DNS trả về nên bài này vẫn bị lỗi log4j.
Mình sẽ diff 2 source code của mineme1 và mineme2 để xem sự khác biệt để tìm class khả nghi nhanh hơn , hoặc cũng có thể diff source code server của bài này với các bản 1.15.x khác để tìm kiếm : sử dụng IntelliJ sẽ giúp decompile luôn code , hoặc dùng jd-gui
để decompile trước rồi diff với WinMerge
File server mineme2 có class rome
=> liên quan đến việc Deserialize -> có thể tận dụng với tool JNDI exploit : https://github.com/pimps/JNDI-Exploit-Kit
Ngoài ra khi đọc docker file của bài 2 này sẽ ko thấy lệnh install lệnh curl
như ở bài 1 nên ở đây mình sẽ không thể curl flag tay về được nên mình sẽ rce lên server luôn :
Link generate reverse shell nhanh : https://www.revshells.com/
Có thể tạo listen port bắt shell ở bên con VPS hoặc dùng ngrok để forward port ra ngoài internet .
Sử dụng JNDI exploit để tạo payload với gadget từ phân tích diff source code server :
Ở đây sau khi qua test trên docker của bài cung cấp mình nhận thấy server filter các payload có chứa dấu ' và " , / nên các payload reverse shell như bash , sh hay perl , python đều không thể sử dụng được , ngoài ra covert về base64 để sử dụng payload base64 decode thì cũng không được vì giới hạn độ dài thanh chat trong Game minecraft không đủ .
Nên mình sẽ sử dụng payload java_reverse_shell của class ROME :
Payload điền vào thanh chat trong game :
RCE thành công :
file flag sẽ ở đằng trước đường dẫn mình rce lên :