diff --git a/.github/workflows/cicd-to-dockerhub.yml b/.github/workflows/cicd-to-dockerhub.yml new file mode 100644 index 0000000..a7cfbf9 --- /dev/null +++ b/.github/workflows/cicd-to-dockerhub.yml @@ -0,0 +1,36 @@ +name: ci-to-dockerhub + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Login to Docker Hub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v1 + + - name: Build and push + id: docker_build + uses: docker/build-push-action@v2 + with: + context: ./ + file: ./Dockerfile + push: true + tags: ${{ secrets.DOCKER_HUB_USERNAME }}/feroxbuster:latest + + - name: Image digest + run: echo ${{ steps.docker_build.outputs.digest }} diff --git a/Dockerfile b/Dockerfile index 6b0f0a9..fd67cf7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,14 +1,27 @@ -FROM alpine:latest +# Image: alpine:3.14.2 +FROM alpine@sha256:69704ef328d05a9f806b6b8502915e6a0a4faa4d72018dc42343f511490daf8a as build LABEL maintainer="wfnintr@null.net" -RUN sed -i -e 's/v[[:digit:]]\..*\//edge\//g' /etc/apk/repositories && apk upgrade --update-cache --available +RUN sed -i -e 's/v[[:digit:]]\..*\//edge\//g' /etc/apk/repositories \ + && apk upgrade --update-cache --available -# download default wordlists -RUN apk add --no-cache --virtual .depends subversion font-noto-emoji && \ - svn export https://github.com/danielmiessler/SecLists/trunk/Discovery/Web-Content /usr/share/seclists/Discovery/Web-Content && \ - apk del .depends +# Download latest release +RUN wget https://github.com/epi052/feroxbuster/releases/latest/download/x86_64-linux-feroxbuster.zip -qO feroxbuster.zip \ + && unzip -d /tmp/ feroxbuster.zip feroxbuster \ + && chmod +x /tmp/feroxbuster \ + && wget https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/raft-medium-directories.txt -O /tmp/raft-medium-directories.txt -# install latest release -RUN wget https://github.com/epi052/feroxbuster/releases/latest/download/x86_64-linux-feroxbuster.zip -qO feroxbuster.zip && unzip -d /usr/local/bin/ feroxbuster.zip feroxbuster && rm feroxbuster.zip && chmod +x /usr/local/bin/feroxbuster +# Image: alpine:3.14.2 +FROM alpine@sha256:69704ef328d05a9f806b6b8502915e6a0a4faa4d72018dc42343f511490daf8a as release + +COPY --from=build /tmp/raft-medium-directories.txt /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt +COPY --from=build /tmp/feroxbuster /usr/local/bin/feroxbuster + +RUN adduser \ + --gecos "" \ + --disabled-password \ + feroxbuster + +USER feroxbuster ENTRYPOINT ["feroxbuster"] diff --git a/README.md b/README.md index 820e87d..6499f96 100644 --- a/README.md +++ b/README.md @@ -238,31 +238,20 @@ pacman -S feroxbuster > The following steps assume you have docker installed / setup -First, clone the repository. +Thanks to github user @EONRaider, we have an official docker image pushed to the docker hub with each new release. -``` -git clone https://github.com/epi052/feroxbuster.git -cd feroxbuster -``` - -Next, build the image. - -``` -sudo docker build -t feroxbuster . -``` - -After that, you should be able to use `docker run` to perform scans with `feroxbuster`. +You can simply jump right into usage with `sudo docker run epi052/feroxbuster ...`! #### Basic usage ``` -sudo docker run --init -it feroxbuster -u http://example.com -x js,html +sudo docker run --init -it epi052/feroxbuster -u http://example.com -x js,html ``` #### Piping from stdin and proxying all requests through socks5 proxy ``` -cat targets.txt | sudo docker run --net=host --init -i feroxbuster --stdin -x js,html --proxy socks5://127.0.0.1:9050 +cat targets.txt | sudo docker run --net=host --init -i epi052/feroxbuster --stdin -x js,html --proxy socks5://127.0.0.1:9050 ``` #### Mount a volume to pass in `ferox-config.toml` @@ -272,23 +261,23 @@ live in multiple locations and still be valid, so it's up to you how you'd like examples: ``` -sudo docker run --init -v $(pwd)/ferox-config.toml:/etc/feroxbuster/ferox-config.toml -it feroxbuster -u http://example.com +sudo docker run --init -v $(pwd)/ferox-config.toml:/etc/feroxbuster/ferox-config.toml -it epi052/feroxbuster -u http://example.com ``` ``` -sudo docker run --init -v ~/.config/feroxbuster:/root/.config/feroxbuster -it feroxbuster -u http://example.com +sudo docker run --init -v ~/.config/feroxbuster:/root/.config/feroxbuster -it epi052/feroxbuster -u http://example.com ``` Note: If you are on a SELinux enforced system, you will need to pass the `:Z` attribute also. ``` -docker run --init -v (pwd)/ferox-config.toml:/etc/feroxbuster/ferox-config.toml:Z -it feroxbuster -u http://example.com +docker run --init -v (pwd)/ferox-config.toml:/etc/feroxbuster/ferox-config.toml:Z -it epi052/feroxbuster -u http://example.com ``` #### Define an alias for simplicity ``` -alias feroxbuster="sudo docker run --init -v ~/.config/feroxbuster:/root/.config/feroxbuster -i feroxbuster" +alias feroxbuster="sudo docker run --init -v ~/.config/feroxbuster:/root/.config/feroxbuster -i epi052/feroxbuster" ``` ## ⚙️ Configuration