---
# System prepended metadata

title: HTB - Broker
tags: [HTB]

---

{%hackmd @themes/dracula %}

# HackTheBox - Broker

## Reconnaissance
Như khi bắt đầu mọi machine, mình nmap để xem có những cổng nào mở:

![image](https://hackmd.io/_uploads/BJGsh1kF6.png)

Có hai port là **22 - ssh** và **80 - http** thử truy cập ip với port 80.
Nhận được một giao diện với username và pass cần phai đăng nhập. Mình thử **admin:admin**
![image](https://hackmd.io/_uploads/BJKl6J1F6.png)

Kết quả là đăng nhập thành công
![image](https://hackmd.io/_uploads/SyqNpJktp.png)

Dễ dàng thấy trên giao diện là **Apache ActiveMQ**. Hmm và đương nhiên là mình chưa động vào lần nào cả :( 

Fuzzing thử với **dirsearch** xem sao. Và bum nó không có gì cả. 
![image](https://hackmd.io/_uploads/SyuOR1Jtp.png)

Quay lại với nmap thử fuzzing thêm xem còn cổng nào mở không.

![image](https://hackmd.io/_uploads/BJoyylyYp.png)

Oh có thêm một port đáng chú ý ở đây là **5672**. Mình cũng thử xem có thể sử dụng metasploits có gì không. Thử exploit với nó nhưng cũng thất bại.

Thử search xem có vuln hay có POC CVE nào không. 
![image](https://hackmd.io/_uploads/BkIY-g1Kp.png)

Thì mình tìm thấy có vẻ **CVE-2023-46604** có thể khai thác được. Há mồm tìm POC thôi nào =)) . 

Húp POC time =)))))))
https://github.com/X1r0z/ActiveMQ-RCE
https://github.com/evkl1d/CVE-2023-46604

## Exploit
Clone về và chạy script thôi nào.
![image](https://hackmd.io/_uploads/HJ3tzF_K6.png)
![image](https://hackmd.io/_uploads/S1MofYdK6.png)
Như vậy là chúng ta đã có được shell. 

## Privilege escalation linux

Để leo quyền thì thực sự mình không biết cách nên mình đã đi tham khảo. 

Thì từ kết quả fuzzing ![image](https://hackmd.io/_uploads/SJMWcYOtp.png)

Có thể thấy challenge được host bằng **nginx**.

Chạy **sudo -l** để xem user hiện tại có những quyền hạn gì?

![image](https://hackmd.io/_uploads/BkOkiYdKa.png)

Nhận được kết quả là user hiện tại có thể chạy **nginx** mà không cần password.

Theo mình tham khảo WU thì ý tưởng là vì đã có thể chạy nginx mà không cần pass, nên sẽ hướng tới việc config và host một web có quyền root. Từ đó có thể đọc hoặc ghi file với quyền root.

Vì chưa từng host và config nginx bao giờ nên mình sẽ viết lại một chút những gì mình tìm hiểu về cách cấu hình nginx.

### Nginx configure
Vị trí file config của nginx có thể tùy ý lưu ở bất kỳ đâu, còn mặc định thì nó sẽ được lưu ở **/etc/nginx/nginx.conf**  hoặc **/usr/local/nginx/conf/nginx.conf**

File config mẫu có thể xem [ở đây](https://www.nginx.com/resources/wiki/start/topics/examples/full/)

File config sẽ được sắp xếp theo cấu trúc cây và được chia làm nhiều **context**

Các context này chứa thông tin chi tiết về cấu hình, được phân chia theo từng loại cụ thể

#### Các context chính trong Nginx config

##### Event Context
Nó dùng để đặt các tùy chọn ở mức độ glogal, ảnh hưởng đến cách NGINX xử lý các kết nối ở cấp độ chung. Trong NGINX config, chỉ có một event context duy nhất được xác định
```nginx
# main context

events {

    # events context
    . . .

}
```

##### HTTP Context

Khi cấu hình NGINX như một web server hay một reverse proxy, http context sẽ chiếm phần lớn cấu hình. Context này sẽ chứa mọi directive cũng như các context cần thiết khác để xác định cách các chương trình xử lý kết nối HTTP hay HTTPS.

HTTP context thực ra tương đương với event context, nên chúng sẽ được liệt kê cạnh nhau, thay vì lồng vào nhau. Cả hai đều là context con của main context:
```nginx
# main context

events {
    # events context
    . . .
}

http {
    # http context
    . . .
}
```
##### Server Context
Server Context được khai báo trong http context. Đây cũng là một ví dụ về các context lồng nhau. 
Server context cũng là context đầu tiên cho phép khai báo nhiều lần.

```nginx
# main context

http {
    # http context
    server {
        # first server context
    }

    server {
        # second server context
    }
}
```
Đó là một vài context cần chú ý và quan tâm ở bài này. Ngoài ra bạn có thể xem thể [ở đây](https://vietnix.vn/nginx-configuration/).

Từ những context ở trên thì chúng ta có thể tự tạo ra một webserver với quyền root
```nginx
user root;
events {
    worker_connections 1024;
}
http {
    server {
        listen 1337;
        root /;
        autoindex on;
    }
}
```
![image](https://hackmd.io/_uploads/rkvrNgtta.png)

![image](https://hackmd.io/_uploads/rk23QlKFa.png)
