- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
项目十一代码审计
代码审计概述
常见代码审计方法
代码审计具体案例
代码审计(Codeaudit)是对编程项目中源代码的全面分析,旨在发现错误、安全漏洞或是否违反编程约定。它是防御性编程范例的一个组成部分,目的是在软件发布之前减少错误。
代码审计概述
代码审计概述
代码审计是通过自动化工具或人工审查的方式,对程序源代码逐条进行检查和分析,以发现源代码缺陷引发的安全漏洞,并提出代码修订措施和建议。
代码审计对象包括对Windows和Linux系统环境下的以下语言进行审核:java、C、C#、ASP、PHP、JSP、.NET。审计内容包括以下方面
代码审计概述
1、前后台分离的运行架构;
2、WEB服务的目录权限分类
3、认证会话与应用平台的结合;
4、数据库的配置规范;
5、SQL语句的编写规范;
6、WEB服务的权限配置;
7、对抗爬虫引擎的处理措施。
审核软件时,应对每个关键组件进行单独审核,并与整个程序一起进行审核。首先搜索高风险漏洞并解决低风险漏洞。高风险和低风险之间的漏洞通常存在,具体取决于具体情况以及所使用的源代码的使用方式。应用程序渗透测试,试图通过在可能的访问点上启动尽可能多的已知攻击技术来尝试降低软件中的漏洞,以试图关闭应用程序。这是一种常见的审计方法,可用于查明是否存在任何特定漏洞,而不是源代码中的漏洞
代码审计概述
由于使用以下原因,可能存在一些常见的高风险漏洞:非边界检查函数(例如,strcpy,sprintf,vsprintf和sscanf)可能导致缓冲区溢出漏洞可能干扰后续边界检查的缓冲区的指针操作,例如:if((bytesread=net_read(buf,len))0)buf+=bytesread;调用像execve(),执行管道,system()和类似的东西,尤其是在使用非静态参数调用时输入验证,例如(在SQL中):statement:=“SELECT*FROMusersWHEREname=”+userName+“;”是一个SQL注入漏洞的示例。文件包含功能,例如(在PHP中):include($page。。php);是远程文件包含漏洞的示例。对于可能与恶意代码链接的库,返回对内部可变数据结构(记录,数组)的引用。恶意代码可能会尝试修改结构或保留引用以观察将来的更改。
代码审计概述
以下是审计代码时应该找到的低风险漏洞列表,但不会产生高风险情况:1、客户端代码漏洞不影响服务器端(例如,跨站点脚本);2、用户名枚举;3、目录遍历(在Web应用程序中)。
源代码审计工具通常会查找常见漏洞,仅适用于特定的编程语言。这种自动化工具可用于节省时间,但不应依赖于深入审计。建议将这些工具作为基于政策的方法的一部分。
如果设置为低阈值,则大多数软件审计工具会检测到许多漏洞,尤其是在以前未审核过代码的情况下。但是,这些警报的实际重要性还取决于应用程序的使用方式。可能与恶意代码链接的库(并且必须对其免疫)具有非常严格的要求,例如克隆所有返回的数据结构,因为有意破坏系统的尝试是预期的。只能暴露于恶意输入(如Web服务器后端)的程序必须首先关心此输入(缓冲区溢出,SQL注入等)。对于仅受保护基础结构中的授权用户内部使用的程序,可能永远不会发生此类攻击。
常见代码审计方法
1、代码审计环境准备
(1)本地测试环境:php+mysql环境。如:phpstudy,wamp等;
(2)文档编辑器:sublimetext2,UltraEdit,notepad++;
(3)浏览器:Firefox。
(4)Firefox 插件:FoxyProxy、Hackbar、ModifyHeaders、UseAgentSwitcher、Firebug。ConvertToUTF8;
(5)其他工具:BurpSuite、XDebug、vMysqlMonitoring、Web 编码转换工具。
常见代码审计方法
2、审计前的准备工作
(1)获取源码:大多数PHP程序都是开源的、找到官网下载最新的源码包即可。
(2)安装网站:在本地搭建网站,一边审计一边调试。实时跟踪各种动态变化,把握大局
(3)网站结构:浏览源码文件夹,了解程序的大致目录。
(4)入口文件:index.php、admin.php文件一般是整个程序的入口,从中可以知道:
程序的架构
运行流程
包含哪些配置文件
包含哪些过滤文件和安全过滤文件
了解程序的业务逻辑
常见代码审计方法
(5)配置文件:一般类似config.php等文件,保存一些数据库相关信息、程序的一些信息。先看数据库编码,如果是gbk可能存在宽字节注入。若变量的值用双引号、则
文档评论(0)