Xin Chào. Bài viết này mình sẽ hướng dẫn về việc nhận diện CVE(Common Vulnerabilities and Exposures) trong các Source Code chứa thông tin về Version của FrameWork,..vv tiếp đó các Lab White Box cũng khá thực tế với các bạn đi làm Pentest, cần phân tích mã nguồn của WebSite công ty vì vậy mình nghĩ những bạn mới nên đọc về bài viết này, mặc dù mình không khẳng định nó sẽ giúp ích hoàn toàn được rồi bắt đầu thôi .
Labyrinth Linguist
Việc đầu tiên như mình từng làm đó là tải file về và đọc nó, Password để extract file là: hackthebox .Sau đó extract file ra để đọc nó, mình sử dụng Visual Studio Code bởi vì thuận tiện.
File flag thì mình sẽ không đọc vì mất thời gian, ở đây thì là file entrypoint.sh trong này thứ ta cần quan tâm là flag đã bị thay đổi tên file có nghĩa là không còn là flag.txt nữa mà nó được đổi thành flagxxxxx.txt gì đó dạng tên ngẫu nhiên để khó hơn. Đây là thông tin hữu ích sang phần tiếp theo.
Docker file này liên quan tới entrypoint mà thôi, không có gì cả khá bình thường. Vì vậy sang các mục tiếp theo, mình sẽ tóm gọn thôi bởi vì 1 số bạn sẽ bị khó hiểu. Mình sẽ lượt qua vài thứ gây ra lỗi mà thôi, còn những mục như này nếu có lỗi mình sẽ giải thích.
Vị trí file pom.xml có thêm FreeMarkerServer framework bao gồm cả version 0.0.1-SNAPSHOT của nó và framework này thường là dùng cho các spring của Java vì vậy có khả năng nó là 1 lỗi Template Injection, bởi vì thường sử dụng nhưng framework như này thường nếu không thêm các filtering vào nó sẽ gây ra lỗi và Hacker có thể thực thi lệnh lên đó ví dụ như là RCE. Để chứng minh điều mình vừa nói thì chúng ta sẽ tra google để biết chi tiết về nó.
Ồ vậy là chuẩn rồi, okay đọc cho hết file xml đã.
Tiếp xuống dưới cùng chúng ta có thể thấy nó lại sử dụng framework velocity có cả version 1.7 okay thì như mình nói thường mấy này dùng để spring vì vậy rất dễ gây ra lỗi Template Injection.
Okay vậy thì rỏ ràng rồi, chúng ta sang phần code Java để kiểm tra xem nó có thêm filtering để lọc các payload độc hại hay không.
Main.java import vào thư viện apache velocity ồ vậy thì khả năng lỗi là 80% giờ sẽ read code để xem nó có thêm filtering để sàng lọc payload độc hại hay không.
Code ở đây khi chúng ta nhập gì đó từ text nó sẽ thành text strings và nếu không ghi gì cả nó sẽ tự chuyển thành Example text. Có nghĩa là không nhập gì thì nó sẽ về mặc chữ được mặc định sẵn mà thôi, và phần input text để sang textstrings chẳng hề có filtering, vì vậy chắc chắn khai thác lỗi Template Injection được tiến hành thôi.
Spawn Docker và sang Burp Pro và thử kiểm tra nó.
Mình đã thử thì trên input khi thử attack Cross-site-scripting thì thành công, nghĩa là mình phân tích code đúng, chẳng hề có filtering nào cả. Tiếp đó thay vì thử từng lệnh Template Injection thì mình sẽ vào thẳng vấn đề đó.
Mình đã tra Google về cách khai thác bằng dựa trên FrameWork Velocity Có Vulnerability và thấy link github này tiếp đó vào và copy payload để thử thôi!
Đây là link github đó: Payload Velocity Template Injection
Chuyển sang Repeater và dán payload đã copy từ github về.
Trong phần này Command được thực thi là id okay nó trả về kết quả mình cần rồi, và tại sao mình không encode lại bởi vì không cần thiết, cho dù mình encode thì Burp Pro nó sẽ tự decode ra và Request thôi. Nếu nó trả kết quả về như vậy thì đồng nghĩa ta đã RCE được, vậy thì lấy flag thôi đỡ phải mất thời gian.
Có lẻ mình phân tích sai ở phần flag sẽ đổi tên, okay không vấn đề lắm
Cảm ơn mọi người đã đọc, mấy nay mình bị vấn đề về sức khoẻ nên không làm việc được vì vậy mình mới có time up bài cho NewBie đọc để hiểu nó, khá thực tế bởi vì sau này vào công ty các bạn sẽ thường được làm thiên về White Box vì là Pentester còn Black Box thường chỉ là Bug Bounty Hunter mới rất thường gặp. Nhưng đôi lúc công ty thuê các bạn ở ngoài vì vậy sẽ không cho đọc code tránh lộ nhưng thông tin không được phép.
Xin phép nhấn mạnh này chỉ dành cho NewBie, các bạn hiểu về lỗi này xin đừng TOXIC. Mình không hề giỏi chỉ là đam mê bất diệt thôi!