Configuration

AFL++ 설치 해주는 Dockerfile (Fuzzing101 exercise 1 자동화)

JUNFUTURE 2024. 6. 25. 00:34
# 베이스 이미지로 Ubuntu 사용
FROM ubuntu:20.04

# 필수 패키지 설치
RUN apt-get update && apt update -y
RUN apt install build-essential gcc python3-dev automake git flex bison libglib2.0-dev libpixman-1-dev python3-setuptools wget lld-12 llvm-12 llvm-12-dev clang-12 -y
RUN apt install gcc-$(gcc --version|head -n1|sed 's/.* //'|sed 's/\..*//')-plugin-dev libstdc++-$(gcc --version|head -n1|sed 's/.* //'|sed 's/\..*//')-dev -y
RUN apt-get clean

# 작업 디렉토리 생성
RUN mkdir /fuzzing_xpdf

# xpdf 다운로드 및 압축 해제
WORKDIR /fuzzing_xpdf
RUN wget https://dl.xpdfreader.com/old/xpdf-3.02.tar.gz \
    && tar -xvzf xpdf-3.02.tar.gz

# AFL++ 클론 및 설치
RUN git clone https://github.com/AFLplusplus/AFLplusplus && cd AFLplusplus \
    && export LLVM_CONFIG="llvm-config-12" \
    && make distrib \
    && make install

# 환경 변수 설정
ENV LLVM_CONFIG="llvm-config-12"
ENV PATH="/aflplusplus:$PATH"

# AFL++ 컴파일러를 이용한 컴파일 환경 설정
WORKDIR /fuzzing_xpdf/xpdf-3.02
RUN export CC=/aflplusplus/afl-clang-fast \
    && export CXX=/aflplusplus/afl-clang-fast++ \
    && ./configure --prefix="/fuzzing_xpdf/install/"

# xpdf 컴파일 및 설치
RUN make && make install

# PDF 예제 파일 다운로드
RUN mkdir /fuzzing_xpdf/pdf_examples
WORKDIR /fuzzing_xpdf/pdf_examples
RUN wget https://github.com/mozilla/pdf.js-sample-files/raw/master/helloworld.pdf \
    && wget https://www.melbpc.org.au/wp-content/uploads/2017/10/small-example-pdf-file.pdf

# 디폴트 명령어 설정
CMD ["bash"]

 

docker build -t fuzzing_xpdf .
docker run -it fuzzing_xpdf