前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >代码审计

代码审计

作者头像
宸寰客
发布2020-10-10 14:27:09
2.6K0
发布2020-10-10 14:27:09
举报
文章被收录于专栏:yuancao博客yuancao博客

目录

什么是代码审计

代码审计(Code audit)是一种以发现程序错误,安全漏洞和违反程序规范为目标的源代码分析。软件代码审计是对编程项目中源代码的全面分析,旨在发现错误,安全漏洞或违反编程约定。 它是防御性编程范例的一个组成部分,它试图在软件发布之前减少错误。 C和C ++源代码是最常见的审计代码,因为许多高级语言(如Python)具有较少的潜在易受攻击的功能。

代码审计的三种方法

1.通读全文法

通读全文:顾名思义,就是通过对整个程序的代码进行阅读,从而发现问题,这种方法是最全面的,但也是最麻烦的,最容易出错。 如果是大型程序源码,代码量非常大,相当耗费时间,这种方法一般是企业对自己自身产品进行审计,当然,这种方法非常有用,通过阅读得到整个应用的业务逻辑,可以挖掘到更多具有价值的漏洞,对于小型程序源码,也可以使用这种方法进行审计。

优点 了解程序架构与业务逻辑。挖掘更高质量漏洞 缺点 耗费时间较长

2.函数回溯法

大多数的漏洞是因为函数的使用不当造成的,只要找到这些使用不当的函数,就可以快速的发现想要挖掘的漏洞。 这种方法相对比较快速和高效,也可以使用工具进行审计,工具的原理是利用正则表达式,匹配一些危险的函数、敏感关键字,然后得到这些函数,就可以分析阅读上下文,追踪源头

优点 可快速挖掘漏洞 缺点 无法覆盖逻辑漏洞

3.定向功能分析法

该方法主要是根据程序的业务逻辑和业务功能进行审计的,首先大概浏览网站的页面,比如有上传功能,有浏览功能,可能猜测到这个程序有上传漏洞、XSS漏洞等,可以大概的推测它有哪些漏洞,然后再针对猜测的结果,进行定向分析。 功能: 输入、输出 安全功能 程序异常处理 程序初始安装 站点信息泄漏 文件上传 文件管理 登陆认证 数据库备份恢复 找回密码 验证码 ……

分析过程
  • 首先,不管是什么程序都要把握大局,浏览源码文件夹,了解它的大致结构
  • 其次,根据定向功能发对每一项功能进行审计,可以根据网站的架构使用不同的方法进行分析,三者结合起来效果最佳
  • 最后,可以将敏感函数回溯,发现漏洞的起源地

工具

seay

主要代码审计方法

1.通读全文法

(1)网站结构 浏览源码文件夹,了解该程序的大致目录 (2)入口文件 index.php、admin.php文件一般是整个程序的入口,详细读一下index文件可以知道程序的架构,运行流程,包含那些配置文件,包含哪些过滤文件以及包含那些安全过滤文件,了解程序的业务逻辑。 (3)配置文件 一般类似config.php等文件,保存一些数据库相关信息、程序的一些信息。先看看数据库编码,如果是gbk则可能存在宽字节注入。如果变量的值用双引号、则可能存在双引号解析代码执行的问题。 (4)过滤功能 通过详读安全过滤文件等文件,清晰掌握用户输入的数据,哪些被过滤,哪些无过滤,在哪里被过滤了,如何过滤的,能否绕过过滤的数据。过滤的方式是替换还是正则?有没有GPC?有没有使用addslasher()处理?

2.函数回溯法

跟踪用户输入数据和敏感函数参数回溯:

1.跟踪用户的输入数据

判断数据进入的每一个代码逻辑是否有可利用的点,此处的代码逻辑 可以是一个函数,或者是条小小的条件判断语句。

2.敏感函数参数回溯

根据敏感函数,逆向追踪参数传递的过程。这个方法是最高效,最常用的方法。大多数漏洞的产生是因为函数的使用不当导致的,只要找到这些函数,就能够快速挖掘想要的漏洞。

搜索时要注意是否为整个单词,以及小写敏感这些设置

代码语言:javascript
复制
密码硬编码、密码明文存储:    password 、pass、jdbc
XSS:                      getParamter、<%=、param.
SQL 注入:                  Select、Dao 、from 、delete 、update、insert
任意文件下载:               download 、fileName 、filePath、write、getFile、getWriter
任意文件删除:               Delete、deleteFile、fileName 、filePath
文件上传:                  Upload、write、fileName 、filePath
XML 注入:                 DocumentBuilder、XMLStreamReader、SAXBuilder、SAXParser
反序列化漏洞:              serialize unserialize
代码执行:                  eval、system、exec

函数回溯发审计常用漏洞

Xss 审计

1.反射xss一般seay可以直接搜索str_replace关键字,也可以通过手工搜索来寻找

2.存储型 XSS全局搜索数据库的插入语句(关键词:insert,save,update),然后找到该插入语句所属的方法名如 (insertUser()) , 然后全局搜索该方法在哪里被调用, 一层层的跟踪

SQL 注入

一般直接搜索 select、update、delete、insert 关键词就会有收获 如果 sql 语句中有出现+append$()# 等字眼,如果没有配置 SQL 过滤文件,则判断存在 SQL 注入漏洞

任意文件下载

审计方法:全局搜索以下关键词 fileNamefilePathgetFilegetWriterdownload 查看下载文件或路径是否可控

文件上传

文件上传可以搜索以下关键词:(需注意有没有配置文件上传白名单) uploadwritefileNamefilePath 在查看时,主要判断是否有检查后缀名,同时要查看配置文件是否有设置白名单或者黑名单

文件包含

直接搜索includerequireinclude_oncerequire_once

ssrf

搜索函数跟踪请求file_get_contentsfsockopencurl_exec

CSRF

审计方法:通过查看配置文件有没有配置 csrf 全局过滤器,如果没有则重点看每个操作前有没有添加 token 的防护机制

3.定向功能分析法

1.程序初始安装

找到install.php或者其他相关文件,看程序能不能重装

2.站点信息泄露
3.文件上传
4.文件管理
5.登录认证

无密码登录,万能账号,万能密码登录

6.数据库备份恢复

注册一个用户,用户名是个一句话木马,然后将数据库导出备份,用户名

7.找回密码
8.验证码

找到加密的密码,偏移量,生成同样的token。或者找到cookie的生成规律,然后cookie登录

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-10-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 什么是代码审计
  • 代码审计的三种方法
  • 工具
  • 主要代码审计方法
    • 1.通读全文法
      • 2.函数回溯法
        • 函数回溯发审计常用漏洞
      • 3.定向功能分析法
      相关产品与服务
      代码审计
      代码审计(Code Audit,CA)提供通过自动化分析工具和人工审查的组合审计方式,对程序源代码逐条进行检查、分析,发现其中的错误信息、安全隐患和规范性缺陷问题,以及由这些问题引发的安全漏洞,提供代码修订措施和建议。支持脚本类语言源码以及有内存控制类源码。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档