
图片来源于百度图片。
==注意:本篇文章仅用于自我学习,笔记记录,不得用于其他用途。==
一、引子
在攻方面,传统的黑盒模式是通过扫描器扫描站点或利用NDAY来渗透的方式已经受到了很大的制约,现在及未来的渗透测试发展方向是白盒测试 , 也就是代码审计 , 无论是挖0day还是企业渗透测试 , 白盒都是最快最准确的挖掘姿势拿到源代码-->代码审计-->利用审计出来的漏洞制定措施,所以代码审计能力也越发重要。 
==最好是工具和人工结合使用。==
二、审计工具
工欲善其事 必先利其器,使用自动化工具代替人工挖掘,可以显著提高审计工作的效率,学会利用自动化代码审计工具,是每个代码审计人员必备的技能 
自动审计工具:
- RIPS
- Seay
- fortify
三、代码审计环境搭建
phpstudy2018 + php5.4 + 留言板源码
解压到www根目录
修改cs.com\lib\config.php 数据库配置
链接mysql数据库 , 创建数据库
create database message;
use message;
source D:\\phpStudy\\PHPTutorial\\WWW\\cs.com\\lib\\test_message.sql;
访问
http://cs.com
管理员/密码
admin/admin四、RIPS
它是一款开源的,具有较强的漏洞挖掘能力的自动化代码审计工具,由PHP语言编写,用于静态审计PHP代码 
也可以采用正则方式扫描代码发现漏洞;还能够采用自定义的语法扫描代码发现问题 
官网:
http://rips-scanner.sourceforge.net/在这里插入图片描述
解压下载的zip文件到Web服务器网站目录下即可。在浏览器中输入Web服务器地址和对应目录 
主界面介绍:  
| 功能 | 描述 | 
|---|---|
| subdirs | 如果勾选上这个选项,会扫描所有子目录,否则只扫描一级目录,缺省为勾选 | 
| verbosity level | 选择扫描结果的详细程度,默认为1(建议就使用1) | 
| vuln type | 选择需要扫描的漏洞类型。支持命令注入、代码执行、SQL注入等十余种漏洞类型,默认为全部扫描 | 
| code style | 选择扫描结果的显示风格(支持9种语法高亮)。 | 
| /regex/ | 使用正则表达式过滤结果 | 
| path/file | 要扫描的目录 | 
| scan | 开始扫描 | 
访问
http://rip.com/
实验 : 使用RIPS  对留言板源码进行扫描
访问
输入地址 , 开始扫描
1、xss漏洞

访问对应地址 , 抓包复现
http://cs.com/admin/index.php
修改之后 , 放过数据包
直接跳转到首页 , 复现失败 , 因为在index.php也会做一个cookie的校验
2、文件上传漏洞
路径
File: E:\phpstudy_pro\WWW\cs.com/admin/admin_check.php
通过浏览网站发现只有修改头型 , 有上传点 , 测试
http://cs.com/user_edit.php
http://cs.com/upload/images/2022_09_20/Upload_2022_09_20_16_54_43_160791.php
存在任意文件上传 , 可以getshell , 查看源码
function upFile(){
    $dir = PATH."/upload/images/".date('Y_m_d');
    $dir_bak = "/upload/images/".date('Y_m_d');
    is_dir($dir) || mkdir($dir,0777,true);
    $fileName = date('Y_m_d_H_i_s', time())."_".(rand(100000,900000));
    $fileType = strrchr($_FILES["user_pic"]["name"], ".");
    $fileName = "Upload_".$fileName.$fileType;
    $destination =  $dir."/".$fileName;
    move_uploaded_file($_FILES["user_pic"]["tmp_name"],$destination);
    $filePath  = $dir_bak."/".$fileName;
    return $filePath;
}没有做任何的过滤和限制 , 直接拼接的文件后缀
==这个工具挺喜欢echo的,碰到就报XSS。==
五、Seay
软件介绍
- Seay代码审计 , 由阿里巴巴尹毅使用C#开发的针对PHP代码安全审计软件
- 执行审计常见web安全漏洞,并且能够进行代码调试,函数定位,语法高亮等。
- 运行在Windows系统上
Seay实践:
- 新建项目,打开源码文件夹,点击自动审计即可
- 误报可能会很多,扫描完成生成报告即可查看

实验 : 使用Seay源代码审计工具对留言板源码进行扫描
1、Exec命令执行
命令执行 Exec 函数 , 找到函数 , 右键定位 函数 , 发现是自定义函数 , 并不是命令执行 , 误报

2、sql注入

直接拼接的sql语句 , 变量值可控 , 存在sql注入漏洞 , 可以通过echo当前语句 , 直接查看sql语句
接着又是 命令执行 Exec 函数

误报
3、sql注入

直接拼接的sql语句 , 变量值可控 , 存在sql注入漏洞 , 可以通过echo当前语句 , 直接查看sql语句
剩下的sql注入全是直接拼接的就不一个一个介绍了 , 然后Exec函数是误报
4、文件上传

没有对文件名做任何的处理和过滤 , 可以直接上传webshell
5、伪造客户端ip

burp插件就可以演示 , 但是这个源码中没有调用这个函数的地方
小总结
Seay 感觉还不错  , 最起码sql注入可以检测出来 , 不会有xss误报 , 然后函数定位功能很好用
缺点 : 逻辑漏洞无法检测 , 当然这也是工具的通病六、fortify
Fortify SCA ,是HP的产品 ,是一个静态的、白盒的软件源代码安全测试工具。
它通过内置的五大主要分析引擎:数据流、语义、结构、控制流、配置流等对应
用软件的源代码进行静态的分析,分析的过程中与它特有的软件安全漏洞规则集
进行全面地匹配、查找,从而将源代码中存在的安全漏洞扫描出来,并给予整理
报告。扫描的结果包含详细的安全漏洞信息、安全知识说明、修复意见。Foritfy SCA
主要包含的五大分析引擎
数据流引擎 : 跟踪,记录并分析程序中的数据传递过程所产生的安全问题。
语义引擎 : 分析程序中不安全的函数,方法的使用的安全问题。
结构引擎 : 分析程序上下文环境,结构中的安全问题。
控制流引擎 : 分析程序特定时间,状态下执行操作指令的安全问题。
配置引擎 : 分析项目配置文件中的敏感信息和配置缺失的安全问题。特有的X-Tir跟踪器 : 跨跃项目的上下层次,贯穿程序来综合分析问题
支持的语言
1. asp.net     
2. VB.Net     
3. c#.Net     
4. ASP     
5. VBscript     
6. VS6     
7.java     
8.JSP     
9.javascript     
10. HTML     
11. XML     
12. C/C++     
13.PHP     
14.T-SQL     
15.PL/SQL     
16. Action script      
17. Object-C (iphone-2012/5)     
18. ColdFusion5.0 - 选购     
19. python -选购     
20. COBOL - 选购     
21.SAP-ABAP -选购1、导出报告
点击tools-reports,有两种报告模式:Generate BIRT Report 和 Generate Legacy Report
选择 Generate BIRT Report

不过默认导出的是英文报告 , 一般很少使用该功能
2、xss漏洞

主要介绍工具如何使用 , 关于漏洞的分析 , 复现 , 前面已经搞过了 , 该漏洞是误报
3、弱口令

4、文件上传
工具扫出来提示的是 路径操控

5、sql注入


搜索行sql注入 , 可以看到是直接拼接的sql语句, 虽然有单引号保护 , 但是可以通过闭合单引号绕过
七、工具的不足
工具本身存在一定量的误报或者漏报
扫描结果需要大量人工确定甄别
csrf, 越权, 逻辑漏洞等扫不到
如用多种语言开发的软件,则需单独分析
不能自动收集常见的代码安全问题 
         
             京公网安备11010802044340号
京公网安备11010802044340号