PermX - WriteUP
해당 문제는 https://app.hackthebox.com/machines/PermX 에서 확인할 수 있습니다.
Editorial 시스템 모의 침투
수행 내용
- vHOST 탐색으로 lms하위도메인 식별
- Chamilo lms CVE 식별 및 파일 업로드 취약점을 통해 Reverse Connection
- db_password 하드코딩된 채로 노출 -> mtz 계정으로 추정, 로그인
- acl.sh sudo권한을 통해 passwd 파일 변조하여 root 권한 획득
정보수집
Nmap 스캔 - 사용중인 포트 및 배너, 기본 정보 수집
nmap -p- --open -max-retires 5000 -T 4 -sV -o result.txt {target_ip}
Starting Nmap 7.93 ( https://nmap.org ) at 2024-08-09 00:11 EDT │
Nmap scan report for permx.htb (10.10.11.23) │
Host is up (0.29s latency). │
Not shown: 64217 closed tcp ports (reset), 1316 filtered tcp ports (no-response) │
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit │
PORT STATE SERVICE VERSION │
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.10 (Ubuntu Linux; protocol 2.0) │
80/tcp open http Apache httpd 2.4.52 │
Service Info: Host: 127.0.0.1; OS: Linux; CPE: cpe:/o:linux:linux_kernel │
│
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . │
Nmap done: 2 IP addresses (1 host up) scanned in 92.30 seconds
- 22(SSH), 80(http) 포트로 서비스 동작중을 확인함.
-
SSH의 경우 Username 열거에 관한 취약점 제외 유의미한 취약점은 없는듯 함.
- 80 포트의 경우 permx.htb 도메인을 ip와 매칭시켜 hosts 파일에 추가함
- 웹 페이지 접속하여 살펴본 결과, 유의미한 정보는 발견되지 않아 추가적인 경로를 획득하기 위해
- 디렉터리 부르트포싱 및 vHOST를 탐색했다.
- 주가적인 경로는 식별되지 않았으며, 라이센스 파일에서는 유의미한 내용은 없었다.
- vHOST 탐색결과 lms 라는 하위도메인이 발견되어 hosts 파일 수정후 접근을 시도했다.
- Chamilo lms를 사용하는 웹 페이지를 식별되었으며,
- Default 자격증명으로는 로그인되지 않았다.
<script>var _p = {
"web": "http:\/\/lms.permx.htb\/",
"web_url": "http:\/\/lms.permx.htb\/web\/",
"web_relative": "\/",
"web_course": "http:\/\/lms.permx.htb\/courses\/",
"web_main": "http:\/\/lms.permx.htb\/main\/",
"web_css": "http:\/\/lms.permx.htb\/web\/css\/",
"web_css_theme": "http:\/\/lms.permx.htb\/web\/css\/themes\/chamilo\/",
"web_ajax": "http:\/\/lms.permx.htb\/main\/inc\/ajax\/",
"web_img": "http:\/\/lms.permx.htb\/main\/img\/",
"web_plugin": "http:\/\/lms.permx.htb\/plugin\/",
"web_lib": "http:\/\/lms.permx.htb\/main\/inc\/lib\/",
"web_upload": "http:\/\/lms.permx.htb\/app\/upload\/",
"web_self": "\/index.php",
"self_basename": "index.php",
"web_query_vars": "",
"web_self_query_vars": "\/",
"web_cid_query": "",
"web_rel_code": "\/main\/"
}</script>
- 추가적으로 개발자 코드에서 위와같이 각각의 경로를 확인할 수 있었다.
- 관련 취약점을 찾던중 CVE-2023-4220 으로 명명된 Chamilo lms 취약점을 악용한 exploit poc가 존재했다.
- 현재 버전을 알 수는 없지만 해당 poc는 Chamilo LMS <= v1.11.24 에 해당된다.
- 해당 poc 내용을 보면 /main/inc/lib/javascript/bigupload/inc/bigUpload.php 위치에 대한 Chamilo-LMS의 대용량 파일 업로드 기능에 대한 무제한 파일 업로드 익스플로잇으로, 공격자는 웹 셸을 업로드하여 원격 코드 실행을 획득할 수 있다.
- 그 후임의의 파일을 /main/inc/lib/javascript/bigupload/files 디렉토리에 업로드할 수 있다.
- poc는 사진과 같다
- 성공적으로 파일을 업로드 및 실행시켜 Reverse Connetcion이 맺어졌다.
- linpeas를 통해 살펴본 결과 db_password가 하드코딩되어 노출되고 있는것을 확인할 수 있다.
- mysql의 root 계정의 패스워드는 아니었으며, mtz라는 유저가 존재하여 시도해본결과 로그인에 성공할 수 있었다.
- sudo 권한을 확인해보면 /opt/acl.sh 라는 쉘 스크립트를 실행시킬 수 있으며
- 해당 스크립트의 코드는 유저, 권한, 파일을 인자로 받고있다.
- /usr/bin/setfacl 을 통해 권한을 설정한다.
- 그 이전에 필터링을 수행하게 된다.
- 순서대로 mtz 디렉터리 내에 임의 파일 생성 후 /etc/passwd 파일과 심볼릭 링크를 설정한다.
- acl.sh 을 사용하여 sudo 권한으로 풀 권한을 부여하고
- 생성한 임의 파일에 임의 패스워드를 생서아혀 root 유저와 동일한 UID로 설정하여 추가한다.
- 성공적으로 root권한을 획득할 수 있다.
Leave a comment