一个典型的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. Android™ 1.5 android.R.drawable Icon Resources

    图标一览表: http://www.darshancomputing.com/android/1.5-drawables.html 官  方  API: http://developer.androi ...

  2. 关于for()循环使用过程中遇到的问题(俄罗斯方块游戏中遇到的问题)

    for循环的定义: for(参数1:参数2:参数3),参数1通常是初始化参数的,参数2是判断,参数3是对参数的操作.这三个参数都不是必须的. 这里想说的是,参数1的使用:比如下列语 int nLine ...

  3. 图解CSS选择器之nth家族

    1 nth-last-of-type  顾名思义从最后开始的元素开始选取可接受 数字 关键词 公式  比如4n+0就是每隔四个 odd even关键词表示奇偶数 .classify-item:nth- ...

  4. C语言中关于三目运算符的注意事项

    C语言中常见的条件运算符?:在运算符优先级中排行13.部分时候可以代替if--else语句,使代码更加简洁.但是更容易隐含一些不易觉察的错误. 最近接了一个项目,本来通信协议部分很简单,自己的STM3 ...

  5. Cookie中文乱码问题

    页面一登录,页面二保存用户信息,放入Cookies里. 但是Cookies放入中文会引起编码问题,如报错“Control character in cookie value, consider BAS ...

  6. 【linux 爱好者群】程序猿的那些聊天记录

    分享&&交流&&开放 you should get it 声明:好吧,我们的群只有5个人,但是有句话不是说的很对吗,一个项目最理想的不就是5个人么.我是写文本那个. 下 ...

  7. 基础SELECT示例掌握

    SELECT查询语句 ---进行单条记录.多条记录.单表.多表.子查询-- SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [MAX_ST ...

  8. 记一次使用修改字节码的方法解决java.lang.NoSuchMethodError

    接兔兔国际sdk ane 充值界面选择兔币充值就会闪退, 观察logcat 04-19 10:10:54.224: E/AndroidRuntime(20315): FATAL EXCEPTION: ...

  9. python——网络编程

    Socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. sock ...

  10. spark2.0系列《一》—— RDD VS. DataFrame VS. DataSet

    虽说,spark我也不陌生,之前一直用python跑的spark,基本的core和SQL操作用的也是比较熟练.但是这一切的基础都是在RDD上进行操作,即使是进行SQL操作也是将利用SpaekConte ...