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怎么过滤的,相应的如何绕过

安全测试-WEB安全渗透测试基础知识(五)的更多相关文章

  1. 安全测试-WEB安全渗透测试基础知识(四)

    .4. HTTP标准 1.4.1. 报文格式 1.4.1.1. 请求报文格式 <method><request-URL><version> <headers& ...

  2. ref:Web Service 渗透测试从入门到精通

    ref:https://www.anquanke.com/post/id/85910 Web Service 渗透测试从入门到精通 发布时间:2017-04-18 14:26:54 译文声明:本文是翻 ...

  3. Web应用渗透测试框架Arachni

    Web应用渗透测试框架Arachni   Arachni是一款Ruby语言编写的Web应用渗透测试框架.当用户指定目标后,该框架可以自动扫描网站页面,对页面中的链接.表单.Cookie.HTTP He ...

  4. Web端即时通讯基础知识补课:一文搞懂跨域的所有问题!

    本文原作者: Wizey,作者博客:http://wenshixin.gitee.io,即时通讯网收录时有改动,感谢原作者的无私分享. 1.引言 典型的Web端即时通讯技术应用场景,主要有以下两种形式 ...

  5. APP测试入门篇之APP基础知识(001)

    前言        最近两月比较多的事情混杂在一起,静不下心来写点东西,月初想发表一遍接口测试的总结,或者APP测试相关的内容,一晃就月底了,总结提炼一时半会也整不完.放几个早年总结内部培训PPT出来 ...

  6. 安全测试===Web 安全渗透方面的学习路线

    作者:向生李链接:https://www.zhihu.com/question/21914899/answer/39344435来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...

  7. 想入门Web安全,这些基础知识都学会了吗?

    毕业季已经正式告一段落,这届毕业生都找到心仪的工作了吗? 正在实习期或者试用期的职场新人,是否在岗位上做的风生水起? 工作了一两年,从未升职加薪的菜鸟,还愿意继续原地踏步吗? 在校学生.IT从业者.毕 ...

  8. Python基础知识(五)------字典

    Python基础知识(四)------字典 字典 一丶什么是字典 ​ dict关键字 , 以 {} 表示, 以key:value形式保存数据 ,每个逗号分隔 ​ 键: 必须是可哈希,(不可变的数据类型 ...

  9. WEB下渗透测试经验技巧(全)[转载]

    Nuclear’Atk 整理的: 上传漏洞拿shell: 1.直接上传asp.asa.jsp.cer.php.aspx.htr.cdx….之类的马,拿到shell.2.就是在上传时在后缀后面加空格或者 ...

  10. Web前端渗透测试技术小结(一)

    首先端正一下态度不可干违法的事 1.SQL注入测试 对于存在SQL注入的网页,使用SQL语句进行关联查询(仿照C/S模式)eg   http://www.foo.com/user.php?id=1 常 ...

随机推荐

  1. py之赋值,选择判断

    赋值机制 赋值之后:变量的地址就会指向同一个地址 a=123123 b=a id(a) id(b) 字符串是不论有多长内容一样地址一样 a='sadasd' b='sadasd' id(a) id(b ...

  2. angular 父组件调用子组件方法---以及组件跨模块使用方法

    如果要在父组件调用子组件 可以这样子 @ViewChild('mySun', { static: false }) mySun: MySunComponent; 使用方法: let res=this. ...

  3. 踩坑纪实----tomcat部署前端服务器不能访问中文文件夹或中文文件名问题

    修改tomcat的server.xml文件(解决含有中文的文件.图片的不能下载.显示的问题): 找到下列配置信息在xml文件中的位置,添加黑体字部分的参数即可(disableUploadTimeout ...

  4. Unity_UIWidgets新手入门

    Unity_UIWidgets新手入门 Hello Everyone!好久没见了,有没有有些想念小黑呢?什么?这么想?哈哈哈哈哈哈,不过我也知道你是想了解新的知识了,才不是想我嘞. 好了,好歹也半年没 ...

  5. 【分析笔记】LVGL v8.2.0 使用 freetype 概率性无显示的问题

    使用目前最新的 Releases 版本 LVGL v8.2.0 ,移植好 freetype2 后测试,发现每次启动程序时会高概率出现屏幕显示全白色背景,无任何内容的问题. 打开日志开关,出现问题时会有 ...

  6. ThinkPad E580 装Ubuntu系 系统无WIFI 解决办法

    首先得下载 最新的驱动,我之前因为自己的下载的驱动不够新,导致我的驱动一直装不上去 https://github.com/tomaspinho/rtl8821ce 这个是最新的驱动的下载 地址,建议从 ...

  7. jdbc访问KingbaseES数据库SocketTimeoutException Read timed out

    jdbc访问KingbaseES数据库发生异常:SocketTimeoutException Read timed out 一.异常现象: 应用显示ERROR信息: Caused By: java.n ...

  8. 网页怎样引入本地硬盘上的JS文档

    网页通过<script>标记可以引入在线的js文档,只有把网页保存在本地硬盘才能使用相对路径引入本地js文档,普通浏览器难以实现在线页面上引入本地js文档.怎么解决这个问题呢? 首先准备好 ...

  9. Mybatis Plus 框架项目落地实践总结

    在使用了Mybatis Plus框架进行项目重构之后,关于如何更好的利用Mybatis plus.在此做一些总结供大家参考. 主要总结了以下这几个方面的实践. 基础设计 BaseEntity 逻辑删除 ...

  10. Autoit 制作上传工具完美版

    一. 制作上传器 在ui自动化过程中经常遇到需要上传的动作,我们可以使用input标签来送值,但这样不太稳定,所以建议使用autoit制作出来的exe工具. 下面就教大家如何制作上传器,如何使用吧! ...