Shell
On Job Training
Last updated
On Job Training
Last updated
Web shell là một tập lệnh độc hại được tải lên hoặc tiêm vào một máy chủ web với mục đích thực hiện các lệnh từ xa trên máy chủ đó. Web shell thường được viết bằng các ngôn ngữ lập trình web phổ biến như PHP, ASP, JSP, hoặc các ngôn ngữ kịch bản khác.
Tải lên tập lệnh: Tin tặc tìm cách tải lên tập lệnh web shell thông qua các lỗ hổng bảo mật như lỗ hổng tải tệp tin (file upload vulnerability), lỗ hổng bao gồm tệp tin từ xa (remote file inclusion), hoặc các lỗ hổng khác.
Thực thi lệnh từ xa: Khi tập lệnh web shell đã được tải lên, tin tặc có thể truy cập và thực thi các lệnh trên máy chủ từ xa thông qua giao diện web của web shell. Điều này cho phép họ kiểm soát và khai thác hệ thống máy chủ.
Thực thi lệnh hệ điều hành: Cho phép chạy các lệnh như trên dòng lệnh của hệ điều hành.
Quản lý tệp tin: Tải lên, tải xuống, xóa, sao chép, di chuyển tệp tin và thư mục.
Quản lý cơ sở dữ liệu: Thực hiện các truy vấn cơ sở dữ liệu và quản lý cơ sở dữ liệu.
Tạo backdoor: Thiết lập các cửa hậu để duy trì quyền truy cập ngay cả khi lỗ hổng ban đầu đã được khắc phục.
Ở đây ta có một web java có chức năng upload file
Mình sẽ up một webshell cơ bản chỉ có chức năng là như một cmd
Vì chỉ là một web shell cơ bản nên khi up lên mình không hề nhận thấy một cảnh báo Windows Defenders nào. Thử truy cập vào webshell:
Có thể thấy webshell đã được up. Thử chạy lệnh:
Kiểm tra log khi memshell bị up lên:
Sysmon ID 11: File creation
Sysmon ID 1: ghi nhận sự kiện tạo tiến trình
Memory Webshell là webshell được load vào trong Memory, hay là RAM, nó sẽ cung cấp cho attacker khả năng chạy shell trên hệ thống kể cả khi webshell đã bị xóa đi trong Disk, cho đến khi hệ thống restart.
Hiện tại, nhiều chuyên gia đã đúc kết ra nhiều cách đưa bộ nhớ webshell vào web java. Chủ đạo là đưa Filter, Listener theo các webserver khác nhau (tomcat, weblogic, ...) và các web framework khác nhau (servlet, spring MVC, ...).
xp_cmdshell
là một thủ tục mở rộng (extended stored procedure) trong Microsoft SQL Server cho phép thực thi các lệnh hệ điều hành (OS commands) trực tiếp từ SQL Server. Khi sử dụng xp_cmdshell
, ta có thể chạy các lệnh như sao chép tệp, thực hiện truy vấn mạng, hoặc khởi động các chương trình bên ngoài từ trong môi trường SQL Server.
Ta có một database server MSSQL không bật xp_cmdshell
Account tên trungpq6
có quyền sysadmin
Database này được kết nối tới một trang web Java có trang chủ hiển thị các bài viết và có chức năng search có chứa lỗi SQL Injection
Sử dụng BurpSuite, ta nhanh chóng tìm được số lượng cột là 3, và 2 cái sau có thể chứa chuỗi
Ta sẽ sử dụng is_srvrolemember('sysadmin')
để kiểm tra xem user kết nối database hiện tại có phải là sysadmin hay không
Giá trị trả về là 1
cho thấy user hiện tại có quyền sysadmin. Giờ ta sẽ tiền hành bật xp_cmdshell
bằng các query sau:
Query inject cụ thể:
Sau khi inject xong, vào MSSQL để kiểm tra, ta thấy xp_cmdshell
đã được bật
Từ đây, hacker có thể làm được nhiều thứ ví dụ như reverse shell, tạo account, .... Ở đây mình sẽ thử ping để demo:
Ping thành công:
Event ID 15457: Cấu hình server thay đổi
Sysmon ID 1: ghi nhận sự kiện tạo tiến trình