OWASP Top 10十大风险——解析及实例
A1: 2017-注入
将不受信任的数据作为命令或查询的一部分发送到解析器时,会产生诸如SQL注入、NoSQL注入、OS注入和LDAP注入的注入缺陷。攻击者的恶意数据可以诱使解析器在没有适当授权的情况下执行非预期命令或访问数据。
在这里我分享一下SQL注入有回显情况下最基础的Union注入语句:
①查询该数据表的字段数
order by 1-99
②查看回显结果
id =-1 union select 1,2,3
③查看数据库
id =-1 union select 1,database(),3
④查看数据表
在上述database()的位置替换为
(select table_name from information_schema.tables where table_schema = 'sql ’ limit 0,1)
⑤查看数据列
(select column_name from information_schema.columns where table_schema =‘sql’ and table_name = ‘emial’ limit 0,1)
⑥查看对应数据
(select emial_id from sql.emial limit 0,1)
举个在线靶场的SQL注入栗子:
注入语句
1 and 1=2 UNION SELECT 1,database(),column_name,4 from information_schema.columns where table_schema=‘mozhe_Discuz_StormGroup’ and table_name=‘StormGroup_member’ limit 0,1
页面回显
A2: 2017-失效的身份认证
通常,通过错误使用应用程序的身份认证和会话管理功能,攻击者能够破译密码、密钥或会话令牌,或者利用其它开发缺陷来暂时性或永久性冒充其他用户的身份。
在黑客笔记靶场中,我们只需要拿到对手的Cookie,我们可以不通过用户名和密码,直接在请求中带上对手的Cookie,直接伪造对手提交请求,所以保护好自己Cookie很重要。
A3: 2017-敏感数据泄露
许多Web应用程序和API都无法正确保护敏感数据,例如:财务数据、医疗数据和PII数据。攻击者可以通过窃取或修改未加密的数据来实施信用卡诈骗、身份盗窃或其他犯罪行为。未加密的敏感数据容易受到破坏,因此,我们需要对敏感数据加密,这些数据包括:传输过程中的数据、存储的数据以及浏览器的交互数据。
在以前会发现很多网站的账户登录页面,账户名和密码是直接明文传输的,我们一抓包就能看见。而现在这种情况少了很多,尤其是大厂基本上都不会是明文传输
这里以QQ登录页面为例,试试看能不能抓包到用户名和密码?
这里我用户名输入:test@qq.com 密码输入:123456
仔细观察,并未发现有关于用户名和密码的关键信息
A4: 2017-XML 外部实体(XXE)
许多较早的或配置错误的XML处理器评估了XML文件中的外部实体引用。攻击者可以利用外部实体窃取使用URI文件处理器的内部文件和共享文件、监听内部扫描端口、执行远程代码和实施拒绝服务攻击。
[root@host myzoo]# cat ailx10.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root[
<!ENTITY name "ailx10">]>
<root>
&name;
</root>
通过SYSTEM "file:///etc/passwd"获取隐私信息。
libxml2.9.0以后,默认不解析外部实体。也就是说XML外部实体攻击成了个保护动物,很难再见到了
A5: 2017-失效的访问控制
未对通过身份验证的用户实施恰当的访问控制。攻击者可以利用这些缺陷访问未经授权的功能或数据,例如:访问其他用户的帐户、查看敏感文件、修改其他用户的数据、更改访问权限等。
在攻防世界靶场中,假如一个网页不添加任何访问限制,只是隐藏的话,那么只要在浏览器地址栏中输入该页面的地址,就能对其进行访问,如直接访问PHP页面
A6: 2017-安全配置错误
安全配置错误是最常见的安全问题,这通常是由于不安全的默认配置、不完整的临时配置、开源云存储、错误的HTTP 标头配置以及包含敏感信息的详细错误信息所造成的。因此,我们不仅需要对所有的操作系统、框架、库和应用程序进行安全配置,而且必须及时修补和升级它们。
比如说之前某大型连锁酒店数据库被脱库事件。这个事件的原因就是安全配置错误,据说是该酒店公司员工一时疏忽将管理员密码上传到了github上。
A7: 2017-跨站脚本(XSS)
当应用程序的新网页中包含不受信任的、未经恰当验证或转义的数据时,或者使用可以创建HTML或JavaScript 的浏览器API 更新现有的网页时,就会出现XSS 缺陷。XSS 让攻击者能够在受害者的浏览器中执行脚本,并劫持用户会话、破坏网站或将用户重定向到恶意站点。
比如我们输入,
<script>alert('xss')</script>
则页面弹窗
其实XSS漏洞除了可以用来显示弹窗之外,还可以盗取Cookie、会话劫持,甚至还可以专门写一个XSS蠕虫
A8: 2017-不安全的反序列化
不安全的反序列化会导致远程代码执行。即使反序列化缺陷不会导致远程代码执行,攻击者也可以利用它们来执行攻击,包括:重播攻击、注入攻击和特权升级攻击。
[root@host myzoo]# cat ailx10.php
<?php #黑客笔记靶场 反序列化 临时演示文件
class AI
{
var $hack='hey hack';
function __destruct()
{
echo $this->hack;
}
}
$ailx10 = $_GET['hack'];
$ailx11 = unserialize($ailx10);
?>
可以看到反序列化输出了浏览器中我们自主可控的字符串:ailx10studying 。
A9: 2017-使用含有已知漏洞的组件
一些含有漏洞的组 件组件(例如:库、框架和其他软件模块)拥有和应用程序相同的权限。如果应用程序中含有已知漏洞的组件被攻击者利用,可能会造成严重的数据丢失或服务器接管。同时,使用含有已知漏洞的组件的应用程序和API可能会破坏应用程序防御、造成各种攻击并产生严重影响。
对于我们来说,也就是适时打补丁。比如之前勒索病毒爆发后,各安全平台后续推出防勒索病毒的补丁,打上就好
A10: 2017-不足的日志记录和监控
不足的日志记录和监控,以及事件响应缺失或无效的集成,使攻击者能够进一步攻击系统、保持持续性或转向更多系统,以及篡改、提取或销毁数据。大多数缺陷研究显示,缺陷被检测出的时间超过200天,且通常通过外部检测方检测,而不是通过内部流程或监控检测。
对于公司来说,也就是做好审计,别都被DDos攻击一下了,公司的相关人员却浑然不知。
本文参考自OWASP Top 10 2017-RC1官方文档以及知乎大V alix10有关于OWASP Top 10十大风险的知识专栏。非常感谢来自大牛的知识分享。
以上文章,作为自己的学习笔记,仅供参考
- 点赞
- 收藏
- 关注作者
评论(0)