商业级别Fortify白盒神器介绍与使用分析
转自:http://www.freebuf.com/sectool/95683.html
什么是fortify它又能干些什么?
答:fottify全名叫:Fortify SCA ,是HP的产品 ,是一个静态的、白盒的软件源代码安全测试工具。它通过内置的五大主要分析引擎:数据流、语义、结构、控制流、配置流等对应用软件的源代码进行静态的分析,分析的过程中与它特有的软件安全漏洞规则集进行全面地匹配、查找,从而将源代码中存在的安全漏洞扫描出来,并给予整理报告。
它支持扫描多少种语言?
答:FortifySCA支持的21语言,分别是:
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 -选购
他是免费的吗?
答:不是,是收费的。当然网上也没有破解的。貌似他一个月收费10万。
如何使用?
安装fortify之后,打开

界面:

选择高级扫描

他问要不要更新? 我就选择No,因为这是我私人的,我是在2015年7月份购买的试用期为1个月。怕更新了就用不了了。如果你购买了可以选择YES。
选择之后出现如下界面

浏览意思是:扫描之后保存的结果保存在哪个路径。
然后点击下一步。

参数说明:
enable clean :把上一次的扫描结果清楚,除非换一个build ID,不然中间文件可能对下一次扫描产生影响。
enable translation: 转换,把源码代码转换成nst文件
-64: 是扫描64位的模式,sca默认扫描是32位模式。
-Xmx4000m:4000M大概是4G,制定内存数-Xmx4G :也可以用G定义这个参数建议加
-encoding: 定制编码,UTF-8比较全,工具解析代码的时候指定字符集转换的比较好,建议加,如果中文注释不加会是乱码。
-diable-source-:rendering:不加载与漏洞无关的代码到审计平台上,不建议加,这样代码显示不全。
然后点击下一步

它说:这是一个J2EE Web应用
选择No (因为你扫的是PHP)
然后scan(开始扫描)

Always run in background 意思:总是在后台运行
run in background 意思:后台运行
cancel 意思 : 取消
Details 意思:细节
扫完之后:

none 代表其他 1个
A1 注入 7个
A3 xss 37个
A4 不安全的直接对象引用 35个
A6 敏感数据暴露 4个
A10 未验证的重定向和转发 2个
如果发现是英文的,想改成如下方法中文:

以下是官网提供的分析图:

分析漏洞:
none漏洞:

这是一个可变变量,按照中国人说法简称:“变量覆盖”。
讲一下这个漏洞的原理:
可变变量
$first ="hello";
$hello ="world";
echo $first." ".$$first;
结果是 hello world
$$first就是$hello,因为$first的值是hello
———————————但是在foreach 就不一样了—————————————————–
<?php
$a = 'sss';
foreach ($_GET as $key => $value) {
//如果在foreach那就不一样了
echo $$key; //将$$区分开 然后$key 等于键 然后开始合并 比如打开http://www.com.com/demo.php?a=值 就变成了$a 因为$key的键是a 所以就变成了$a
$$key = $value;//$a = 值 替换变量
}
echo '<hr '>';
echo $a;
?>


A1 注入漏洞:

发现$c变量是由客户端进行GET请求控制的。
safe_replace函数过滤如下字符:
function safe_replace($string) {
$string = str_replace('%20','',$string);
$string = str_replace('%27','',$string);
$string = str_replace('%2527','',$string);
$string = str_replace('*','',$string);
$string = str_replace('"','"',$string);
$string = str_replace("'",'',$string);
$string = str_replace('"','',$string);
$string = str_replace(';','',$string);
$string = str_replace('<','<',$string);
$string = str_replace('>','>',$string);
$string = str_replace("{",'',$string);
$string = str_replace('}','',$string);
$string = str_replace('\\','',$string);
return $string;
}
include $c.".php"; 但是后面有个.php是拼接的。
但是如果php版本小于5.3.40可以采用空字节也就是%00的二进制视作字符串的结束,按照其他说法的话也就是截断。。。。。


A3 xss 漏洞
$field_sql="update ".DB_PRE."member set {$field_sql} where userid={$last_id}";
$query=$this->mysql->query($field_sql);

写入数据库的时候没有任何限制或者输出的时候没有做任何的过滤就直接输出导致造成了XSS。(我就不一一解释了)

A4 不安全的直接对象引用漏洞

文件上传次数未做策略,可导致攻击。

A6 敏感数据暴露漏洞:

A10 未验证的重定向和转发漏洞:
这里我就不去定位看谁使用这个函数了,懂点PHP的人相信都懂。。

整个过程基本已经结束了,但是有点我想提醒大家,在设置内存的时候如果你不设置内存他会自动帮你设置,比如你的电脑内存是8G 他就自动设置为8G 然后就会占用你8G内存,然后搞得你电脑卡卡卡卡卡卡卡的。下次扫之前记得要设置你的内存,如果你电脑是8G内存 设置7G就好了,还剩下1G就可以玩4399小小游戏了。 ~_~
商业级别Fortify白盒神器介绍与使用分析的更多相关文章
- JAVA语言搭建白盒静态代码、黑盒网站插件式自动化安全审计平台
近期打算做一个插件化的白盒静态代码安全审计自动化平台和黑盒网站安全审计自动化平台.现在开源或半开源做黑盒网站安全扫描的平台,大多是基于python脚本,安全人员贡献python脚本插件增强平台功能.对 ...
- JAVA中容器设计的进化史:从白盒到黑盒,再到跻身为设计模式之一的迭代器
大家好,又见面了. 在我们的项目编码中,不可避免的会用到一些容器类,我们可以直接使用List.Map.Set.Array等类型.当然,为了体现业务层面的含义,我们也会根据实际需要自行封装一些专门的Be ...
- GTest Google的一种白盒单元测试框架 开源项目
GTest为google开源的白盒单元测试跨平台测试框架,含丰富的断言.类型参数化测试.死亡测试.以及其他的测试选项设置.文件保存等,以下将对该项目C++的实现进行简要的分析,作为学习记录备份. 基本 ...
- iOS 阶段学习第25天笔记(iOS沙盒机制介绍)
iOS学习(OC语言)知识点整理 一.iOS沙盒机制介绍 1)概念: 每个ios应用都有自己的应用沙盒,应用沙盒就是文件系统目录,与其他应用放入文件 系统隔离,ios系统不允许访问 其他应用的应用沙盒 ...
- iOS沙盒机制介绍,Block 的介绍
一.iOS沙盒机制介绍 (转载) 1)概念:每个ios应用都有自己的应用沙盒,应用沙盒就是文件系统目录,与其他应用放入文件 系统隔离,ios系统不允许访问 其他应用的应用沙盒,但在ios8中已经开放访 ...
- 浅析白盒审计中的字符编码及SQL注入
尽管现在呼吁所有的程序都使用unicode编码,所有的网站都使用utf-8编码,来一个统一的国际规范.但仍然有很多,包括国内及国外(特别是非英语国家)的一些cms,仍然使用着自己国家的一套编码,比如g ...
- JAVA白盒安全测试需要关注的API
JAVA白盒安全测试需要关注的APIhttp://blog.csdn.net/testing_is_believing/article/details/19502167
- 亿能测试白盒安全测试模板V1.0发布
亿能测试白盒安全测试模板V1.0发布http://automationqa.com/forum.php?mod=viewthread&tid=2911&fromuid=21
- 移动測试技术保护源码!解码全球首款移动端白盒測试工具ThreadingTest (文章转自己主动点科技)
作者 智晓锋 - 2014/07/14 自从斯诺登曝光美监听丑闻事件之后,我国政府就将信息安全问题上升到了国家安全的高度.基于此.国内的一家创业公司推出了智能型Android真机白盒測试以及开发辅助类 ...
随机推荐
- caffe读取多标签的lmdb数据
问题描述: lmdb文件支持数据+标签的形式,但是却只能写入一个标签,引入多标签的解决方法有很多,这儿详细说一下我的办法:制作多个data数据,分别加入一个标签.我的方法只适用于标签数量较少的情况,标 ...
- curl 无法访问 https 协议
转自http://blog.mutoo.im/2013/12/curl-could-not-communicate-with-https-sites.html mac升级为10.10以后,homebr ...
- 使用FileZilla连接Linux
FileZilla是一个免费开源的FTP软件,分为客户端版本和服务器版本,具备所有的FTP软件功能.可控性.有条理的界面和管理多站点的简化方式使得Filezilla客户端版成为一个方便高效的FTP ...
- DS05--查找
一.学习总结 1.查找的思维导图 2.查找学习体会 2.1 关联容器和顺序容器 c++中有两种类型的容器:顺序容器和关联容器,顺序容器主要有:vector.list.deque等.其中vector表示 ...
- 给scrapy添加代理IP
request.meta['proxy'] = 'http://'+'175.42.123.111:33995'
- Mysql无法创建外键的原因 !!!
在MySQL中创建外键时,经常会遇到问题而失败,这是因为Mysql中还有很多细节需要我们去留意,我自己总结并查阅资料后列出了以下几种常见原因. 1. 两个字段的类型或者大小不严格匹配.例如,如果一个 ...
- 浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
做过 API 的人应该了解,其实开发 API 比开发 WEB 更简洁,但可能逻辑更复杂,因为 API 其实就是数据输出,不用呈现页面,所以也就不存在 MVC(API 只有 M 和 C),那么我们来探讨 ...
- 自己动手实现XXX系列
前记: 最近看了rongjun的一片文章:自己动手实现jdk代理类.按照上面的例子敲完才发现,JDK动态代理 实现底层原来如此简单,只是大量的使用了反射,类编译,类加载一些常规的东西 而且本质也是如实 ...
- Python模块学习 ---- datetime
Python提供了多个内置模块用于操作日期时间,像calendar,time,datetime.time模块我在之前的文章已经有所介绍,它提供的接口与C标准库time.h基本一致.相比于time模块, ...
- django之部署
布署 从uwsgi.nginx.静态文件三个方面处理 服务器介绍 服务器:私有服务器.公有服务器 私有服务器:公司自己购买.自己维护,只布署自己的应用,可供公司内部或外网访问 公有服务器:集成好运营环 ...