静态代码扫描方法及工具介绍阅读清单腾讯云开发者社区

本文作者:国勇(信安之路特约作者)

静态扫描就是不运行程序,通过扫描源代码的方式检查漏洞,常见的方法也有多种,如把源代码生成 AST(抽象语法树)后对 AST 进行分析,找出用户可控变量的使用过程是否流入到了危险函数,从而定位出漏洞;或者通过正则规则来匹配源代码,根据平常容易产生漏洞的代码定制出规则,把这些规则代入到代码中进行验证来定位漏洞。当然静态扫描由于不运行程序也有好多事情处理不了,如程序通过运算得到的一个结果后,就没办法分析这个结果了,所以需要动态运行程序来解决这个问题,也就是动态扫描,动态扫描可以通过单元测试或人工扫描等方式,下面分别介绍一下 AST 扫描 与 正则匹配两种常见静态扫描方式。

扫描程序负责把所有的 source 与 skin 查找出来,并找出 source 已流入到了 skin 中的代码已及行号,并存入到结果中,举个例子:

这句代码命中了 source 流入到了敏感 skin 中,从而产生了漏洞,也很明显能看出产生了 domXss,不过在实际情况中更加复杂,如把 source 当成了函数参数,经过了多个函数处理,扫描程序就需要跟踪这些这种流入到不同的函数中的情况。

这种方式比较简单,就是匹配程序中是否出现了哪些敏感字符,如 bodyParse() 或者敏感代码,当函数中的代码命中了设置的规则,则就产生了漏洞,举个例子

下面分别介绍两款工具,jsprime 和 NodeJSScan 的介绍与实现原理,其中 jsprime 是通过分析 AST 扫描,NodeJSScan 是通过正则表达式扫描。

效果图,左边是源码,右边是分析结果

jsprime 是一个静态代码分析工具,其核心是基于 Esprima ECMAScript 生成 AST 进行扫描,此工具有在 blackhat 上演讲过,他的主要功能有:

1、JS 库 source 与 skin 识别

2、JQuery 及 YUI 框架识别

3、变量与函数追踪(这项功能作为我们代码流分析算法的组成部分)。

4、变量与函数内容识别分析(这项功能作为我们代码流分析算法的组成部分)。

5、已知过滤器功能识别。

6、遵循面向对象程序与原型设计合规标准。

7、最大程度降低误报机率。

8、支持 JavaScript 代码精简。

9、极高运行速度。

10、只需点击即可操作.

1、把源代码喂给 Esprime,Esprime 负责把代码生成 AST。

2、接下来就是解析 JSON AST(Esprime 会生成 JSON 格式的 AST)。

3、找出所有的 sources(包括 对象,原型) ,同时跟踪 sources 的作用范围。

4、找出 sources 别名,也就是把 soruce 值赋值给了另一变量,同时跟踪 sources 的作用范围。

5、找出 skins 和 skins 别名,同时跟踪他们的作用范围。

6、找出 sources 被哪些函数当成参数使用,包括闭包函数、匿名函数,同时跟踪他们的返回值。

7、当所有的 sources 和 source 别名被收集,检查其中的 source 有过滤函数处理了的,则放弃。

8、剩下的 source 当被赋值给 skins 或被传递为参数操作后到达 skins 的,则跟踪这些 source。

9、以同样的流程,按照反向重复一次,以确认我们可以反向到达同一个 source。

10、一旦确认 source 流入到了 skin 中,则取出行号和语句,然后以不同颜色输出到报表中。

1、下载源码:

2、解压进入到 jsprime-node 文件夹

5、把代码贴到框中进行分析

6、有一些测试代码,可参考:

jsprime-blackhatusa13new:

DOM XSS Sources & sinks:

ra2-dom-xss-scanner:

NodeJSScan 是一套用 python 实现的 node 应用代码扫描器,他的原理是通过正则表达式来匹配源码文件中的每一行,每个正则表达式都代表一种漏洞扫描规则,如是否使用了 url 中的值当成 readFile 函数参数,把这些规则用来检查代码中的每一行,一旦匹配则就说明有漏洞。

举个例子:

1、用户把代码打包成一个 zip 包并上传,服务端解压这个包

2、迭代每一个文件(有文件夹则递归)把读出文件内容

3、文件内容通过 jsbeautify 格式化,并把注释去掉

4、迭代每一行,把代码代入设置的规则中(正则,或字符串查找),当匹配了,则记录起来

6、把匹配规则的代码行按类别存放,如 rce,xss,ssrf,sqli

THE END
0.亲测免费程序静默参数扫描工具【下载地址】程序静默参数扫描工具程序静默参数扫描工具是一款专为系统封装设计的实用工具,旨在帮助用户快速获取安装程序的静默参数,解决部署过程中的参数设置问题。它支持一键扫描NSIS打包的EXE安装包,自动生成带有参数的安装全路径,极大简化了后续安装操作。工具界面简洁,操作便捷,适合系统封装人员使用。使用前需确保已安装.NET jvzquC41dnuh0lxfp0tfv8lkvdrpih589770c{ykenk0fnyckny03=<395?59
1.亲测免费程序静默参数扫描工具【下载地址】程序静默参数扫描工具这款“程序静默参数扫描工具”专为Windows系统设计,旨在帮助用户快速获取exe文件的静默运行参数。通过简单的操作,用户只需下载并解压工具,选择目标exe文件,工具便能自动扫描并显示相关参数。无论是系统管理员还是开发人员,都能借助此工具轻松实现程序的静默安装或运行,提升工作效率。工具操jvzquC41dnuh0lxfp0tfv8lkvdrpih5893?0c{ykenk0fnyckny03=<873=5;
2.【Autoit原创首发】软件安装程序静默参数识别工具v1.1自动化运维系列选择单个程序进行静默参数识别,识别后可点击“执行静态安装”进行测试是否正常。批量扫描文件夹:支持选择jvzquC41yy}/7;uqlkk/ew4vjtkbf67277=2866/30nuou
3.程序静默参数扫描工具:实现自动化安装的神器资源浏览阅读92次。程序静默参数扫描工具是一种用于自动化安装软件的IT专业工具,其主要功能是帮助用户识别和获取安装程序的静默安装参数。这些参数允许软件在没有用户干预的情况下自动完成安装过程,常用于系统封装、网络部署和批量安装等场景。接下来,我们将深入探讨该工jvzquC41ygtlw7hufp4og}4fqe53c@9m{6|g:
4.程序静默参数扫描工具静默参数扫描工具 上传者:u012118303时间:2013-09-13 SilentEye静默之眼 强大的媒体加密程序是隐写一个简单易用的跨平台应用程序的设计,在这种情况下,隐藏的信息为图片或声音,它提供了一个很好的接口集成新的隐写算法和过程通过使用插件的密码。 SilentEye可以把你需要加密的信息隐藏到普通的图片或者音乐中,比如你可以jvzquC41yy}/k}j{g0ipo8wguq{sen4|qw}vzrsi746.5@67676
5.静默参数扫描工具下载v1.0绿色版(扫描软件静默安装参数)软件标签: 静默参数扫描工具是可以帮助大家扫描一些软件安装包静默参数的工具,静默安装指的是安装过程中不会有任何界面,不会干扰用户的一种安装方式! 如果你下的软件有静默安装的需求,但是不知道静默参数,那么就可以使用这个软件来扫描了。 静默参数一般会使用 /Sjvzq<84yyy4lm3pgv5tqoy137=10qyon
6.【静默参数扫描工具绿色版怎么用】静默参数扫描工具绿色版好不静默参数扫描工具能扫描仪程序的默认设置安装参数,生成含有参数的安装全途径,让程序生成参数后可全自动开展安装。静默参数扫描工具 绿色版软件特性 静默参数扫描工具能扫描仪程序的默认设置安装参数,生成含有参数的安装全途径,让程序生成参数后可全自动开展安装。jvzquC41zkg{cr3|qn4dqv3ep1hbktj175<45?3ujvsm
7.程序静默参数扫描工具.rar下载windows获取exe静默运行参数工具 相关下载链接://download.csdn.net/download/wmhcyb/15707623?utm_source=bbsseo jvzquC41ddy/e|ip0pku1}trkey05B>326;17
8.程序静默参数扫描工具v1.0绿色版下载程序静默参数扫描工具能够让安装程序编程参数,不需要用户一步一步的操作了,非常的方便jvzq<84fqyt{c7hp1uugv86;38=/j}rn
9.程序静默参数扫描工具绿色版程序静默参数扫描工具绿色版软件大小:1.23 MB 更新日期:2008-07-21 软件语言:简体中文 软件类别:系统增强 软件授权:共享软件 软件官网:未知 适用平台:Win2003, WinXP, Win2000, NT, WinME 软件厂商: 0.0分 50% 50% 本地下载文件大小:1.23 MB 高速下载需下载高速下载器,提速50% jvzquC41yy}/rl557;4dp8iqypoohx4466?/j}rn
10.程序静默参数扫描工具v1.0绿色版下载更新时间: 2013-03-21 软件大小:661.00KB 软件类型:国产软件 软件语言:简体中文 软件授权:免费软件 软件分类:安装制作 支持系统: 软件介绍 下载地址 网友评论 程序静默参数扫描工具能够让安装程序编程参数,不需要用户一步一步的操作了,非常的方便 程序静默参数扫描工具v1.0绿色版下载地址 jvzquC41yy}/7:6;0et0uxkv13?28@3jvor
11.静默参数扫描与CMD命令查询如何查软件静默安装参数 1、使用静默参数扫描工具 链接: https://pan.baidu.com/s/1dJEBgcmaw7YKEv4Gia4ejw 提取码: mrtt 2、win+R键打开“运行”,在运行框里输入“CMD”回车,比方说你要查询的文件名叫haoya.exe,并且在C盘中SC这个目录里放着,那么按以下命令输入:jvzquC41dnuh0lxfp0tfv8mqpiqbkqzc3;>81jwvkerf1mjvckrt1A=792:85
12.Gobuster静默模式实战:无交互环境下的自动化扫描指南在CI/CD流水线、定时任务或后台服务中集成Gobuster进行目录扫描时,你是否曾遭遇过这些困扰?进度条输出打乱日志格式、交互性提示阻塞自动化流程、冗余信息淹没关键结果?Gobuster的静默模式(Quiet Mode)正是为解决这些问题而生。本文将系统讲解静默模式的实现原理、参数配置与实战技巧,帮助你构建稳定可靠的自动化扫描流程。 jvzquC41dnuh0lxfp0tfv8lkvdrpih523980c{ykenk0fnyckny03>66:2=93
13.静默参数扫描工具静默参数扫描工具 扫描工具2013-09-13 上传大小:13.00MB 所需:41积分/C币 Oracle RAC静默安装部署操作说明 RAC安装从开始操作系统环境准备,Grid软件静默安装,Database软件静默安装,补丁操作,建库操作,安全加固等内容。 上传者:jingmenghun时间:2018-07-04 jvzquC41yy}/k}j{g0ipo8wguq{sen4w23823A825/<38<>67
14.2011年新款静默安装参数扫描软件介绍静默安装通常需要一个配置文件或命令行参数来指定安装选项,如安装路径、组件选择、接受许可协议等。参数生成则是指通过特定软件工具或手动编写脚本的方式,来自动创建这些安装选项配置的过程。 描述: "2011软件自动安装参数扫描软件 很新的一款软件" 这里的描述提到了一款软件,它专注于自动扫描生成用于软件静默安装的参数。2jvzquC41ygtlw7hufp4og}4fqe5gmx9:tu=6q
15.静默参数扫描工具Search.exe程序静默参数扫描工具 这是一款系统封装必备的小工具,主要用于查看安装程序静默参数,你想在部署时调用某个程序来静默运行,可是你不知道参数怎么办?这是就需要一款工具来进行扫描静默参数,这款工具同时还支持查看使用NSIS打包的EXE安装包的静默参数,使用方法很简单,点击“浏览”,找到需要查看的EXE程序,选择即可查看! 静默jvzquC41yy}/k}j{g0ipo8wguq{sen4rnc2;B9/3667:9<
16.软件静默安装器(SilentInstallHelper).exe程序静默参数扫描工具.rar windows获取exe静默运行参数工具 上传者:wmhcyb时间:2021-03-10 DPInst32位64位安装软件.rar DPInst32.exe 与 DPInst64.exeDPInst32.exe 与 DPInst64.exe 上传者:weixin_60619101时间:2021-09-09 test(vc_redist.x86.exe静默安装.nsi jvzquC41yy}/k}j{g0ipo8wguq{sen4ssa966B9:57323::8727
17.gitee.com/proxy[+] 2021/12/7 新增rdp扫描,新增添加端口参数-pa 3389(会在原有端口列表基础上,新增该端口) [+] 2021/12/1 优化xray解析模块,支持groups、新增poc,授权命令执行扫描,优化poc模块,优化icmp模块,ssh模块加入私钥连接 [+] 2021/5/15 新增win03版本(删减了xray_poc模块),增加-silent 静默扫描模式,添加webjvzquC41ikzfg7hqo1vsq~/i1ltejs
18.MicrosofteCDN静默测试框架|MicrosoftLearn本文档的目的是提供管理公司网络广播平台的技术团队,说明如何使用 Microsoft eCDN 静默测试工具来审核其公司网络 () ,以便为实际事件做准备。 Microsoft eCDN 静默测试框架允许在多个设备上轻松运行模拟,以便模拟和检查给定网络在视频事件负载下的行为方式。 jvzquC41nggsp7rketutqoy0eqs0|q2ep1kdfw4vgenoklfn/fudwvjpvczjqw4uknkov6yguvooi6ktcokxq{p
19.端口扫描工具横向对比测评工具版本: v1.3.2 文件大小(解压后): 0.4M 最后更新: 2021.01 扫描线程: 800 命令参数:masscan64.exe --open --rate 800 -p 1-65535 -iL ip.txt --banners -oX masscan.xml 扫描耗时: 5h36m IP存活数: 70 端口开放数: 749 资源占用: 2%-3% jvzquC41z|4bnr~wp0ipo8sgyu527:>2
20.ohpmroot常用命令三方依赖管理工具(ohpm)命令行工具HarmonyOS 指南 版本说明 指南 API参考 最佳实践 FAQ 变更预告 更多 入门 基础入门 应用开发导读 快速入门 开发准备 构建第一个HarmonyOS应用(ArkTS) 开发基础知识 应用程序包基础知识 应用程序包概述 应用程序包结构 Stage模型应用程序包结构 FA模型应用程序包结构 应用程序包开发与使用 jvzquC41fg|fnxugt0nvc€jk0eun1ltpuwsft8hp1fud1qftoqtzq|2iwkjfu8nfg/uirv2tqqz
21.使用PortQry命令行工具交互模式。 类似于命令行模式,但可以使用快捷命令和参数。 备注 可以下载名为 PortQryUI 的单独工具,其中包括 PortQry 的图形 UI。 PortQryUI 具有多个功能,可更轻松地使用 PortQry。 若要获取 PortQryUI 工具,请参阅 PortQryUI - PortQry 命令行端口扫描程序的用户界面。 适用于: 支持的 Windows 版本 PortjvzquC41uwvqq{y0okisq|thv0ipo8mgnr595;>3;
22.获取命令行工具命令行工具该命令行工具集合了HarmonyOS应用开发所用到的系列工具,包括代码检查codelinter、堆栈解析hstack、命令行构建hvigorw、三方依赖管理ohpm和SDK中包含的一系列工具,本文主要讲解codelinter、hstack、hvigorw等工具的使用方式,关于SDK中包含的工具的使用指导请参考调试命令。 jvzquC41fg|fnxugt0nvc€jk0eun1ltpuwsft8hp1fud1qftoqtzq|2iwkjfu8nfg/ipovfpfnoog6lgv/\25
23.如何使用jsFinder快速全面地获取目标应用的JavaScript文件5、参数中指定的文件或名为“output.txt”的默认文件; 6、支持将能够表示程序执行状态的信息打印到命令行窗口或输出文件中; 7、允许程序通过命令参数控制Verbose模式或静默模式; 工具安装 jsFinder基于Go v1.20开发,因此我们首先需要在本地设备上安装并配置好Go v1.20环境。接下来,运行下列命令即可获取该项目最新版本jvzquC41yy}/7:hvq0ipo8ftvkimg8<7:8?60qyon