跳到主要内容

PHPass 哈希与 Hashcat 模式 400

PHPass 是很多 PHP 应用使用过的密码哈希方案。常见特征是哈希以 $P$$H$ 开头,例如:

$P$BuyKfLj9xZ0iLez6SomJNOLGx.7g.U/

在靶场中,一旦通过 LFI、WebShell、备份文件或数据库泄露拿到用户表,就可以离线尝试破解这类哈希。

识别方法

特征含义
$P$PHPass portable hash
$H$phpBB / PHPass 变体
长度约 34 字符常见 PHPass 字符串长度
数据库字段名 password常见于 Typecho、WordPress 等 PHP 应用

Hashcat 模式

PHPass 对应 Hashcat 模式:

-m 400

最小命令:

hashcat -m 400 hashes.txt /usr/share/wordlists/rockyou.txt
hashcat -m 400 --show hashes.txt

如果 rockyou 是 gzip 压缩包,也可以直接管道输入:

zcat /usr/share/wordlists/rockyou.txt.gz | hashcat -m 400 hashes.txt --force
hashcat -m 400 --show hashes.txt

单哈希复现

echo '$P$BuyKfLj9xZ0iLez6SomJNOLGx.7g.U/' > phpass.txt
zcat /usr/share/wordlists/rockyou.txt.gz | hashcat -m 400 phpass.txt --force
hashcat -m 400 --show phpass.txt

输出示例:

$P$BuyKfLj9xZ0iLez6SomJNOLGx.7g.U/:2boobies

取证位置

应用常见位置
Typecho SQLitetypecho_users.password
Typecho MySQLtypecho_users.password
WordPresswp_users.user_pass
备份数据库.sql.db.bak.sqlite

防坑点

  • PHPass 不是 MD5,不能用 -m 0
  • 哈希里的 $ 需要用单引号保护,避免被 Shell 当变量展开。
  • Web 用户密码破解后,不一定只能登录后台,也要尝试 SSH、FTP、数据库和复用场景。
  • 破解失败时,先确认哈希是否完整,数据库导出是否被截断。

防御建议

  1. 不要把数据库文件、SQL 备份、SQLite 文件放在 Web 可读目录。
  2. WebShell 或 LFI 事件后,应视为用户哈希已经泄露,立即轮换密码。
  3. 对后台和 SSH 使用不同密码,避免哈希破解后横向移动。
  4. 使用现代密码哈希方案,并设置足够强的用户密码策略。

来源案例

  • HackMyVM Type:通过 Typecho 主题 WebShell 下载 SQLite 数据库,破解 plugugly 的 PHPass 哈希后 SSH 登录。