【渗透整理】OWASPTop10
⽬录
补坑
实习遇到的坑,写在这⾥给⾃⼰加深印象。今天给⾯试问蒙了,思路都不清楚,不知道⾃⼰说了个啥,让我⾃闭⼀会。。。
什么是 OWASP Top 10
OWASP(开放式Web应⽤程序安全项⽬)的⼯具、⽂档、论坛和全球各地分会都是开放的,对所有致⼒于改进应⽤程序安全的⼈⼠开放,其最具权威的就是“10项最严重的Web 应⽤程序安全风险列表” ,总结了Web应⽤程序最可能、最常见、最危险的⼗⼤漏洞,是开发、测试、服务、咨询⼈员应知应会的知识。
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.建⽴访问控制模型以强制执⾏所有权记录,⽽不是接受⽤户创建、读取、更新或删除的任何记录
js代码加密软件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
wwwblogs/appear001/p/11149996.html
Top :命令执⾏漏洞
原理:
1、命令执⾏(Command Execution)漏洞即⿊客可以直接在Web应⽤中执⾏系统命令,从⽽获取敏感信息或者拿下shell权
2、命令执⾏漏洞可能造成的原因是Web服务器对⽤户输⼊命令安全检测不⾜,导致恶意代码被执
3、更常见的命令执⾏漏洞是发⽣在各种Web组件,包括Web容器、Web框架、CMS软件、安全组件等
Top :不安全的反序列化
原理:
序列化即是把对象转变为字节流,存放在内存、⽂件数据库中,⽽反序列化即是把字节流转变为对象。该漏洞的原因出⾃于如果应⽤对恶意构造的⽤户输⼊的数据进⾏反序列化,这样就会产⽣⾮预期的对象,从⽽有可能产⽣远程代码执⾏。或者应⽤中存在可以在反序列化过程中或者之后被改变⾏为的类,则攻击者可以通过改变应⽤逻辑或者实现远程代码执⾏攻击。我们将其称为对象和数据结构攻击。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论