生命在于学习——代码审计工具

在这里插入图片描述
图片来源于百度图片。
注意:本篇文章仅用于自我学习,笔记记录,不得用于其他用途。

一、引子

在攻方面,传统的黑盒模式是通过扫描器扫描站点或利用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

在这里插入图片描述
修改之后 , 放过数据包
image-20220401163718257
直接跳转到首页 , 复现失败 , 因为在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实践:

  1. 新建项目,打开源码文件夹,点击自动审计即可
  2. 误报可能会很多,扫描完成生成报告即可查看

在这里插入图片描述

实验 : 使用Seay源代码审计工具对留言板源码进行扫描

1、Exec命令执行

命令执行 Exec 函数 , 找到函数 , 右键定位 函数 , 发现是自定义函数 , 并不是命令执行 , 误报

image-20220401172728037

2、sql注入

image-20220401203835639

直接拼接的sql语句 , 变量值可控 , 存在sql注入漏洞 , 可以通过echo当前语句 , 直接查看sql语句

接着又是 命令执行 Exec 函数

image-20220401204619485

误报

3、sql注入

image-20220401204737937

直接拼接的sql语句 , 变量值可控 , 存在sql注入漏洞 , 可以通过echo当前语句 , 直接查看sql语句

剩下的sql注入全是直接拼接的就不一个一个介绍了 , 然后Exec函数是误报

4、文件上传

image-20220401205043168

没有对文件名做任何的处理和过滤 , 可以直接上传webshell

5、伪造客户端ip

image-20220401205325335

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

image-20220403121853769

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

2、xss漏洞

image-20220403122439339

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

3、弱口令

image-20220403122639560

4、文件上传

工具扫出来提示的是 路径操控

image-20220403123255388

5、sql注入

image-20220403123452857

image-20220403123529295

搜索行sql注入 , 可以看到是直接拼接的sql语句, 虽然有单引号保护 , 但是可以通过闭合单引号绕过

七、工具的不足

工具本身存在一定量的误报或者漏报
扫描结果需要大量人工确定甄别
csrf, 越权, 逻辑漏洞等扫不到
如用多种语言开发的软件,则需单独分析

不能自动收集常见的代码安全问题
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值