知识源:http://www.owasp.org.cn/owasp-project/OWASPTop102017v1.3.pdf 菜鸟教程
https://www.youtube.com/user/OWASPGLOBAL 演示视频
https://www.owasp.org/index.php/Category:OWASP_Application_Security_Verification_Standard_Project 顶级团队和高效组织请使用真正的标准
能影响整个web应用程序安全的漏洞成百上千。以下是开发人员必读资料
https://www.owasp.org/index.php/OWASP_Guide_Project OWASP开发者指南
https://www.owasp.org/index.php/OWASP_Cheat_Sheet_Series OWASP Cheat Sheet系列
如何有效地查找web应用程序和API中的漏洞信息,请阅读以下资料
https://www.owasp.org/index.php/OWASP_Testing_Project OWASP测试指南 OWASP Testing Guide 4.0
https://www.owasp.org/images/1/19/OTGv4.pdf OWASP测试指南 4.0 在线英文版
https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/zh/index.html 中文翻译版
从这里开始,以下部分为本人笔记,有疑问自己看原创去。
A1 注入 A2 失效的身份认证 A3 敏感数据泄露 A4 XML外部实体 A5 失效的访问控制 A6 安全配置错误 A7 XSS A8 不安全的反序列化 A9 使用含有已知漏洞的组件
A10 不足的日志记录和监控
A1注入
注入漏洞 https://www.owasp.org/index.php/Injection_Flaws
学习心理障碍:想太多。明明说在浏览器中将ID值改了,这多么简单,容易理解。你非要把精力放到其他你没学过的语句上面,并进一步搜索半天无法理解给自己带来无谓的压力。
攻击案例场景 场景#1:应用程序在下面存在脆弱性的SQL语句的构造中使用不 可信数据:
String query = "SELECT * FROM accounts WHERE custID='" + request.getParameter("id") + "'“;
场景#2:同样的,框架应用的盲目信任,仍然可能导致查询语句 的漏洞。(例如:Hibernate查询语言(HQL)):
Query HQLQuery = session.createQuery("FROM accounts WHERE custID='" + request.getParameter("id") + "'");
在这两个案例中,攻击者在浏览器中将“id”参数的值修改成: ’ or’1’=’1。例如: http://example.com/app/accountView?id=' or '1'='1 这样查询语句的意义就变成了从accounts表中返回所有的记录。 更危险的攻击可能导致数据被篡改甚至是存储过程被调用。
高效的学习法:读懂作者要表达的意思,这里的本质明明是要告诉你,关注ID,只要简单的web知识和布尔逻辑就可以理解。作者可没说,要你关注Query,SQL语句,JavaScript。
就算要学其他领域知识,也应该是找与安全结合的Query,SQL,JavaScript等教学。而不是通过本文的启发去搜索,琢磨着学,这是最笨的信息收集方式。有书你不看,要自己搜。蠢。活该入不了门。
A2失效的身份认证 攻击手法:证书填充,默认账号,暴力破解和字典组合,高级GPU破解工具,会话管理攻击(很容易成功,尤其是没过期的会话密匙)
证书填充 https://www.owasp.org/index.php/Credential_stuffing
多类型字典集合https://github.com/danielmiessler/SecLists 包括用户名,密码,URL,敏感数据模式,模糊测试负载,Web shell等等
很多老铁天天在叫,大佬求字典。在这里,大佬也求求你们了,推荐给你的资源看了没有?不要天天嘴巴上叫,我要学。身体却很诚实的在下一秒马上放弃了。这不比公司里没人教你,在有人引导你的情况下,你都不愿意去看看,可以视为你真的不要学了。
攻击案例场景
场景#1:凭证填充,使用已知密码的列表,是常见的攻击。如果 应用程序不限制身份验证尝试,则可以将应用程序用作密码oracle, 以确定凭证是否有效。
场景#2:大多数身份验证攻击都是由于使用密码作为唯一的因素。 依据最佳实践,最新的密码轮换和复杂性要求鼓励用户使用、重 用以及重用弱密码。建议组织在NIST-800-63(https://pages.nist.gov/800-63-3/sp800-63b.html)中停止这些实践,并 使用多因素身份验证。
场景#3:应用会话超时设置不正确。用户使用公共计算机访问应用程序。用户直接关闭浏览器选项卡就离开,而不是选择“注销”。攻击者一小时后使用同一个浏览器浏览网页,而当前用户状态仍然是经过身份验证的。
A3 敏感数据泄露
在传输过程中或从客户端(如:浏览器)窃取密钥、发起中间人攻击,或从服务器窃取明文数据。通常需要手动攻击。
A4 XML外部实体(XXE)
攻击案例场景 大量XXE缺陷已经被发现并被公开,这些缺陷包括嵌入式设备的 XXE缺陷。 XXE缺陷存在于许多意想不到的地方,这些地方包括 深嵌套的依赖项。最简单的方法是上传可被接受的恶意XML文件:
场景 #1:攻击者尝试从服务端提取数据:
<?xml versin ="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo> [
<!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM "file:///etc/passwd">]>
<foo>&xxe;</foo>
场景 #2:攻击者通过将上面的实体行更改为以下内容来探测服务器的专用网络:
<!ENTITY xxe SYSTEM "https://192.186.1.1/private">]>
场景 #3:攻击者通过恶意文件执行拒绝服务攻击(DDOS):
<!ENTITY xxe SYSTEM "file:///dev/random">]>
A5 失效的访问控制