一个典型的Node应用可能会有几百个,甚至上千个包依赖(大部分的依赖是间接的,即下载一个包,这个包会依赖其他的好多包),所以最终的结果是,应用程序就会像是这个样子的:
和所依赖的包相比,自己写的代码量就显得少的可怜,引入了大量的包成为了应用程序的代码,也就引入了一些不可预知的隐患,比如我们是否知道这些包是否是安全的,如果我们引入的包是安全的,那这些包自己引入的第三方的包也是安全的吗?如果不是,那么这些隐患也会就成了应用程序的小后门,让黑客可以随意进出。
所以我们需要一个工具能够扫描这些包的漏洞,减少自己应用程序被黑客攻击的可能性。在这里我推荐我目前在用的snyk,https://snyk.io/,这里面可以有两种方式来检测我们应用程序的漏洞,一种是从代码仓库中直接引入进来,目前支持的代码仓库有:
首先来讲一种比较繁琐,但是比较直观的方法:
选择一个你的代码仓库,我们这里以GItHub为例,演示一下:
选择需要添加的账号:
给添加需要扫描的漏洞的仓库
如果是NodeJs的项目,他会自动关联,如果没有自动关联,自己添加文件的位置
生成测试报告
点击 View report and fix 可以查看详细的报告
然后根据修复的方法把漏洞给修复就行了,基本上是更新打补丁进行修复。如果还没有修复方案的,可以自己向作者提出如何修复这个漏洞。如果选择了自动扫描,他会自己扫描应用程序中的package.json文件,如果有新的漏洞出来,会有邮件通知,及时修复这个漏洞就行。
 
接下来我们用第二种方法,第二种相对快速简单一些:
打开 iTerm(其他命令行工具也可以,但这里以iTerm为例),安装snyk的命令行工具:
 
npm install -g snyk
 
安装成功之后,进入Node应用的根目录中,输入 snyk test:
 
就会看到漏洞的列表
然后再运行 snyk wizard 可以对漏洞进行修复
 
一般选择第一项,通过更新依赖来修复漏洞。一项一项修复就行了。
两种方法说完了,接下来我们来拿几个漏洞来测试一下怎么利用这些漏洞进行测试攻击:
Node项目Demo代码(https://github.com/wjszxli/goof):
1.利用 st 模块进行目录遍历
这是模块信息:
st 模块是一个提供静态文件服务的中间件,比如我们的javascript,css和图像等文件,在我们示例的项目中的代码的位置是在
这是检测出来的漏洞信息:
接下来我们开始模仿:
我们在iTerm中先尝试着获取他的 about页面:
可以看到,获取了源代码
那来试试看看能不能突破文件夹的限制:
规范化的文件夹路径被过滤掉了,那用 URL编码的格式来试试看:
额,得到了项目根目录的文件,那如果要获取其中任意一个文件的源代码就轻而易举了,比如我们要拿到db.js的内容:
简简单单就得到了
那如果要获取服务器上的其他文件夹呢
黑客就能用Node有权访问的任何文件
2.利用 marked 进行跨站脚本攻击(xss):
这是模块信息
这是我们的漏洞信息:
 
在标签页有使用到 marked,那我们就试试标签页,第一次先这样试一试,输入 <script>alert(1)</script>
这种情况倒是控制住了:
那我们来创建一个标记格式的链接,输入 [Gotcha](javascript:alert(1)),看看发生了什么:
也没产生效果,他也做了处理。
那再试试转义,试试他做了转义没有,那我输入:[Gotcha](javascript&#58this;alert(1)),这下效果出来了,
好像有反应了,点击一下,还真的生效了!
 
 
 

NodeJs的包漏洞扫描与漏洞测试攻击的更多相关文章

  1. 10大Web漏洞扫描工具

    Web scan tool 推荐10大Web漏洞扫描程序 Nikto 这是一个开源的Web服务器扫描程序,它可以对Web服务器的多种项目(包括3500个潜在的危险文件/CGI,以及超过900个服务器版 ...

  2. 20155208徐子涵 Exp 6 信息搜集与漏洞扫描

    20155208徐子涵 Exp 6 信息搜集与漏洞扫描 实验目的 掌握信息搜集的最基础技能与常用工具的使用方法 实验内容 (1)各种搜索技巧的应用 (2)DNS IP注册信息的查询 (3)基本的扫描技 ...

  3. 20155326刘美岑 Exp6 信息收集与漏洞扫描

    20155326刘美岑 Exp6 信息收集与漏洞扫描 实验后回答的问题 (1)哪些组织负责DNS,IP的管理. 全球根服务器均由美国政府授权的ICANN统一管理,负责全球的域名根服务器.DNS和IP地 ...

  4. 20155232《网络对抗》Exp 6 信息搜集与漏洞扫描

    20155232<网络对抗>Exp 6 信息搜集与漏洞扫描 一.实践内容 (1)各种搜索技巧的应用 (2)DNS IP注册信息的查询 (3)基本的扫描技术:主机发现.端口扫描.OS及服务版 ...

  5. 20155301 Exp6 信息搜集与漏洞扫描

    20155301 Exp6 信息搜集与漏洞扫描 实践内容 (1)各种搜索技巧的应用 (2)DNS IP注册信息的查询 (3)基本的扫描技术:主机发现.端口扫描.OS及服务版本探测.具体服务的查点 (4 ...

  6. APP漏洞扫描用地址空间随机化

    APP漏洞扫描用地址空间随机化 前言 我们在前文<APP漏洞扫描器之本地拒绝服务检测详解>了解到阿里聚安全漏洞扫描器有一项静态分析加动态模糊测试的方法来检测的功能,并详细的介绍了它在针对本 ...

  7. APP漏洞扫描器之本地拒绝服务检测详解

    APP漏洞扫描器之本地拒绝服务检测详解 阿里聚安全的Android应用漏洞扫描器有一个检测项是本地拒绝服务漏洞的检测,采用的是静态分析加动态模糊测试的方法来检测,检测结果准确全面.本文将讲一下应用漏洞 ...

  8. Kali Linux渗透基础知识整理(二)漏洞扫描

    Kali Linux渗透基础知识整理系列文章回顾 漏洞扫描 网络流量 Nmap Hping3 Nessus whatweb DirBuster joomscan WPScan 网络流量 网络流量就是网 ...

  9. (汉化改进作品)BruteXSS:Xss漏洞扫描脚本

    今天给大家进行汉化改进的事一款脚本工具:BruteXSS,这款脚本能自动进行插入XSS,而且可以自定义攻击载荷. 该脚本也同时提供包含了一些绕过各种WAF(Web应用防护系统)的语句.   0×01简 ...

随机推荐

  1. 实用开发之-oracle表回滚到一个指定时间的操作语句

    在开发或客户使用过程中,难免会出现误操作或脏数据,那么怎么迅速处理这个问题呢? 1.备份还原就用了,太麻烦. 就是使用ORACLE的备份功能,然后在还原,还原的时候新建一个库,然后使用dblink进行 ...

  2. Oracle的基本学习(一)—安装Oracle

    一.Oracle环境搭建 1.安装Oracle 10g      我们把Orcale安装到虚拟机上,远程连接. (1)解压文件10201_database_win32.zip,并双击解压目录下的set ...

  3. 移动开发中使用的一些meta头部标签整理

    <!DOCTYPE html> <!-- 使用 HTML5 doctype,不区分大小写 --> <html lang="zh-cmn-Hans"&g ...

  4. 借助case,实现更丰富的分组查询统计

    根据fileD6的前4位分组    分别统计该组  5种企业类型fileD31的数量 create or replace view jyjc_bycity as select substr(fileD ...

  5. 【转】JDBC学习笔记(2)——Statement和ResultSet

    转自:http://www.cnblogs.com/ysw-go/ Statement执行更新操作 Statement:Statement 是 Java 执行数据库操作的一个重要方法,用于在已经建立数 ...

  6. xmlplus 组件设计系列之二 - 按钮

    除了图标以外,按钮也许是最简单的组件了,现在来看看如何定义按钮组件. 使用原生按钮组件 在 xmlplus 中,HTML 元素也以组件的方式存在.所以,你可以直接通过使用 button 标签或者 in ...

  7. Android 正则表达式验证手机号、姓名(包含少数民族)、身份证号

    最近项目中新增的功能,需要对手机号.姓名.身份证号等一些信息进行验证,最好的方法是通过正则表达式来验证,网上查了一些资料,写了这几个工具方法. 1.验证手机号 规则:第一位只能是1,第二位为3-8中的 ...

  8. HTML5 进阶系列:indexedDB 数据库

    前言 在 HTML5 的本地存储中,有一种叫 indexedDB 的数据库,该数据库是一种存储在客户端本地的 NoSQL 数据库,它可以存储大量的数据.从上篇:HTML5 进阶系列:web Stora ...

  9. 【代码学习】GD库中图片缩印

    bool imagecopyresampled ( resource $dst_image, resource $src_image, int $dst_x, int $dst_y, int $src ...

  10. scrapy(一)建立一个scrapy项目

    本项目实现了获取stack overflow的问题,语言使用python,框架scrapy框架,选取mongoDB作为持久化数据库,redis做为数据缓存 项目源码可以参考我的github:https ...