1. 개요
imageMagick 문제
2. 분석
이미지를 올리면 우측 하단에 도장 이미지를 넣어줍니다.
코드를 보면 도장 이미지를 넣는데 imageMagick을 사용하고 있고, 버전은 7.1.0-51입니다.
# build stage
FROM rust:1.67.1-bullseye as builder
WORKDIR /root/app
COPY . .
RUN cargo build --release --bin hanko
# final stage
FROM debian:bullseye-slim
# Setup magick
RUN apt-get update && \
apt-get install -y --no-install-recommends curl ca-certificates libfontconfig1 libx11-6 libharfbuzz0b libfribidi0 && \
rm -rf /var/lib/apt/lists/*
ARG MAGICK_URL="https://github.com/ImageMagick/ImageMagick/releases/download/7.1.0-51/ImageMagick--gcc-x86_64.AppImage"
RUN curl --location --fail -o /usr/local/bin/magick $MAGICK_URL && \
chmod 755 /usr/local/bin/magick
ENV APPIMAGE_EXTRACT_AND_RUN=1
RUN mkdir ./data
COPY --from=builder /root/app/target/release/hanko /usr/local/bin/hanko
RUN echo 'FAKE{REDACTED}' > /flag_A
ENV FLAG_B="FAKE{REDACTED}"
ENV RUST_LOG="hanko,tower_http=TRACE,INFO"
ENV LISTEN_ADDR="0.0.0.0:3000"
ENTRYPOINT ["hanko"]
요 링크에서 imageMagick 7.1.0-51에 해당하는 취약점을 볼 수 있는데, information disclosure(CVE-2022-44268)를 사용할 수 있을 것 같습니다.
https://www.cybersecurity-help.cz/vdb/SB2023020911
Multiple vulnerabilities in ImageMagick
Multiple vulnerabilities were identified in ImageMagick
www.cybersecurity-help.cz
CVE-2022-44268는 청크에 특정 파일의 경로를 넣으면, imageMagick이 이미지를 가공할때 해당 파일을 읽은 결과를 포함합니다.
3. exploit
pngcush를 사용해서 이미지의 profile 영역에 /flag_A 경로를 텍스트로 넣습니다.
pngcrush -text a profile /flag_A payload.png
hex 에디터로 열어보면, 제일 마지막에 flag_a가 들어갔음을 확인 할 수 있습니다.
해당 이미지를 업로드 후 결과 이미즈를 hex 에디터로 열어보면, hex 문자열이 보입니다.
혹은 exiftool로 확인할 수 있습니다.
exiftool result.png
hex 디코딩을 하면 flag를 얻을 수 있습니다.
'CTF' 카테고리의 다른 글
[SCTF 2022] DocxArchive (0) | 2023.05.20 |
---|---|
[SCTF 2022] Yet Another Injection (0) | 2023.05.20 |
[WaniCTF 2023] Screen shot (0) | 2023.05.10 |
[WaniCTF 2023] Prompt (0) | 2023.05.07 |
[WaniCTF 2023] Extract Service 2 (0) | 2023.05.06 |