Skip to content

Instantly share code, notes, and snippets.

@z0rs
Last active August 6, 2025 07:33
Show Gist options
  • Save z0rs/c33dcc52e247835ee1c31a4bc465b3a4 to your computer and use it in GitHub Desktop.
Save z0rs/c33dcc52e247835ee1c31a4bc465b3a4 to your computer and use it in GitHub Desktop.
name: Full Recon

on:
  push:
    branches: [master]

jobs:
  full-recon:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Setup Go 1.23
        uses: actions/setup-go@v5
        with:
          go-version: '1.23'

      - name: Install Dependencies & Tools
        run: |
          set -e
          sudo apt-get update
          sudo apt-get install -y wget unzip jq git curl

          # Install Go tools
          go install github.com/projectdiscovery/httpx/cmd/httpx@latest && sudo mv ~/go/bin/httpx /usr/bin/
          go install github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest && sudo mv ~/go/bin/subfinder /usr/bin/
          go install github.com/projectdiscovery/dnsx/cmd/dnsx@latest && sudo mv ~/go/bin/dnsx /usr/bin/
          go install github.com/tomnomnom/qsreplace@latest && sudo mv ~/go/bin/qsreplace /usr/bin/
          go install github.com/lc/gau/v2/cmd/gau@latest && sudo mv ~/go/bin/gau /usr/bin/
          go install github.com/cybercdh/assetfinder@cybercdh && sudo mv ~/go/bin/assetfinder /usr/bin/

          # Subjack (khusus)
          go install github.com/haccer/subjack@latest
          cp $(go env GOPATH)/bin/subjack ./subjack

          # Download subjack fingerprint
          mkdir -p subjack-data
          curl -sL https://raw.githubusercontent.com/haccer/subjack/master/fingerprints.json -o subjack-data/fingerprints.json

          # Install nuclei (latest release)
          LATEST_VERSION=$(curl -s https://api.github.com/repos/projectdiscovery/nuclei/releases/latest | jq -r '.tag_name')
          CLEAN_VERSION=${LATEST_VERSION#v}
          wget https://github.com/projectdiscovery/nuclei/releases/download/${LATEST_VERSION}/nuclei_${CLEAN_VERSION}_linux_amd64.zip
          unzip -o nuclei_${CLEAN_VERSION}_linux_amd64.zip
          sudo mv nuclei /usr/bin/
          sudo chmod +x /usr/bin/nuclei
          rm -rf nuclei* *.md

      - name: Vulnerability Scan
        env:
          TARGET: ${{ secrets.HOST }}
        run: |
          set -e
          mkdir -p results

          TODAY=$(date +%F)

          echo "[*] Subdomain Enumeration..."
          subfinder -d $TARGET -silent > sub1.txt
          assetfinder --subs-only $TARGET | grep "\.${TARGET}$" > sub2.txt
          cat sub1.txt sub2.txt | sort -u > results/${TARGET}-subdomains.txt

          echo "[*] Probing live hosts..."
          cat results/${TARGET}-subdomains.txt | httpx -silent \
            -ports 80,443,8080,8443,3000,5000,8000,8888,10000,5601,9200,1337,7001,7000,9000 \
            -title -td -tech-detect -web-server -ip -status-code -method \
            -probe -follow-redirects -random-agent -fr \
            -rate-limit 500 -timeout 10 -retries 3 -location \
            | tee results/${TARGET}-live-full.txt | awk '{print $1}' > results/${TARGET}-live.txt

          echo "[*] Resolving DNS..."
          cat results/${TARGET}-live.txt | dnsx -silent -nc -a -cname -resp > results/${TARGET}-resolved.txt

          echo "[*] Running nuclei scan..."
          cat results/${TARGET}-resolved.txt | sort -u | nuclei -as \
            -H "User-Agent: Mozilla/5.0 (X11; Linux x86_64)" \
            -rl 300 -c 100 -retries 3 -timeout 15 \
            -stats -si 10 -sresp \
            -t dns/ -t cves/ -t misconfiguration/ -t exposures/ \
            -o results/nuclei-${TARGET}-${TODAY}.txt

          echo "[*] Preparing input for subjack..."
          grep -E "^[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$" results/${TARGET}-resolved.txt | sort -u > tmp-subjack-input.txt

          echo "[*] Running subjack..."
          ./subjack -w tmp-subjack-input.txt \
            -t 50 -timeout 10 -ssl \
            -c subjack-data/fingerprints.json \
            -v -o results/subjack-${TARGET}.txt

      - name: Set Git Identity
        run: |
          git config --global user.email "${{ secrets.EMAIL_ADDRESS }}"
          git config --global user.name "${{ secrets.USER_NAME }}"

      - name: Commit & Push
        run: |
          git add results/
          git commit -m "🔎 Recon Update $(date -u)" --no-verify || echo "No changes"
          git push origin master || true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment