访问控制篇

admin 2022年6月27日09:35:36评论18 views字数 2066阅读6分53秒阅读模式

访问控制篇



访问控制篇

访问控制


        如果说安全是一座城堡,访问控制则是城门上的守卫大将。每天,他都要面对很多来往过客。这些过客,鱼龙混杂,大将要做的不只是根据过客们的身份腰牌放行,还要检验身份腰牌的真伪,以及检查一下过客们的行李,防止非法人员带着有害物进入城堡。

       说到这里,访问控制的作用大致也说明白了,下面就做一个具体总结吧。


1


基于授权的访问控制


        通过以下授权机制,访问控制对主体进行鉴权,并控制放行或退回。具体策略如下:

  • 基于属性的访问控制

  • 于角色的访问控制

  • 基于任务的访问控制

  • 基于ACL的访问控制

  • 基于专家知识的访问控制

  • 基于其他规则的访问控制:如IP辅助决策、时间段等等


2


基于校验参数的访问控制


        不怕用户一看就不合法,就怕合法用户夹带“私货”。攻击者通过参数恶意输入等行为可造成的攻击有:缓冲区溢出、URL跳转、SQL注入、XSS、路径遍历、SSRF、上传脚本文件漏洞等等。

        这边有一句金玉良言:永远不要相信你的用户。这个思想在软件测试最先使用,用户的异常使用往往会发现各种软件的bug。事实上,在安全的实现中也是如此。

        那么,具体校验参数怎样实现呢?


SQL注入



        漏洞产生原因是在信任用户输入的基础上直接将用户的输入拼接到SQL查询语句中去,导致查询结果中返回了敏感的数据库数据,从而难以保证用户的数据安全。

        目前较为成熟的方式是基于预编译和参数绑定的参数化查询机制,先处理用户输入,间接制作SQL查询语句。

        在安全评估中会发现,一些程序员会使用白名单或黑名单的方式来防护,有一定的安全防护效果,但往往web漏洞会与程序员本身的思维漏洞形如影随。

        还有一些防护方式,比如在指定排序名和升序降序时,前端传回的数据是代号,后端根据代号转化成对应的数据,再拼接到SQL语句中。



XSS



        XSS的实现是在信任用户输入的基础上,未经任何处理直接输出到前端,则用户插入的js语句可在前端动态执行,恶作剧就是弹个窗,利用漏洞的攻击形式有盗取cookie、钓鱼、挂马、蠕虫等。XSS出现的最根本原因即代码与数据边界混淆,而产生混淆的原因有恶意闭合引号、闭合前端元素等等。

        针对XSS的防御,可以通过输入输出的转义、对js、html关键字符的过滤等等来实现。


CSRF



      执行CSRF的并不是攻击者,反而是不知情的受害者。

      通常,技术人员使用csrf token或其他防重放字串来防止CSRF攻击的实现,还有一些系统通过校验referer校验,防止用户通过点击csrf攻击链接或在其他界面异常跳转到敏感操作界面进行敏感操作。


路径遍历



    攻击者一般会使用../../来进行路径遍历,如read.php?file=../../../../../etc/passwd。

        一般要避免这种直接通过路径访问服务器上文件的操作,或对../及其其他形式进行过滤。在实际业务中,尽可能避免服务器测的路径,如业务实在无法避免,则需要限定目录,并使用整型ID访问。


SSRF



      URL作为参数进行传递时,黑客往往会通过提交内部域名、内部ip通过SSRF漏洞进行内网探测。

      一般系统中要避免使用URL参数作为参数,或者使用白名单进行限定输入。


URL跳转



      URL跳转最常见的就是登录成功、退出系统后跳转到目标URL,黑客往往会通过修改目标URL或插入恶意的URL,以达到恶意的URL跳转目的。

        一般系统中要使用白名单进行限定输入。


任意文件上传



      文件上传是我们在网络中常见的操作流程。如上传个人头像,上传证书等。攻击者往往通过修改文件后缀、修改文件头、插入恶意代码、图片隐写等方式上传允许范围外的恶意文件,如果有可执行权限,甚至可进行远程代码执行等高危严重操作。

      前后端都要对文件格式进行校验,再严格一些的要对文件头等进行校验。同时,对于上传的文件一般要进行重命名,且存放到没有执行权限的文件夹内。访问文件时也要尽可能避免使用服务器侧物理或逻辑路径来访问。


Method控制



     避免使用危险的PUT、DELETE、TRACE等METHOD。


缓冲区溢出



    超长的输入往往会带来严重问题,如系统崩溃、被获取root权限、内存数据等等。

    为了防止缓冲区溢出,所有接受外部数据的缓冲区,都需要在接收数据前执行边界检查,防止收到超出自身容量的数据。


遍历带来的问题



      如果资源是通过有规则的id来进行访问,且并未进行身份绑定,则攻击者通过遍历资源id即可获得大量未授权访问的资源。如果没有限制遍历行为,SQL注入也可以通过拖库来获取大量敏感数据。

      一般要先进行身份认证,通过身份进行授权和访问控制,资源id一般要使用加密字串,要对读取资源的频率进行限制。更完善的有通过监控告警和审计,来察觉数据泄露时间。

原文始发于微信公众号(火枪手联盟安全团队):访问控制篇

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年6月27日09:35:36
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   访问控制篇https://cn-sec.com/archives/1044637.html

发表评论

匿名网友 填写信息