OWASP ASST(自动化软件安全工具包) | 一款新颖的开源Web安全扫描器。
注意:AWSS 是 ASST 的旧名称

Web应用程序已成为日常生活中不可或缺的一部分,但其中许多应用在部署时存在可能被致命利用的关键漏洞。随着用于开发这些应用程序的技术日益复杂,攻击者的技术也愈发高明。攻击者不再需要物理接触受害者,他们可以同时攻击多人,而且被抓获并绳之以法的可能性极低。
自动化Web漏洞扫描器被广泛用于评估Web应用程序的安全性。与耗时、劳动密集且效率低下的传统手动漏洞检测相比,它们可以提高漏洞扫描的效率。互联网上有很多Web漏洞扫描器,但它们通常不解释可能的攻击方式以及如何采取对策。
我们设计并实现了一款新的自动化Web漏洞扫描器,名为自动化软件安全工具包(ASST),它可以扫描Web项目的源代码,并生成一份报告,详细解释每个可能的漏洞以及如何防御。我们测试了ASST的性能,并将其结果与其他主要的开源漏洞扫描器进行了比较。我们的结果表明,ASST能够更全面、更准确地识别Web软件安全漏洞。
注意:该工具仍在开发中,如遇到任何错误,请报告。
ASST是一款开源的源代码扫描工具,它是一个CLI(命令行界面)应用程序,使用JavaScript(Node.js框架)开发。
目前专注于PHP和MySQL编程语言,但其核心功能已就绪并向所有人开放,程序员可以贡献并添加插件或扩展,以增加功能并使其能够扫描其他编程语言,如Java、C#、Python等及其框架。因此,其基础设施旨在让其他程序员参与贡献,使其变得更好、更具创新性。
据我们所知,ASST是唯一一款根据OWASP Top 10 Web应用程序安全风险来扫描PHP语言的工具。
当ASST扫描一个项目时,它会逐行检查每个文件是否存在安全漏洞。如果检测到漏洞,它会在报告中提示漏洞所在文件的哪一行,并提供一个“点击此处”链接来解释该攻击方式以及如何防御。
ASST的结果以HTML报告形式呈现,并链接到PDF文件,用于解释每种攻击及其保护机制。
ASST可以轻松扩展,以支持其他可被扫描漏洞的编程语言。该项目是开源的,因此具有网络安全专业知识的程序员可以贡献或分叉工具包并添加功能。其他编程语言,如Python、C#、Java或Node.js本身,可以作为后端服务器代码被添加以进行漏洞扫描。
如果你是一名经验丰富的安全开发者,你可以贡献以改进当前版本,或者贡献添加新的可被扫描的编程语言。 但在改进时需要遵循以下规则:
要使ASST 100%正常工作,你需要安装:
在Windows上运行ASST的完整视频:https://youtu.be/FKxDa3zYz1E
你可以从以下地址下载适用于Windows的XAMPP:https://www.apachefriends.org/download.html,选择适合你项目的PHP版本,如果你不知道选哪个版本,只需选择第一个适用于Windows的版本。
下载并安装XAMPP(下一步、下一步、下一步、完成)后,运行XAMPP控制面板,你可以在开始菜单搜索栏中输入XAMPP,然后看到它,运行它,在Apache和MySQL标签旁边点击“开始”按钮。
确保你的电脑没有安装虚拟机程序,因为XAMPP和虚拟机端口冲突,你将需要使用任务管理器强制关闭VM后台服务(如果你不知道我在说什么,请谷歌搜索)。
确保Skype程序已关闭(即使是从系统托盘中),因为它们也会发生端口冲突,你可以在启动XAMPP后运行Skype。
将你的项目文件夹放在htdocs中:默认路径为 "C:\xampp\htdocs\YourProjectFolderName"
打开浏览器,输入:localhost/phpmyadmin,创建一个空数据库,导入你的 project_database.sql 文件,打开你的项目文件夹,修改项目配置文件以连接到MySQL的本地主机:默认配置为:主机:"localhost" 或 "127.0.0.1",用户名:"root",密码:""(空字符串),数据库名:"你在phpmyadmin中选择的数据库名称"
你必须从以下地址下载特定版本的Node.js for Windows:https://nodejs.org/en/blog/release/v12.13.0/ 选择(Windows 64-bit Installer),然后下载、下一步、下一步、下一步、完成。
我们不会每个月跟进Node.js的升级,因此如果你想自行测试,可以从这里下载最新的Node.js版本:https://nodejs.org/en/download/ 选择(Windows Installer (.msi)),下载并运行,下一步、下一步、下一步、完成。
从此GitHub页面下载并解压ASST项目,将文件夹重命名为 "ASST",而不是 "ASST-main",将ASST文件夹放在你的Web项目旁边以进行扫描,默认路径:"C:\xampp\htdocs\ASST"
打开ASST文件夹内的 config.js,在 DEFAULT_PROJECT_PATH_TO_SCAN 变量中设置你的Web项目文件夹名称。
打开ASST文件夹内的 config_php_lang.js:如果你使用MySQL,请按照文件中的说明设置变量;如果你不使用MySQL,只需将 IS_DBMS_USED 变量设置为 false,并忽略其余内容。注意,PHP_EXE_BIN_PATH 设置为XAMPP的默认位置,如果你使用不同的PHP二进制文件或不同的XAMPP位置,请进行更改。
双击 ASST.bat 运行。如果被Windows Defender Smart Screen阻止,点击“更多信息”然后“仍要运行”以允许,或者你可以直接使用CMD命令运行。
运行以下命令一次以安装此项目的 node_modules:
$ cd C:\xampp\htdocs\ASST && npm install
默认运行ASST的CMD命令:
$ node C:\xampp\htdocs\ASST\main.js
在Ubuntu上运行ASST的完整视频:https://youtu.be/XrAB8_BHxfo
使用Web浏览器打开此链接:https://www.apachefriends.org/download.html 查找"XAMPP for Linux"部分,选择适合你项目的PHP版本并下载,如果你不知道选哪个版本,只需选择第一个。 或者你可以使用终端通过"wget"命令下载XAMPP,但你需要知道并拥有正确的URL版本才能下载。
现在在终端中操作:
$ cd Downloads
$ ls
你应该看到你下载的XAMPP安装文件。
$ sudo chmod +x xampp-linux-*
$ sudo ./xampp-linux-*
稍等片刻,安装程序运行,然后按照说明操作。下载并安装XAMPP后,运行它。
$ sudo /opt/lampp/lampp start
将你的项目文件夹放在htdocs中:默认路径 "/opt/lampp/htdocs/YourProjectFolderName"
打开浏览器,输入:localhost/phpmyadmin,创建一个空数据库,导入你的 project_database.sql 文件,打开你的项目文件夹,修改项目配置文件以连接到MySQL的本地主机:默认配置为:主机:"localhost" 或 "127.0.0.1",用户名:"root",密码:""(空字符串),数据库名:"你在phpmyadmin中选择的数据库名称"
$ sudo apt-get install nodejs -y
$ sudo apt-get install npm -y
你必须设置特定版本的Node.js,以便ASST正常运行而不会出现问题。
$ sudo npm install n -g
$ sudo n 12.13.0
我们不会每个月跟进Node.js的升级,因此如果你想自行测试,可以忽略最后两个使用npm安装"n"的命令。
从此GitHub页面下载并解压ASST项目,使用浏览器、wget或git,将文件夹重命名为 "ASST",而不是 "ASST-main",将ASST文件夹放在你的Web项目旁边以进行扫描,默认路径:" /opt/lampp/htdocs/ASST"
使用nano、vim或文本编辑器打开ASST文件夹内的 config.js,在 DEFAULT_PROJECT_PATH_TO_SCAN 变量中设置你的Web项目文件夹名称。
打开ASST文件夹内的 config_php_lang.js:如果你使用MySQL,请按照文件中的说明设置变量;如果你不使用MySQL,只需将 IS_DBMS_USED 变量设置为 false,并忽略其余内容。注意,PHP_EXE_BIN_PATH 设置为XAMPP的默认位置,如果你使用不同的PHP二进制文件或不同的XAMPP位置,请进行更改。
运行以下命令一次以安装此项目的 node_modules:
$ cd /opt/lampp/htdocs/ASST && sudo npm install
运行ASST的默认命令:
$ sudo node /opt/lampp/htdocs/ASST/main.js
在MacOSX上运行ASST的完整视频:https://youtu.be/IThRZEQVa7M
使用Web浏览器打开此链接:https://www.apachefriends.org/download.html 查找"XAMPP for OSX"部分,选择适合你项目的PHP版本并下载,如果你不知道选哪个版本,只需选择第一个。
打开下载文件夹,双击你下载的 xampp-osx-.dmg 文件。然后安装:下一步、下一步、下一步、完成。
安装后,使用Finder打开应用程序文件夹,然后打开XAMPP文件夹,点击 manager-osx.app 打开XAMPP控制面板,点击“Manage Servers”选项卡,然后点击“Start All”按钮。
将你的项目文件夹放在htdocs中:
打开浏览器,输入:localhost/phpmyadmin,创建一个空数据库,导入你的 project_database.sql 文件,打开你的项目文件夹,修改项目配置文件以连接到MySQL的本地主机:默认配置为:主机:"localhost" 或 "127.0.0.1",用户名:"root",密码:""(空字符串),数据库名:"你在phpmyadmin中选择的数据库名称"
有多种方法可以在MacOSX上下载和安装Node.js,具体说明请参见:https://nodejs.org/en/download/package-manager/#macos
我们使用了:brew(包管理系统),打开终端:
$ sudo /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
$ sudo brew install node
你必须设置特定版本的Node.js,以便ASST正常运行而不会出现问题。
$ sudo npm install n -g
$ sudo n 12.13.0
我们不会每个月跟进Node.js的升级,因此如果你想自行测试,可以忽略最后两个使用npm安装"n"的命令。
从此GitHub页面下载并解压ASST项目,使用浏览器或git,将文件夹重命名为 "ASST",而不是 "ASST-main",将ASST文件夹放在你的Web项目旁边以进行扫描,默认路径:"/Applications/XAMPP/htdocs/ASST"
使用文本编辑器打开ASST文件夹内的 config.js,在 DEFAULT_PROJECT_PATH_TO_SCAN 变量中设置你的Web项目文件夹名称。
打开ASST文件夹内的 config_php_lang.js:如果你使用MySQL,请按照文件中的说明设置变量;如果你不使用MySQL,只需将 IS_DBMS_USED 变量设置为 false,并忽略其余内容。注意,PHP_EXE_BIN_PATH 设置为XAMPP的默认位置,如果你使用不同的PHP二进制文件或不同的XAMPP位置,请进行更改。
运行以下命令一次以安装此项目的 node_modules:
$ cd /Applications/XAMPP/htdocs/ASST && sudo npm install
运行ASST的默认命令:
$ sudo node /Applications/XAMPP/htdocs/ASST/main.js
特别感谢:
感谢他们提供指导和支持,使本工具包得以实现。