2. Dotnetnuke - DNN
• Có 2 loại: Free (DNN platform) & Paid (EVOQ)
• Ngoài các Module mặc định, đa số các module còn lại được các công ty
phát triển bán với giá rất đắt và không có mã nguồn.
• Latest version: 9.2.2 (T10,2018) – chủ yếu fix một số lỗi nhỏ và bỏ bớt
code thừa
• Không lập trình theo MVC, tuy nhiên hỗ trợ cho các module có thể lập
trình theo MVC.
10/08/2019 Trung tâm An ninh mạng Viettel 2
3. Cấu trúc DNN
10/08/2019 Trung tâm An ninh mạng Viettel 3
HTTPHandler
Request Default.aspx
https://msdn.microsoft.com/en-us/library/bb470252.aspx
https://docs.microsoft.com/en-us/aspnet/web-api/index
Web API
Resource
DNNModule
4. Cấu trúc thư mục DNN
10/08/2019 Trung tâm An ninh mạng Viettel 4
Install
Desktop
Modules
Chứa các tệp tin apsx dùng để khởi tạo trang web với các thuộc tính ban đầu. Sau khi
Install xong nên xóa thư mục này
Chứa các tệp resource của một module. Đôi khi có cả code thực thi mà module hook
tới trong trường hợp module này không compile ra DLL tất cả mã nguồn.
admin Chứa các tệp aspx là giao diện của trang admin
Portals Chứa dữ liệu người dùng, các dữ liệu được upload lên.
5. Truy vấn SQL trong DNN
• DNN truy vấn SQL theo mô hình DTO (Data Transfer Object)
hỗ trỗ bởi ASP.NET => cực kỳ an toàn(tính đến thời điểm hiện
tại).
• Tuy nhiên một số Module 3rd party lại không dùng phương
thức sẵn này mà lập trình theo cách riêng của mình => Tấn
công SQL dựa trên phân tích các module 3rd party.
10/08/2019 Trung tâm An ninh mạng Viettel 5
6. Authentication DNN
• DNN sử dụng mô hình ASP_Membership hỗ trợ bởi ASP.NET để
xác thực người dùng.
• Phương thức lưu trữ password có 3 dạng: Cleared, Encrypted,
Hashed được cấu hình trong web.config
10/08/2019 Trung tâm An ninh mạng Viettel 6
7. Tips & Tricks 1: Giải mã mật khẩu DNN
Điều kiện:
• Password type: Encrypted
• Có được machine key trong web.config
Chạy app giải mã do Phucdt5 dev =)) (tín dụng nhé!)
10/08/2019 Trung tâm An ninh mạng Viettel 7
8. Tips & Tricks 2: Những điểm cần chú ý
khi phân tích DNN
• DNN là mã nguồn mở nên dễ dàng compare được sự thay đổi
giữa các phiên bản bằng github.
https://github.com/dnnsoftware/Dnn.Platform/compare/
• Nên tập trung vào phần code của Dotnetnuke.Library (các
hàm core xử lý) và các service (tìm kiếm: “:
IServiceRouteMapper”).
• Do không có MVC nên việc tìm lỗi XSS khá khó vì không thấy
endpoint tập trung. Có thể chú ý những chỗ sử dụng class:
HttpResponse, Context.Response, …
10/08/2019 Trung tâm An ninh mạng Viettel 8
9. JSON Attack
• Session này dành cho những ai chưa đọc qua bài báo JSON
ATTACK ở Blackhat 2017
https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-
wp.pdf
https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf
10/08/2019 Trung tâm An ninh mạng Viettel 9
10. JSON Attack
PHP Unserialize Java Deserialize C# Deserialize
Input Binary Binary Binary, JSON, XML,…
Entry Point Unserialize() readObject() Deserialize(),
DeserializeObject,…
Vector __ToString()
__Destruct()
__Wakeup()
…
Tùy thuộc vào cách hàm
readObject() xử lý
Getter, setter, Dser.
Callback
(không cần quan tâm)
Tool PHPGCC Ysoserial Ysoserial.net
10/08/2019 Trung tâm An ninh mạng Viettel 10
12. Lỗi XML Deserialize trong DNN
10/08/2019 Trung tâm An ninh mạng Viettel 12
• System.Diagnostic.Process => Không RCE trực tiếp được
• Sử dụng các hàm có sẵn mà DNN cung cấp:
• Writefile: Đọc file bất kỳ, trả thẳng về response
• Readfile: Ghi file bất kỳ