加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 服务器 > 安全 > 正文

通过发现 异常词汇 Bad Word 频率在代码中寻找漏洞

发布时间:2022-08-25 15:30:22 所属栏目:安全 来源:互联网
导读:如何在代码中查找漏洞是一个非常复杂的问题,如果高屋建瓴地看,这个查找漏洞的过程应该是以下这样的: 找到危险的功能; 找到从你控制的输入到危险功能的路径; 向程序输入错误的行为; 和其他渗透测试人员一样,我立即对Nomad进行了了解。果然,我查出了这行

  如何在代码中查找漏洞是一个非常复杂的问题,如果高屋建瓴地看,这个查找漏洞的过程应该是以下这样的:
 
  找到危险的功能;
  找到从你控制的输入到危险功能的路径;
  向程序输入错误的行为;
 
  和其他渗透测试人员一样,我立即对Nomad进行了了解。果然,我查出了这行代码的蹊跷之处,官方文档是这样解释其作用的:“这使你可以无隔离地运行操作,出于安全原因,默认情况下将其禁用。”
 
  当我迅速完成我可以构建的最简单的Nomad模块时,我高兴坏了,几分钟后,我就可以以root身份访问该模块,并且获取大量凭证。在此之前,我从来没有听说过Nomad,更不用说这个配置选项了,那么是什么让我想要深入挖掘呢?它是徘徊在同一段代码上的两个安全异常词汇的组合,即“raw”和“exec”。这些异常词汇可以帮助你找到代码中最关键的安全部分,这样你就可以将你的注意力放在最重要的地方了。

  1. raw
 
  Raw意味着你正在访问较低级别的抽象,当你的安全控制在更高的级别执行时,允许此“raw”界面的用户绕过它们,这就会成为一个漏洞。
 
  示例:
 
  CAP_NET_RAW是一种Linux功能,允许你创建原始套接字,并使用它们来绕过典型的进程隔离限制。
  Nomad中的raw_exec驱动程序使你可以创建具有Nomad代理权限的,在容器外部运行的操作。
  许多ORM都具备rawQuery或rawSQL方法,可让你直接执行查询。 ORM生成的查询通常是不可注入的,但是在使用“raw” 界面时,如何组织SQLi由用户决定。
  2. eval | exec | run
 
  将用户输入与用动态语言(Javascript、SQL、bash等)编写的代码相结合通常会导致注入攻击,攻击者可以提交代码作为输入内容,从而导致解释器的行为异常。运行此代码通常被称为“执行”,“评估”或“运行”。
 
  示例:
 
  无隔离状态下,raw_exec运行一个Nomad操作;
  execute(sql)在许多python数据库驱动程序中运行sql查询;
  exec(code)是一个python方法,它运行传递给它的代码;
  eval(code)是许多动态语言提供的函数,比如运行传递给它的代码的Javascript,Python也有一个eval函数,但它只用于表达式;
  这个函数将返回大量的假阳性结果,因为正如Steve Yegge预测的那样,似乎每个动词都通过run()、execute()或justDoIt()方法变成了名词。
 
  3. process | system | popen | exec | spawn
 
  这些词可以指示子进程的创建,如果子进程生成了shell,则可以注入shell命令。即使它直接调用execve系统调用,你仍然可以向程序添加或修改参数。
 
  示例:
 
  python中的子进程模块;
  节点中的child_process模块;
  golang中的os / exec程序包;
  python中的os.system方法;
  ruby中的popen模块;
  4. privilege | permission | capability | role | rbac | policy | authorization | claims
 
  这些词将帮助你找到负责向用户、容器、进程、文件、EC2实例等授予特权的代码,使用任何高度特权的对象来操作你的命令,甚至完全绕过authz。

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读