商业级别Fortify白盒神器介绍与使用分析

什么是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小小游戏了。~_~

*投稿作者:心东,转自须注明来自FreeBuf黑客与极客(FreeBuf.COM)

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2016-02-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

从websocket看go的应用

Go是互联网时代的通用编程语言。这样它就和命令行时代的C语言、图示界面时代的C++、以及互联网早期的Java语言等有不同的侧重。它强调保持自身的精巧和独立,从而...

31660
来自专栏闵开慧

Exception in thread "main" java.lang.OutOfMemor...

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space 其实这样的错误有时...

335100
来自专栏Python数据科学

Python爬虫之模拟登录wechat

不知何时,微信已经成为我们不可缺少的一部分了,我们的社交圈、关注的新闻或是公众号、还有个人信息或是隐私都被绑定在了一起。既然它这么重要,如果我们可以利用爬虫模拟...

3.3K20
来自专栏后台全栈之路

在 libevent 中使用 MariaDB(MySQL)

在之前我翻译的官方文档中提到了 MariaDB 提供了对异步 I/O 的支持。那篇文章是一个比较简要的介绍。不过实际适配中,官方也提供了一个完整适配 libev...

83750
来自专栏FreeBuf

S2-029 Struts2 标签远程代码执行分析(含POC)

0x00 标签介绍 Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性。实现了更好的代码...

37680
来自专栏FreeBuf

Oracle Advanced Support系统SQL注入漏洞挖掘经验分享

Oracle Advanced Support系统SQL注入漏洞分析 一年多前我在客户的一个外部环境中执行渗透测试,任何外部环境渗透测试的重要步骤之一就是挖掘出...

30270
来自专栏用户2442861的专栏

初学Redis(1)——认识Redis

http://blog.csdn.net/qtyl1988/article/details/39553339

18920
来自专栏非著名程序员

Android Studio你不知道的调试技巧

? 写代码不可避免有Bug,通常情况下除了日志最直接的调试手段就是debug;那么你的调试技术停留在哪一阶段呢?仅仅是下个断点单步执行吗?或者你知道 Eval...

322100
来自专栏GopherCoder

『Beego + Swagger 快速上手』

23330
来自专栏北京马哥教育

计算机操作系统学习笔记_进程管理--死锁

进程管理 --死锁 一、死锁的概念 1.死锁的概念   系统中两个或两个以上的进程无限期地相互等待永远不会发生的条件,系统处于一种停滞状态,这种情况称为死锁。 ...

30270

扫码关注云+社区

领取腾讯云代金券