2 minute read

해당 문제는 https://app.hackthebox.com/machines/PermX 에서 확인할 수 있습니다.


Editorial 시스템 모의 침투

수행 내용

  1. vHOST 탐색으로 lms하위도메인 식별
  2. Chamilo lms CVE 식별 및 파일 업로드 취약점을 통해 Reverse Connection
  3. db_password 하드코딩된 채로 노출 -> mtz 계정으로 추정, 로그인
  4. 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 파일에 추가함

그림 1-1

  • 웹 페이지 접속하여 살펴본 결과, 유의미한 정보는 발견되지 않아 추가적인 경로를 획득하기 위해
  • 디렉터리 부르트포싱 및 vHOST를 탐색했다.

그림 1-2

  • 주가적인 경로는 식별되지 않았으며, 라이센스 파일에서는 유의미한 내용은 없었다.
  • vHOST 탐색결과 lms 라는 하위도메인이 발견되어 hosts 파일 수정후 접근을 시도했다.

그림 1-3

  • 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 디렉토리에 업로드할 수 있다.

그림 1-4

  • poc는 사진과 같다

그림 1-5

그림 1-6

  • 성공적으로 파일을 업로드 및 실행시켜 Reverse Connetcion이 맺어졌다.

그림 1-7

  • linpeas를 통해 살펴본 결과 db_password가 하드코딩되어 노출되고 있는것을 확인할 수 있다.

그림 1-8

  • mysql의 root 계정의 패스워드는 아니었으며, mtz라는 유저가 존재하여 시도해본결과 로그인에 성공할 수 있었다. 그림 1-9
  • sudo 권한을 확인해보면 /opt/acl.sh 라는 쉘 스크립트를 실행시킬 수 있으며
  • 해당 스크립트의 코드는 유저, 권한, 파일을 인자로 받고있다.
  • /usr/bin/setfacl 을 통해 권한을 설정한다.
  • 그 이전에 필터링을 수행하게 된다.

그림 1-10

  • 순서대로 mtz 디렉터리 내에 임의 파일 생성 후 /etc/passwd 파일과 심볼릭 링크를 설정한다.
  • acl.sh 을 사용하여 sudo 권한으로 풀 권한을 부여하고
  • 생성한 임의 파일에 임의 패스워드를 생서아혀 root 유저와 동일한 UID로 설정하여 추가한다.

그림 1-11

  • 성공적으로 root권한을 획득할 수 있다.

Tags:

Categories:

Updated:

Leave a comment