你好,欢迎进入江苏优软数字科技有限公司官网!

诚信、勤奋、创新、卓越

友好定价、专业客服支持、正版软件一站式服务提供

13262879759

工作日:9:00-22:00

高效PHP代码审计:Sublime Text 3必备插件kiwi安全工具使用指南

发布时间:2026-01-12

浏览次数:0

1 关于

一个适用于黑客、安全研究人员以及安全测试人员,支持多种语言代码审计工作的源代码安全审计工具是 kiwi 项目。

代码安全审计工作一般需要2个辅助工具:

代码被审计(搜索呀)的工具,它具备从代码当中找寻到有可能存在安全方面问题的位置的能力,而且还能够生成呈现出可视化特点的报告呢。

一种具备索引代码这一功能从而达成跳转效果的、对阅读代码予以便利的工具,诸如,类似,像vim ctags 。

kiwi是一款基于文本的安全源码审计工具,它不会针对源代码去做语法解析之事,而是采用简单的正则表达式方式来搜索代码,并且还提供了问题确认机制以用于减少误报。

猕猴桃工具能够跟工具极为出色地联合起来,致使扫描报告里的问题能够直接关联到对应的代码。要是常常开展源代码审计工作,大力推荐运用猕猴桃的解决办法,。

1.kiwi是个系统,其规则与框架完全分离,如此一来,用户能够便利地自行定义规则,且无需涉及任何框架层面的更改。

2.在该项目中有3个目录,分别对应3个子项目:

奇异果。此目录乃奇异果工具关键主体架构,得安装至系统里。

这一目录,是属于kiwi的缺省规则目录,放置于系统里的任何位置都行,用户能够在这个目录之中,去修改、编写自身的搜索规则。

该目录给出了一个 text3插件,此插件用于跟kiwi一同合作使用,它能够对扫描结果予以高亮显示,并且能借由快捷键跳转至代码 text3所打开的代码目录对应的代码行数等 。

注:工具是一个B/S架构的大型源码阅读工具,请参考 这里

1.1 kiwi的优劣

当下主流的源码审计工具大多是运用语法解析、插件检测的途径来达成,也就是说,工具会针对目标代码开展语法剖析,进而生成语法树,接着遍历语法树的各个节点,针对每个节点调用全部插件(插件用以实现检测语法节点有无安全漏洞)。

进行语法解析,插件检测的这般方式显得更为精确,举例来说,检测eval函数时,正则表达式的方式有可能会匹配注释,然而语法解析的方式却不会,而且语法解析的方式能够回溯语法节点进而达成“数据流分析”。

然而,语法解析插件检测的实现途径极为繁杂,得针对所支持的每一种编程语言编写语法解析模块sublime text 3 php 插件,付出的代价相当大,所以商业性的工具价格高昂;并且开源的工具所支持的编程语言种类极少,极难达成跨多种语言审计。

语法解析,插件检测,这样的方式,相对于高昂代价而言,所带来的收益是有限的。实际上,多数商业源码审计工具面向的对象都是非安全人员,然而却有很多黑客依旧在使用grep去进行代码审计。

作者觉得当下的这些工具不太契合专业安全人员以及黑客,就源码审计而言,极具技术含量且极富创造性的是检测规则,专业安全人员在开展源码审计时,检测规则并非固定不变,在一次源码审计进程中会持续发觉一些新的危险代码,需不断调整检测规则以顺应新的变化,所以自定义检测规则对于专业安全人员和黑客来讲才是最为重要的。

奇异果是这样一种工具,借助它能够便利地随时去 检测规则,随时再度开展扫描操作 ,奇异果虽说在实现原理方面落后于主流技术,然而却更为契合专业安全人员 。

1.2 解决方案选择

这里推荐两种解决方案来实现安全源码审计:

1. 几维鸟。此方案适宜大规模的源码审查,能够处理千万行规模、团队协作的源码审查需求(作者所在公司正是借助该方案达成)。

2.几维鸟文本3 。这个方案适宜于个人桌面层面的运用,去处理万行以及以下的情况,满足单人代码审计的需要的。

2 安装

2.1 kiwi 安装

使用一下命令安装kiwi:

在git环境下,执行克隆操作,克隆的目标地址是https://.com//kiwi.git 。

cd kiwi/kiwi

setup.py

2.2 安装

不要求进行安装,放置于磁盘里某一个目录就行,扫描之际借助以下两种办法定位至目录:

通过 环境变量指定目录。(推荐的方式)

在kiwi扫描命令行中通过 -f/-- 参数指定目录

2.3 安装

Step 1.

获取

git clone https://.com//kiwi.git

Step 2.

打开 Text 3 -

-->

Step 3.

将 目录整个 copy 到 -

的运行依赖于 r 工具,从

https://.com//r/

下载编译好的工具,并将其加入到环境变量。

3 kiwi 使用

kiwi在安装后会生成两个 -:

kiwi. kiwi的扫描入口命令

kiwi-. 用于查看db类型的扫描报告

可使用 kiwi -h 查看kiwi的帮助信息

Kiwi 代码安全扫描

usage: kiwi -t

-f

-i

...

-e

...

--

...

--

...

--ectx ECTX

-o

...

Kiwi. 代码安全审计工具

:

展示此帮助信息,然后退出,通过 -h 或者 --help 来实现 。

-t , --

指定待扫描的目录

-f , --

指定漏洞特征定义目录

-i

...

, --

...

指定加载哪些漏洞特征

-e

...

, --

...

指定去扫描哪些种类的文件呢,比如说,要是输入-e php js的话,那就会去扫描.php以及.js这些文件 。

--

...

明确规定忽略对哪些类型的文件进行扫描,比如说sublime text 3 php 插件,若为-- php js,那么就是忽略对.php以及.js文件的扫描 。

--

...

忽略扫描文件路径包含关键字的文件

所指定的,乃是用于该扫描结果显示之时,其上下文行数的,为-c SCTX, --sctx SCTX 。

用于评估漏洞所需的、指定上下文信息的文件行数,此为 --ectx ECTX 所涉及的内容 。

-o

...

, --

...

分别指定输出文件在该报告之中,其支持.txt格式,支持.html格式,支持.json格式,支持.db格式 。

-v, --         详细模式,输出扫描过程信息

使用 kiwi- -h 查看kiwi-的帮助信息

Kiwi .

--------------------------------------------------------------------------------

usage: kiwi-

-d

Kiwi. Audit code for

:

-h, --help            show this help and exit

- 以 -p PORT 或者 --port PORT 这样的形式,来指定监听端口,而默认的监听端口是5000 。

--ip IP               指定监听IP

-d , --

指定扫描报告目录

3.1 kiwi扫描示例

在一次扫描中,需要指定:

被扫描对象,即代码目录

正在被使用的扫描规则的目录,要是不期望每一次都去指定规则目录的话,那么能够借助设置环境变量,进而实现永久指定的操作 。

扫描示例

奇异鸟,前往临时文件夹,针对家目录里某用户的文件,输出为网页文件 。

kiwi -t /tmp/ -o .db

3.2 规则编写

可通过查看 目录中的内容来获取规则编写示例。

用yaml语法编写的 kiwi 的规则定义,于规则编写里涉及如下几个简单概念:

1、规则文件

规则文件,是说那种以“.”作为后缀的文件,它记录着具体的代码搜索规则的定义 。

评估函数,它是一个原型固定的函数,被用于后期搜索结果的确认,举个例子,当搜索到的是.(cmd, shell=True)这种情况时,在该评估函数当中能够去确认参数shell到底是不是True,以此来减小误报的情况 。

3、map文件

kiwi工具具备跨语言特性,所以要对不同编程语言的文件加以区分,map文件用于解决编程语言区分问题,像.py文件被视作脚本 。

4、规则文件

这是一份有着特殊用途的规则文件,其规则专门用来匹配文件名,此规则文件旨在协助安全人员找寻敏感文件,譬如 .php 。

的目录结构如下:

哦,这是一个目录呢,它是用来存放评估函数的,被叫做evals 。

.. .. .. .py  # 文件,评估函数脚本

.. .. .           # 文件,规则文件

.. .. java.

你提供的内容表述不太明确,请详细清晰地说明一下具体的改写要求,以便我能更准确地按照规则进行改写 。

3.2.1 编写map文件

每当新增加一门编程语言的规则时,需要编辑map文件,例如:

:

- : "\\.py$"

scope:

- : "\\.php\\d $"

scope: php

- : "\\.java$"

scope: java

- : "\\.sh$"

scope: linux-shell

:

- : "#!/usr/bin\\w "

scope:

- : "

如有侵权请联系删除!

13262879759

微信二维码