在Typecho发布1.2.1-rc版本修复了作者评论的URL字段中的一个XSS攻击漏洞后,我发现作者的email字段中仍然存在漏洞。我能够绕过验证器并进行存储型 XSS 攻击,可以利用它来窃取 cookie。
为了重现该问题,我构造了一个评论提交 POST 请求,并将电子邮件字段设置为以下值:
"></a><script>alert('hacked')</script>"@example.com
受影响的版本
由 FaithPatrick 在 GitHub上反馈该问题 issues#1560 issues#1561
根本原因位于 var/Typecho/Validate.php . 该filter_var()函数不应该用于验证,因为它只返回所提供的 URL 或电子邮件的净化副本,这不够严格。
考虑到您网站的安全,站长建议使用Typecho(1.2.0 ~ 1.2.1-rc) 的用户暂时关闭评论,直到问题在新版本中完全修复。或使用临时解决方案
可以将 var/Typecho/Validate.php 第99行临时使用则表达式替换使用,这只针对邮箱
return filter_var($str, FILTER_VALIDATE_EMAIL) !== false;
改为
return preg_match("/^[A-Za-z0-9]+([_\.][A-Za-z0-9]+)*@([A-Za-z0-9\-]+\.)+[A-Za-z]{2,6}$/",$str) === 1;
瑞龙大人前来学习
厉害啊,居然能发现XSS漏洞(话说typecho居然还有这种漏洞,惊了)
厉害
什