• 13
  • 13
分享
  • 安全测试-WEB安全渗透测试基础知识(五)——软件测试圈
  • 饭团🍙 2021-03-25 09:38:21 字数 1411 阅读 1348 收藏 13

1.5. 代码审计

1.5.1. 简介

代码审计是找到应用缺陷的过程。其通常有白盒、黑盒、灰盒等方式。白盒指通过对源代码的分析找到应用缺陷,黑盒通常不涉及到源代码,多使用模糊测试的方式,而灰盒则是黑白结合的方式。

1.5.2. 常用概念

1.5.2.1. 输入

应用的输入,可以是请求的参数(GET、POST等)、上传的文件、网络、数据库等用户可控或者间接可控的地方。

1.5.2.2. 处理函数

处理数据的函数,可能是过滤,也可能是编解码。

1.5.2.3. 危险函数

又常叫做Sink Call、漏洞点,是可能触发危险行为如文件操作、命令执行、数据库操作等行为的函数。

1.5.3. 自动化审计

一般认为一个漏洞的触发过程是从输入经过过滤到危险函数的过程,而审计就是寻找这个链条的过程。

1.5.3.1. 危险函数匹配

白盒审计最常见的方式是通过搜寻危险函数与危险参数定位漏洞,比较有代表性的工具是Seay开发的审计工具。这种方法误报率相当高,这是因为这种方法没有对程序的流程进行深入分析,另一方面,这种方式通常是孤立地分析每一个文件,忽略了文件之间复杂的调用关系。

具体的说,这种方式在一些环境下能做到几乎无漏报,只要审计者有耐心,可以发现大部分的漏洞,但是在高度框架化的代码中,能找到的漏洞相对有限。

1.5.3.2. 控制流分析

在后来的系统中,考虑到一定程度引入AST作为分析的依据,在一定程度上减少了误报,但是仍存在很多缺陷。

而后,Dahse J等人设计了RIPS,该工具进行数据流与控制流分析,结合过程内与过程间的分析得到审计结果,相对危险函数匹配的方式来说误报率少了很多,但是同样的也增加了开销。

1.5.3.3. 灰盒分析

国内安全研究员fate0提出了基于运行时的分析方式,解决了控制流分析实现复杂、计算路径开销大的问题。

1.5.4. 手工审计方式

  • 拿到代码,确定版本,确定能否正常运行

找历史漏洞
找应用该系统的实例
  • 简单审计,运行审计工具看是否有漏洞

  • 大概看懂整个程序是如何运行的

文件如何加载
类库依赖
有没有加载waf
  • 数据库如何连接

mysql/mysqli/pdo
有没有用预编译
  • 视图如何形成

能不能xss
能不能模版注入
  • SESSION如何处理

文件
数据库
内存
  • Cache如何处理

文件cache可能写shell
数据库cache可能注入
memcache
  • 看账户体系

  • 管理员账户的密码

加密方式
泄漏数据后能不能爆破密码
重置漏洞
  • 修改密码漏洞

修改其他人密码
  • 普通用户的帐号

能否拿到普通用户权限
普通用户帐号能否盗号
重点找没有帐号的情况下可以访问的页面
是不是OAuth
  • 攻击

SQLi
看全局过滤能否bypass
看是否有直接执行sql的地方
  • 看是用的什么驱动,mysql/mysqli/pdo

如果使用PDO,看是否是直接执行的地方
  • XSS

全局bypass
直接echo
看视图是怎么加载的
  • FILE

上传下载覆盖删除
  • 包含

LFI
RFI
全局找include, require
  • 正常上传

看上传是如何确定能否上传文件的
  • RCE

call_user_func
eval
assert
preg_replace /e
XXE
CSRF
SSRF
反序列化
  • 变量覆盖

extract
parse_str
array_map
LDAP
XPath
Cookie伪造
  • 过滤

  • 找WAF

看waf怎么过滤的,相应的如何绕过



作者:咯咯老嫖客

原文链接:https://www.cnblogs.com/gegelaopiaoke/p/12743597.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   背景  事件的起因在于老板最近的两次“故障”,一次去年的,一次最近。共同原因都是脚手架在发布平台发布打包时出错,导致线上应用白屏不可用。  最神奇的是,事后多次 Code Review,结果还是没有发现任何能够导致该问题的 bug,最后推测有可能是服务器在发布打包的时候出了问题。  当老板第 N + 1 次吐槽因为他写的工程化工具领来的天外飞锅,我突然思考起来,如何才能避免这种天外飞锅。  归根结底,导致这类线上故障的原因都是在于打包上线的代码没有经过验证。针对这个问题,有两种方法可以解决:  治本  由于请求地址不同,预发(测试)版本不可直接发线上,而线上版本缺少了上线之前的验证过程。所...
            0 0 894
            分享
          •   2022年度软件测试行业的趋势预测:如果你也想了解更多发展趋势,那就点击下方链接填写调查问卷吧!助力测试行业发展,还能获得精美礼包哦~链接:http://vote.51testing.com/  百度一下“软件测试前景”,前几个点进去都是某某培训机构的广告,后面的点进去间接的介绍一下然后又是各种机构的广告。所以,对于很多测试人员,尤其是职场小白,完全不知道自己进入这个行业的前景,至于后面有什么规划,走上什么道路更是一片迷茫。那么软件测试的前景和发展方向在哪呢?  测试前景  其实,目前的国内市场,很多软件企业都存在着重开发、轻测试的现象,甚至有很多互联网和软件企业都没有测试,上线纯靠开发和...
            0 0 825
            分享
          • 51testing软件测试圈季度更文活动已经结束了,在这里小编感谢各位的参与本次活动时间从2022年10月17日-2022年12月19日!合计参与本期活动的活动的作者7名,合计更文48篇,详细更文情况和评审情况如下表所示:序列作者名称更文篇数符合要求数优质文章活动规则首发文章1Carl_奕然17171发布文章篇数≥2102lee15150发布文章篇数≥2103九哥770发布文章篇数≥1004liam220发布文章篇数≥505枫叶550发布文章篇数≥506钱可通神110发布文章篇数≥507性能测试小菜鸡110发布文章篇数≥50很遗憾!本次未有用户获奖~期待下次相遇!活动主题一场朴实无华的更文活动...
            3 3 4521
            分享
          • 相信大家对Kafka不会陌生,但首先还是要简单介绍一下。Kafka是一种高性能的分布式消息系统,由LinkedIn公司开发,用于处理海量的实时数据流。它采用了发布/订阅模式,可以将数据流分发到多个消费者端,同时提供了高可靠性、高吞吐量和低延迟的特性。Kafka的应用场景非常广泛,例如日志收集、事件流处理、实时监控等。在这些场景中,Kafka可以提供高可靠性和低延迟的数据传输,确保数据的稳定性和实时性。与此同时,Kafka还提供了丰富的API和管理工具,使得用户可以方便地配置和管理Kafka集群。很多高性能方案都会用到Kafka,今天我来分享如何使用Kafka Client API进行Kafka...
            0 0 992
            分享
          • 一、背景。最新一年(2019)的软件测试大赛即将拉开帷幕,今天与往年相比,增加了自主可控的分赛项,进一步的丰富了比赛的内容,各项评分依据也更加明确,因此能够根据分数更有针对性的找出自己的代码问题了,从而获得更好地分数,提高脚本编写能力。评测工具完善速度之快,超出个人想象,可以看得出来主办方费心了,预祝软件测试大赛发展的越来越好。自主可控赛项的比赛内容有三部分构成,分别为:功能测试、性能测试、众包测试,其中功能测试的内容就是利用Selenium测试工具对Web应用进行功能测试。之所以称作为自主可控,是因为待测试Web应用是部署在国产的应用服务器上面的,采用的国产CPU、操作系统等,具备完全自主知...
            12 13 3321
            分享
      • 51testing软件测试圈微信