- 扫描
使用nmap扫描。
Nmap -F www.testfire.net
开放端口:25,80,110,443,8080
使用nikto进行扫描
Nikto -host www.testfire.net
根据扫描结果,该网站缺少反点击劫持头 (X-Frame-Options):
缺少XSS保护头 (X-XSS-Protection),存在xss漏洞
缺少X-Content-Type-Options头,导致浏览器根据可以MIME类型解释内容。
使用zaproxy扫描:
二、漏洞验证
1、弱口令登录
尝试对用户名和密码弱口令爆破,爆破成功
2、搜索框可能存在xss漏洞
尝试在搜索框输入xss攻击代码<script>alert("2100301207cty")</script>,使其弹出对话框,xss攻击成功
Feedback这里,在用户名输入框输入<script>alert("2100301207cty")</script>,xss攻击成功。
3、CSRF漏洞
用burp抓包,尝试修改密码。可以看到返回执行结果显示“HTTP/1.1 200 OK”,通过CSRF修改密码成功。
4、逻辑漏洞
Transfer Funds这里可能会有逻辑漏洞,用burp抓包。尝试修改转账金额,修改成功。
5、sql注入
username:a 'OR 1=1--+
在这里可以把密码改了
四、总结和修复建议
强化身份验证:
实施复杂密码策略,鼓励用户使用包含字母、数字和特殊字符的强密码。
引入账户锁定机制,限制登录尝试次数,防止暴力破解攻击。
防御 CSRF 攻击:
在关键操作上实施 CSRF 令牌机制,确保每个请求都带有有效的 CSRF 令牌,以防止未授权的修改操作。
输入验证和过滤:
对用户输入的数据进行过滤,去除其中的恶意代码或特殊字符。例如,可以对用户提交的数据进行HTML编码,以防止恶意用户通过在表单中插入恶意的HTML或JavaScript代码来发起CSRF攻击。对于表单提交的数据,可以验证其是否为合法的邮箱地址、电话号码等。这样可以防止恶意用户通过篡改表单数据来发起CSRF攻击。
对于 Transfer Funds 功能,实施更严格的逻辑控制,确保转账金额等关键信息受到正确的验证和授权。
防止SQL注入,最有效的方法就是限制输入、参数化传递 用户提交的数据,显然这里并没有进行有效防护,测试发现登录页面存在SQL注入漏洞。