【渗透整理】OWASP Top 10

补坑

找实习遇到的坑,写在这里给自己加深印象。今天给面试问蒙了,思路都不清楚,不知道自己说了个啥,让我自闭一会。。。

什么是 OWASP Top 10

OWASP(开放式Web应用程序安全项目)的工具、文档、论坛和全球各地分会都是开放的,对所有致力于改进应用程序安全的人士开放,其最具权威的就是“10项最严重的Web 应用程序安全风险列表” ,总结了Web应用程序最可能、最常见、最危险的十大漏洞,是开发、测试、服务、咨询人员应知应会的知识。

2017

Top 1 :注入

原理:
将不安全的命令作为命令发送给解析器,会产生类似于SQL注入、NoSQL注入、OS注入和LDAP注入(轻量目录访问协议) 的缺陷,攻击者可以构造恶意数据通过注入缺陷的解析器执行没有权限的非预期命令或访问数据。

SQL注入原理:
所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。SQL注射能使攻击者绕过认证机制,完全控制远程服务器上的数据库。SQL注入的原理是将SQL代码伪装到输入参数中,传递到服务器解析并执行的一种攻击手法。也就是说,在一些对server端发起的请求参数中植入一些SQL代码,server端在执行SQL操作时,会拼接对应参数,同时也将一些SQL注入攻击的“SQL”拼接起来,导致会执行一些预期之外的操作。

危害:
1、导致用户信息被泄露
2、服务器被入侵,获取服务器权限

攻击手段:
SQL注入基本步骤:

  1. 判断是什么类型注入,有没有过滤关键字,是否能绕过
  2. 确定存在注入的表的列数以及表中数据那些字段可以显示出来
  3. 获取数据库版本,用户,当前连接的数据库等信息
  4. 获取数据库中所有表的信息
  5. 获取某个表的列字段信息
  6. 获取相应表的数

常用工具:sqlmap,Pangolin,Havij

防御手段:
1.对参数实行预编译,转义,填充等操作
2.严格约束参数校验
3.将提交的参数转换成字符串
4.防止数据库缓冲区溢出
5.权限最小化

Top 2 :失效的身份认证和会话管理

原理:
通过错误使用应用程序的身份认证和会话管理功能,攻击者能够破译密码、密钥或会话令牌,或者暂时或永久的冒充其他用户的身份。

危害:
1.用户被冒名顶替
2.数据泄露
3.敏感信息泄露

防御手段:
1.使用强大的认证和会话管理控制-OWASP的应用安全验证标准
2.使用简单集中标准化的认证方式
3.确保SSL在任何时候都会保护会话
4.使用会话管理功能

Top 3 :敏感数据泄露

介绍:
一般我们的敏感信息包括密码、财务数据、医疗数据等,由于web应用或者API未加密或不正确的保护敏感数据,这些数据极易遭到攻击者利用,攻击者可能使用这些数据来进行一些犯罪行为,因此,未加密的信息极易遭到破坏和利用,我们应该加强对敏感数据的保护,web应用应该在传输过程中数据、存储的数据以及和浏览器的交互时的数据进行加密,保证数据安全。

原理:
攻击者不是直接攻击密码,而是在传输过程中或从客户端窃取密钥、发起中间人攻击,或从服务器端窃取明文数据,还有可能由于管理员的安全性不高,使用弱密码,被攻击者暴力破解,进入到数据库拿到敏感信息。

危害:
敏感信息泄露

防御手段:
1.对系统处理、存储或传输的数据分类,并根据分类进行访问控制
2.对重要数据进行加密存放,数据在传输过程中使用密文进行传输
3.及时清理没有用的敏感数据,只能使用指定用户访问敏感数据

Top 4 :外部实体 XXE

介绍:
XXE 全称为XML External Entity attack 即XML(可扩展标记语言) 外部实体注入攻击,早期或配置错误的XML处理器评估了XML文件外部实体引用,攻击者可以利用这个漏洞窃取URI(统一资源标识符)文件处理器的内部文件和共享文件、监听内部扫描端口、执行远程代码和实施拒绝服务攻击。

原理:
如果攻击者可以上传XML文档或者在XML文档中添加恶意内容,通过易受攻击的代码、依赖项或集成,他们就能够攻击含有缺陷的XML处理器。XXE缺陷可用于提取数据、执行远程服务器请求、扫描内部系统、执行拒绝服务攻击和其他攻击。

攻击手段:
通过提交或者修改XML文档,添加恶意代码进行攻击

防护手段:
1.尽可能使用简单的数据格式(如:JSON),避免对敏感数据进行序列化
2.禁止使用外部实体,例如libxml_disable_entity_loader(true)
3.过滤用户提交的XML数据,防止出现非法内容

Top 5 :失效的访问控制

介绍:
访问控制:即保护资源不被非法访问和使用,目前应用最多的是基于角色的访问控制机制。失效的访问控制就是攻击者通过各种手段提升自己的权限,越过访问控制,使访问控制失效,这样攻击者就可以冒充用户、管理员或拥有特权的用户,或者创建、访问、更新或删除任何记录

原理:
通过身份验证的用户,可以访问其他用户的相关信息,没有实施恰当的访问权限。攻击者可以利用这个漏洞去查看未授权的功能和数据。

危害:
访问用户的账户、敏感文件、获取和正常用户相同的权限等

防御手段:
1.除公有资源外,其他资源默认情况下拒绝访问
2.使用一次性的访问控制机制,并在整个应用程序中不断重用它们
3.建立访问控制模型以强制执行所有权记录,而不是接受用户创建、读取、更新或删除的任何记录
4.当用户注销后,服务器上的JWT令牌应失效

Top 6 :安全配置错误

原理:
安全配置错误是比较常见的漏洞,由于操作者的不当配置(默认配置,临时配置,开源云存储,http标头配置,以及包含敏感信息的详细错误),导致攻击者可以利用这些配置获取到更高的权限,安全配置错误可以发生在各个层面,包含平台、web服务器、应用服务器、数据库、架构和代码。

危害:
服务器受到入侵,root权限泄露等

防御手段:
1.使用的服务不包含任何不必要的功能、组件、文档和示例。移除或不安装不适用的功能和框架
2.及时检测系统服务版本,为已发现的漏洞打补丁
3.在对文件等分配权限时,根据其工作需要采取最小权限原则的方法

Top 7 :跨站脚本 XSS

介绍:
xss攻击全称为跨站脚本攻击,当应用程序的新网页中包含不受信任的、未经恰当验证、转义的数据或可以使用HTML、JavaScript的浏览器API更新的现有网页时,就会出现xss漏洞,跨站脚本攻击是最普遍的web应用安全漏洞,甚至在某些安全平台都存在xss漏洞。

原理:
1.反射型XSS
反射型XSS又称为非持久型XSS,这种攻击方式往往具有一次性。
攻击原理:攻击者向服务器一个带有恶意JS代码的请求,服务器会向攻击者返回一个带有JS脚本的页面,攻击者将带有恶意JS脚本的页面发送给目标用户,用户点击后就会触发XSS漏洞,从而被盗取cookie值或者被重定向到第三方网站。
2.存储型XSS
存储型XSS又称为持久性XSS,攻击脚本将被永久地存放到目标服务器的数据库或者文件中,具有很高的隐蔽性。
攻击原理:攻击者向服务器一个带有恶意JS代码的请求,服务器会先在服务器上存储一份,然后会向攻击者返回一个带有JS脚本的页面。此时,当其他用户登录这个网站时,都会被盗取cookie值或者被重定向到第三方网站。
3.DOM型XSS
DOM全称Document Object Model,DOM型XSS实际上是一种特殊类型的反射型XSS,它是一种基于DOM文档对象模型的一种漏洞
攻击原理:攻击者向服务器一个带有恶意JS代码的请求,服务器的响应不会以任何形式包含攻击者的脚本。当用户的浏览器处理这个响应时,DOM对象就会处理XSS代码,导致存在XSS漏洞。

危害:
1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号
2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
3、盗窃企业重要的具有商业价值的资料
4、非法转账
5、强制发送电子邮件
6、网站挂马
7、控制受害者机器向其它网站发起攻击
8、可以获得管理员凭据,直接获取后台权限
9、造成蠕虫文件,在一些网站进行传播

防御手段:
1、基于代码修改的防御
和SQL注入防御一样,XSS攻击也是利用了Web页面的编写疏忽,所以还有一种方法就是从Web应用开发的角度来避免:
步骤1、对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。
步骤2、实现Session标记(session tokens)、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行。
步骤3、确认接收的的内容被妥善的规范化,仅包含最小的、安全的Tag(没有javascript),去掉任何对远程内容的引用(尤其是样式表和javascript),使用HTTP only的cookie。
当然,如上操作将会降低Web业务系统的可用性,用户仅能输入少量的制定字符,人与系统间的交互被降到极致,仅适用于信息发布型站点。并且考虑到很少有Web编码人员受过正规的安全培训,很难做到完全避免页面中的XSS漏洞。

Top 8 :跨站请求伪造 CSRF

原理:
利用了网站允许攻击者预测特定操作的所有细节这一特点。由于浏览器自动发送会话cookie等认证凭证,导致攻击者能够创建恶意的web页面来伪造请求。这些伪造的请求很难和合法的请求区分开。CSRF通过伪装来自受信任用户的请求来利用受信任的网站。

Top 9 :使用含有已知漏洞的组件

原理:
组件(eg:库、框架或其他软件模块)拥有应用程序相同的权限,如果应用程序中含有已知漏洞,攻击者可以利用漏洞获取数据或接管服务器。同时,使用这些组件会破坏应用程序防御,造成各种攻击产生严重的后果。

防御手段:
1.标识正在使用的所有组件和版本,包括所有依赖
2.及时关注这些组件的安全信息并保证他们是最新的
3.建立使用组件的安全策略,禁止使用未经安全评估的组件
4.在适当情况下,对组件进行安全封装,精简不必要的功能,封装易受攻击部分

Top 10 :未验证的重定向和转发

原理:
攻击者通过诱使受害人去点击未经验证的重定向链接,从而利用不安全的转发绕过安全检测。攻击者通过重定向可以试图安装恶意软件或者诱使受害人泄露密码等敏感信息,通过转发可以绕过访问控制。

防御手段:
1.避免使用重定向和转
2.如果使用了重定向和转发,则不要在确定目标时涉及到用户参数
3.如果无法避免使用目标参数,则应确保目标参数值对于当前用户是有效的并已授权。


【以下是一些变动】

Top : 文件上传漏洞

原理:
利用文件上传漏洞获取文件的权限,测试漏洞并最终使用上传的漏洞getshell。

危害:
服务器受到入侵

攻击手段:
通过上传木马文件,拿到服务器的shell

防御手段:
1.严格限制允许上传文件的格式
2.黑白名单过滤
3.内容过滤
4.文件重命名等

Top :文件包含漏洞

原理:
文件包含函数加载的参数没有经过过滤或者严格定义,可以被用户控制,包含了其他恶意文件,导致执行了非预期的代码。

攻击手段:
可利用途径
1.上传图片:图片包含getshel
2.读文件:读取php文
3.包含日志文件getshel
4.包含/proc/self/environ/文件getshel
5.有phpinfo可包含临时文
6.包含data://或php://inout等伪协议(需要allow_url_include=On

https://www.cnblogs.com/appear001/p/11149996.html

Top :命令执行漏洞

原理:
1、命令执行(Command Execution)漏洞即黑客可以直接在Web应用中执行系统命令,从而获取敏感信息或者拿下shell权
2、命令执行漏洞可能造成的原因是Web服务器对用户输入命令安全检测不足,导致恶意代码被执
3、更常见的命令执行漏洞是发生在各种Web组件,包括Web容器、Web框架、CMS软件、安全组件等

Top :不安全的反序列化

原理:
序列化即是把对象转变为字节流,存放在内存、文件数据库中,而反序列化即是把字节流转变为对象。该漏洞的原因出自于如果应用对恶意构造的用户输入的数据进行反序列化,这样就会产生非预期的对象,从而有可能产生远程代码执行。或者应用中存在可以在反序列化过程中或者之后被改变行为的类,则攻击者可以通过改变应用逻辑或者实现远程代码执行攻击。我们将其称为对象和数据结构攻击。

危害:
1.远程代码执行
2.重放攻击

防御手段:
1.最安全的方法是不接受来自不受信源的序列化对象,或使用只允许原始数据类型的序列化媒体
2.反序列化之前,先进行严格的数据类型校验。由于校验规则容易被攻击者探索出来,进而容易被绕过,因此防御不能仅依赖这一个手段,但可以作为完整性校验防御方案的补充
3.隔离运行那些在低特权环境中反序列化的代码
4.对反序列化过程进行详尽的日志记录,监控反序列化过程,在发现疑似反序列化攻击时进行警报

Top :不足的日志记录和监控

原理:
攻击者依靠监控的不足和响应的不及时来达成他们的目标而不被知晓。比如日志没有记录登录失败,那么攻击者可能就可以通过暴力破解多次进行登录尝试,但是日志中却没有记录。这就可能让攻击者成功入侵系统并隐匿自己的行踪。这个看似危害不大但却是十分严重的危害,因为一个日志系统不完善的服务器很容易遭受攻击并且在遭受攻击后无法判断攻击来源,这样就无法做出相应的防御,很可能再次遭受同样的攻击。

防御手段:
1.确保所有登录、访问控制失败、输入验证失败能够被记录到日志中去,并保留足够的用户上下文信息,以识别可疑或恶意帐户,并为后期取证预留足够时间
2.建立有效的监控和告警机制,使可疑活动在可接受的时间内被发现和应对
3.完善日志系统,使其可以监控各种日志信息
4.及时对日志系统进行备份,并保存足够长时间

by 久违 2020.4.28
多记多写多摘抄,好记忆不如烂笔头

猜你喜欢

转载自blog.csdn.net/weixin_42742658/article/details/105815889