chenhongl

导航

 

 

 

#知识点:
1.原生JS&开发框架-安全条件
2.常见安全问题-前端验证&未授权

1、什么是JS渗透测试?

在Javascript中也存在变量和函数,当存在可控变量及函数调用即可能存在安全漏洞;
JS开发的WEB应用和PHP、JAVA、NET等后端语言的区别:JS代码可以通过浏览器的“查看源码”获取,所以,相当于JS开发的WEB应用属于白盒测试(默认有源码参考)。

 

2、流行的Js框架有哪那些?

Polymer.js、React.js、Vue.js、Angular.js、Preact.js、Svelte.JS、jQuery、Bootstrap、Mithril.js、Ember.js、Alpin.js、Meteor、Foundation、Backbone.js


3、如何判定JS开发应用?

  • 通过插件判断:wappalyzer(下载:Google应用商店)   
  • 源代码简短
  • 引入多个js文件
  • 一般有/static/js/app.js 等顺序的js文件
  • cookie中有connect.sid(使用了Node.js,可以在fofa中去搜索)

 

【例1】:用wappalyzer 查看网站使用的JS框架

 

【例2】:用fofa查到了网站cookie中有connect.sid的

 

4、如何获取更多的JS文件?

  • JsFinder
  • Packer-Fuzzer
  • 扫描器后缀替换字典


5、如何快速获取价值代码?

  查看那些涉及到网站功能的JS代码(比如:app.js?xx)
  method:"get"
  http.get("
  method:"post"
  http.post("
  $.ajax
  service.httppost
  service.httpget

 

6、开发框架-Vulhub-Node.JS安全

Vulhub靶场搭建:略

【例】:Node.JS目录穿越漏洞(CVE-2017-14849)

访问http://your-ip:3000/即可查看到一个web页面,其中引用到了文件/static/main.js,说明其存在静态文件服务器。

① 访问抓包

 

 

 

② payload:/static/…/…/…/a/…/…/…/…/etc/passwd

 

查看源码,进行漏洞分析:

 

 

原因是 Node.js 8.5.0 对目录进行normalize操作时出现了逻辑错误,导致向上层跳跃的时候(如../../../../../../etc/passwd),在中间位置增加foo/../(如../../../foo/../../../../etc/passwd),即可使normalize返回/etc/passwd,但实际上正确结果应该是../../../../../../etc/passwd。

express这类web框架,通常会提供了静态文件服务器的功能,这些功能依赖于normalize函数。比如,express在判断path是否超出静态目录范围时,就用到了normalize函数,上述BUG导致normalize函数返回错误结果导致绕过了检查,造成任意文件读取漏洞。

当然,normalize的BUG可以影响的绝非仅有express,更有待深入挖掘。不过因为这个BUG是node 8.5.0 中引入的,在 8.6 中就进行了修复,所以影响范围有限。

影响版本:

Node.js 8.5.0 + Express 3.19.0-3.21.2

Node.js 8.5.0 + Express 4.11.0-4.15.5

 

 

7、案例

【例1】:真实应用-APP应用直接重置密码

用APP抓包,发现登录地址:mx2.simuwz.com/user/login
"/user/reset_password/" + e.phone
http://mx2.simuwz.com/user/reset_password/13554365566 ,
js代码关键判断:

 

 

测试:设置把响应发送到请求页面:

 通过查看js代码,把code改成200,即可跳转到重置密码页面:

 甚至可以根据js代码直接进入重置密码的页面:

继续重置密码,修改code为200(实际:重置密码时,提示“流程错误”,js代码没有出现,应该是后端加了验证)


【例2】:真实应用-违法彩彩文件上传安全 
打开“咨询客服”聊天窗口,发现聊天窗口中可以上传图片、表情、视频等

查看js代码(Ctrl+f 可以进行关键字搜索):

是否可以上传可执行文件?

这个网站是js开发的,所以不能禁用js
用网站下载器可以去下载到源码,然后在进行禁用,但是后面下载不下来。
然后看上传视频可不可以。发现上传视频没有验证。

 php文件上传成功,但是图片和视频是专门放在了一个资源存储器,不能解析执行文件(如果是一般的服务器,这种情况就可以上传后门文件)

 

参考:

利用浏览器的开发者工具实时修改网页前端JS代码(实现绕过):https://blog.csdn.net/qq_43696276/article/details/128709993

https://blog.csdn.net/weixin_52635170/article/details/126861724

 

posted on 2024-01-24 14:53  chenhongl  阅读(100)  评论(0)    收藏  举报