# 代码审计
顾名思义就是检查源代码中的安全缺陷,检查程序源代码是否存在安全隐患,或者有编码不规范的地方,通过自动化工具或者人工审查的方式,对程序源代码逐条进行检查和分析,发现这些源代码缺陷引发的安全漏洞,并提供代码修订措施和建议。
## 代码安全测试方法:
码审核采用人工审核和静态分析工具辅助的方式进行。
1. 人工审核:
既能解决内部问题也能解决外部问题。这也是目前最有效率的解决方案,并且在理论上手工代码审核是非常有效的,但人工审核的效率不高,所以我们会采用自动化分析工具辅助人工的方式来提高审核效率。
2. 静态分析工具:
通过一组全面规则、测试机制和方针在软件开发过程、测试中发现软件的安全缺陷。
fortify、seay源代码审计
## 手工代码审计
### 审计思路:
1. 通读全文代码
从功能函数代码开始阅读,例如include文件夹下的common_fun.php,或者有类似关键字的文件。
2. 看配置文件
带有config关键字的文件,找到mysql.class.php文件的connect()函数,查看在数据库连接时是否出现漏洞。
3. 继续跟读首页文件index.php
了解程序运作时调用了哪些函数和文件 以index.php文件作为标线,一层一层去扩展阅读所包含的文件,了解其功能,之后进入其功能文件夹的首页文件,进行扩展阅读。
### 高风险漏洞
由于使用以下原因,可能存在一些常见的高风险漏洞:
1. 非边界检查函数可能导致缓冲区溢出漏洞
例如,strcpy,sprintf,vsprintf和sscanf
2. 可能干扰后续边界检查的缓冲区的指针操作
例如:if((bytesread = net_read(buf,len))> 0)buf + = bytesread;
3. 调用像execve(),执行管道,system()和类似的东西
尤其是在使用非静态参数调用时
4. 输入验证
如`statement:=“SELECT * FROM users WHERE name ='”+ userName +“';”`是一个SQL注入漏洞的示例
5. 文件包含功能
例如(在PHP中):`include($ page。'。php');`是远程文件包含漏洞的示例
6. 对于可能与恶意代码链接的库,返回对内部可变数据结构(记录,数组)的引用
恶意代码可能会尝试修改结构或保留引用以观察将来的更改。
### 低风险漏洞
以下是审计代码时应该找到的低风险漏洞列表,但不会产生高风险情况。
1. 客户端代码漏洞不影响服务器端(例如,跨站点脚本)
2. 用户名枚举
3. 目录遍历(在Web应用程序中)
### web漏洞产生的原因:
1. 变量控制不严(一切输入都是有害)。
2. 变量到达有利用价值的函数
(一切进入函数的变量是有害的)漏洞的利用效果取决于最终函数的功能。
3. 权限配置不当,给予了过高的权限
4. 逻辑问题,属于程序之外,人的思维问题
## 代码审计工具
在源代码的静态安全审计中,使用自动化工具代替人工漏洞挖掘,可以显著提高审计工作的效率。学会利用自动化代码审计工具,是每一个代码审计人员必备的能力。本文将简要介绍其中两款比较实用的工具:Seay、FortifySCA。
### 1️⃣Seay:
Seay是一套开源代码审计系统,使用C# 编写,需要.NET2.0以上版本环境才能运行。
### 2️⃣Fortify SCA:
Fortify SCA(Static Code Analyzer)是由Fortify软件公司(已被惠普收购)开发的一款商业版源代码审计工具,价格较为昂贵。它使用独特的数据流分析技术,跨层跨语言地分析代码的漏洞产生,目前支持所有的主流开发语言。
* Fortify SCA原理
首先通过调用语言的编译器或者解释器把前端的语言代码(如JAVA,C/C++源代码)转换成一种中间媒体文件NST(Normal Syntax Tree),将其源代码之间的调用关系,执行环境,上下文等分析清楚。
通过分析不同类型问题的静态分析引擎分析NST文件,同时匹配所有规则库中的漏洞特征,将漏洞抓取出来,然后形成包含详细漏洞信息的FPR结果文件,用AWB打开查看。
- src导航站
- kali和msf
- 信息收集
- 收集域名信息
- Whois 查询
- 备案信息查询
- 信用信息查询
- IP反查站点的站
- 浏览器插件
- 收集子域名信息
- 在线平台
- 工具枚举
- ssl与证书透明度
- DNS历史解析
- DNS域传送漏洞
- C段探测
- JS文件域名&ip探测
- 搜索引擎&情报社区
- google黑客
- 威胁情报
- 钟馗之眼
- 收集相关应用信息
- 微信公众号&微博
- APP收集&反编译
- 收集常用端口信息
- 常见端口&解析&总结
- 扫描工具
- 网络空间引擎搜索
- 浏览器插件
- nmap扫描
- 收集敏感信息
- 源码泄露
- 邮箱信息收集
- 备份文件泄露
- 目录&后台扫描
- 公网网盘
- 历史资产
- 指纹&WAF&CDN识别
- 指纹识别
- CDN识别
- 绕过CDN查找真实IP
- WAF识别
- 漏洞资源和社工
- 漏洞公共资源库
- 社会工程
- 资产梳理
- 各种对渗透有帮助的平台
- 扫描器
- 扫描器对比
- AppScan(IBM)_web和系统
- AWVS_web扫描
- X-Scan_系统扫描
- WebInspect_HP_WEB
- Netsparker_web
- WVSS_绿盟_web
- 安恒明鉴
- Nessus_系统
- nexpose_系统
- 启明天镜_web_系统
- SQL注入
- 常用函数
- sql注入步骤
- union注入和information_schema库
- 函数和报错注入
- SQL盲注
- 其他注入方式
- 防止SQL注入解决方案
- Access数据库注入
- MSSQL数据库注入
- MYSQL数据库注入
- 神器SQLmap
- xss跨站脚本攻击
- xss原理和分类
- xss案例和修复
- xss绕过技巧
- xss案例
- 文件上传下载包含
- 常有用文件路径
- 文件上传漏洞
- 文件下载漏洞
- 文件包含漏洞
- upload-labs上传漏洞练习
- XXE、SSRF、CSRF
- SSRF原理基础
- SSRF案例实战
- CSRF原理基础
- CSRF案例及防范
- XXE之XML_DTD基础
- XXE之payload与修复
- XXE结合SSRF
- 远程命令执行与反序列化
- 远程命令和代码执行漏洞
- 反序列化漏洞
- 验证码与暴力破解
- 爆破与验证码原理
- CS架构暴力破解
- BS架构暴力破解
- WEB编辑器漏洞
- 编辑器漏洞基础
- Ewebeditor编辑器
- FCKeditor编辑器
- 其他编辑器
- web中间件漏洞
- 中间件解析漏洞
- Tomcat常见的漏洞总结
- Jboss漏洞利用总结
- Weblogic漏洞利用总结
- WEB具体步骤
- 旁注和越权
- CDN绕过
- 越权与逻辑漏洞
- WEB应用常见其他漏洞
- WEB登陆页面渗透思路
- 获取WEBshell思路
- 社工、钓鱼、apt
- 社工和信息收集
- 域名欺骗
- 钓鱼邮件
- 一些钓鱼用的挂马工具
- 代码审计
- 代码审计工具
- WAF绕过
- WAF基础及云WAF
- 各种WAF绕过方法
- 绕过WAF上传文件
- 系统提权
- windows系统提权
- linux系统提权
- 数据库提权操作系统
- 内网横向渗透
- 内网穿透方式
- 一些内网第三方应用提权
- ARP与DOS
- ARP欺骗
- DOS与DDOS
- 一些DOS工具