WEB攻防-JavaScript项目
JavaScript特点
想必大家都比较清楚什么是JavaScript语言,当遇见一个网页时,我们只需要按下F12,如果看到了什么app.js,这些js文件就是JavaScript语言开发的,JS语言作为比较常见的前端开发语言,他的一个很重要的特性就是代码的可读性,它不像php,java等开发语言是只有服务器才知道代码是怎样的,JS语言通过F12可以在web端查看到源代码,等同于白盒测试,我们可以更快的发现可控变量,方便我们寻找相关漏洞
如何判断是否为JS代码开发?
首先可以使用插件 wappalyzer,如下图所示
我们的wappalyzer可以很容易的识别相关网站使用了JS库,进而可以判断这个网站是使用JavaScript进行编写的
第二种方法是看其源代码是否简单,一般使用JavaScript的网站应用的源代码都很简短,因为JavaScript可以引用已经写好的一些js文件,使得自己编写的代码就很简短,如下图所示
我们可以看到,基本上很多的代码都被封装在了js文件中,用<script src="/xxx/xxx/xxx.js">
的形式进行 引用
最后一种方法就是抓包,看它的Cookie中是否有connect.sid,这也是JS开发的最基本的特征
我们也可以使用FOFA查找相关关键字去发现使用JS开发的应用,进而可以实现通杀,如下图所示
JS框架
我们日常比较常见的JS框架有vue.js和jQuery
Vue.js是一个开源的渐进式JavaScript框架,用于开发交互Web用户界面和单页应用程序,通过使用HTML、CSS和JavaScript来构建应用程序界面。Vue.js的目标是通过尽可能简单的API提供反应式数据绑定和可组合视图组件的好处
jQuery是用JavaScript编写的,该库是跨平台和跨浏览器的。这意味着可以开发可在任何操作系统或浏览器上使用的应用程序。jQuery设计的宗旨是”写更少的代码,做更多的事情“,jQuery库封装了JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互
相关靶场可以搭建Vulhub进行复现,具体的搭建教程可以查看相关博客,这里就不再赘述,这个靶场上会更新许多漏洞,是一个复现漏洞的很好的平台
实战案例
首先打开我们的老朋友福利期货,点击忘记密码,进行浏览器抓包,找到实现相关功能的js包
找到关键代码,发现是要状态码为200的时候会返回验证成功,并进行路由跳转
所以我们可以进行抓包,我们先随便输入一个验证码,然后进行抓包
对抓取到的数据包点击Do intercept
,抓取他的返回包,如下所示
将code:206
改成code:200
,再把包放出去
验证成功,直接跳转到密码修改的地方,造成任意密码重置漏洞
但是在重新输入新密码的时候会出现流程错误的提示,很有可能是后端加了代码进行验证,导致无法绕过