小迪安全23WEB 攻防-Python 考点CTF 与 CMS-SSTI 模版注入PYC 反编译

#知识点:

1PYC 文件反编译

2Python-Web-SSTI

3SSTI 模版注入利用分析

各语言的SSIT漏洞情况:

SSIT漏洞过程:

https://xz.aliyun.com/t/12181?page=1&time__1311=n4fxni0Qnr0%3DD%2FD0Dx2BmDkfDCDgmrYgBxYwD&alichlgref=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3Dxzkjf9x2jM5-hdX-jJhGSyVYqNrH1jEYt9WhW4TlMDot3yoBSI43ZbwS-Ylyj9m1%26wd%3D%26eqid%3Dd46bd7a8000144420000000665b26349

一、PY 反编译-PYC 编译文件反编译源码

pyc (pyd、pyo都是一样的)文件是 py 文件编译后生成的字节码文件(byte code)pyc 文件经过 python 解释器最终会生成机器码运行。因此 pyc 文件是可以跨平台部署的,类似 Java .class,.jar文件,一般 py 文件改变后,都会重新生成 pyc 文件。

python反编译 - 在线工具

对pyc文件进行反编译

 SSTI 入门-原理&分类&检测&分析&利用

SSTI:

漏洞成因就是服务端接收了用户的恶意输入以后,未经任何处理就将其作为 Web 应用模板内容的一部分,模板引擎在进行目标编译渲染的过程中,执行了用户插入的可以破坏模板的语句,因而可能导致了敏感信息泄露、代码执行、GetShell 等问题。其影响范围主要取决于模版引擎的复杂性。

网站更改模板后,界面会改但数据不会;在界面修改过后的数据接受,传入类似的数据一般就会被接受和执行。  针对于模板

from flask import Flask
from flask import request
from flask import config
from flask import render_template_string
app = Flask(__name__)app.config['SECRET_KEY'] = "flag{SSTI_123456}"
@app.route('/')//连接路由
def hello_world():return 'Hello World!'@app.errorhandler(404)//404报错,并进入以下的结构
def page_not_found(e):template = '''
{%% block body %%}//html的界面<div class="center-content error"><h1>Oops! That page doesn't exist.</h1><h3>%s</h3>//%python的参数变量</div> 
{%% endblock %%}
''' % (request.args.get('404_url'))//输入的参数,获取return render_template_string(template), 404if __name__ == '__main__':app.run(host='0.0.0.0',debug=True)//执行的访问地址

输入错误的地址

查看源代码

对404_url——get获值进行传参

这时可得知此网页存在着SSIT漏洞,原因是:错误的页面中将变量进行接受并执行了

传入的数据会变成py代码去实行,所以可以进行shell反弹,将服务器的权限直接提到自己的电脑里

Web应用是有很多的模板,

<div class="center-content error">

        <h1>Oops! That page doesn't exist.</h1>

        <h3>去数据的变量(可控变量)</h3>

可控值需留给数据库语句去操作取出数据(标题)并显示,方便了报错后的界面样式,如果这里是不固定的则可以进行注入,输入攻击代码

</div>

SSTI产生的场景:

存在模版引用的地方,如 404 错误页面展示

存在数据接收引用的地方,如模版解析获取参数数据

Ø SSTI 考点-CTF 靶场-[WesternCTF]shrine

由题得知,此题中的flag是在FLAG的文件中,索引会打开文件进行读取,并且shrine作为变量,被进行过滤”()”(这里是限制了python的函数);flask.render_template_string模板解析函数

测试ssti,2-2执行了,故存在

绕过:可运用一些特殊的函数

url_for.__globals__:获取当前脚本里的全局变量

url_for.__globals__['current_app'].config:获取当前脚本里的config的所有值

url_for.__globals__['current_app'].config[‘FLAG’]

url_for.__globals__['current_app'].config.FLAG

Python Flask,Jinja2模板,模板中使用特殊变量及函数,闪现信息,get_flashed_messages()_jinja2 get_flashed-CSDN博客

Ø SSTI 考点-CMS 源码-MACCMS_V8.X 执行

Maccms:隐私系统

Payload:index.php?m=vod-search&wd={if-dddd:phpinfo()}{endif-dddd}

index.php?m=vod-search

wd={if-dddd:phpinfo()}{endif-dddd}

进行代码分析

找m变量

了解be函数(自定义函数)

了解逻辑之后,m的值会经过过滤之后,给ac变量

并以包含的形式

我们在代码中将ac变量输出,发现是vod.php

所以去vod.php文件

由于我们m的值为vod-search

找到了wd变量,得知与tpl变量有关

在index.php文件找到tpl的由来,进行查找

注意到eval函数,eval函数会将变量值进行PHP执行

Wd输入的格式:{if-([\s\S]*?):([\s\S]+?)}([\s\S]*?){endif-\1}

输出strif

补:判断网页由python制作

查看中间件容器:Werkzeug通常都是以python为主

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

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

相关文章

链表--226. 翻转二叉树/medium 理解度A

226. 翻转二叉树 1、题目2、题目分析3、复杂度最优解代码示例4、适用场景 1、题目 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1]示例 2&…

CentOS 7 部署 MiniKube

文章目录 前言1、相关文档2、环境说明3、部署3.1、安装 yum 工具包3.2、安装 docker3.3、安装 kubeadm&#xff0c;kubelet 和 kubectl3.4、安装 minikube 前言 学习 Kubernetes 但是搭建集群太麻烦。怎么办&#xff1f; MiniKube 是个简单的好办法&#xff01; 1、相关文档 …

windows?linux?如何使用JMeter

windows?linux?如何使用JMeter 安装JMeter的步骤以GUI模式启动JMeter如何在非GUI模式下运行JMeter在linux中使用JMeter 安装JMeter的步骤 JMeter 是一个纯 Java应用程序&#xff0c;应该在任何具有兼容Java实现的系统上正确运行。 安装 JMeter 的步骤 步骤1&#xff09;安…

小迪安全21WEB 攻防-JavaWeb 项目JWT 身份攻击组件安全访问控制

#知识点&#xff1a; 1、JavaWeb 常见安全及代码逻辑 2、目录遍历&身份验证&逻辑&JWT 3、访问控制&安全组件&越权&三方组件 Java&#xff1a;大部分都是第三方插件出现漏洞 webgoat的搭建&#xff1a;——java靶场 JDK版本要求&#xff1a;11.0…

应用案例 | 基于三维机器视觉的螺钉抓取上料解决方案

近年来&#xff0c;机器人技术日新月异&#xff0c;为各行各业的发展注入了新的活力。制造业作为一项工作内容重复、劳作时间长的产业&#xff0c;对自动化改造需求最为迫切&#xff0c;因此&#xff0c;也是机器人技术渗透最早、最广的产业。 螺钉抓取在制造业的应用十分广泛&…

Tomcat好帮手---JDK

目录 1、Tomcat好帮手---JDK 2、安装JDK 部署Tomcat参考博主博客 部署TOMCAT详解-CSDN博客 1、Tomcat好帮手---JDK JDK是 Java 语言的软件开发工具包&#xff0c;JDK是整个java开发的核心&#xff0c;它包含了JAVA的运行环境&#xff08;JVMJava系统类库&#xff09;和JAVA…

OpenCV书签 #互信息的原理与相似图片搜索实验

1. 介绍 互信息&#xff08;Mutual Information&#xff09; 是信息论中的一个概念&#xff0c;用于衡量两个随机变量之间的关联程度。在图像处理和计算机视觉中&#xff0c;互信息常被用来度量两幅图像之间的相似性。 互信息可以看成是一个随机变量中包含的关于另一个随机变…

HashMap源码阅读;HashMap的put()方法;

当我们使用一个HashMap做插入操作时。put方法内部都做了什么呢&#xff1f; public static void main(String[] args) {HashMap<String, String> map new HashMap<>();map.put("key1", "value1"); }put 方法 源码 public V put(K key, V v…

ADB的配置和使用 ADB常用命-2

# 知道的命令&#xff1a; # 1 开启和关闭adb服务&#xff08;可以不开启&#xff0c;敲任意一个adb命令&#xff0c;就会自动开启&#xff09; adb start-server 启动ADB adb kill-server 关闭ADB # 2 列出电脑上链接的手机 adb devices # List of devices att…

Apache Jmeter测试websocket连通性

1、在windows电脑下载apache jmeter 下载地址详情Apache-Jemeter-download 2、解压打开文件夹&#xff0c;下载 jmeter-plugins-manager下载地址&#xff0c;下载后存放到lib的ext路径下&#xff0c; 同时也可以更改bin路径下的jmeter.properties对应第三十七行修改为如下&…

Java 设计者模式以及与Spring关系(五) 策略和观察者模式

目录 简介: 23设计者模式以及重点模式 策略模式&#xff08;Strategy Pattern&#xff09; 示例 spring中应用 观察者模式&#xff08;Observer&#xff09; 示例 spring中应用 简介: 本文是个系列一次会出两个设计者模式作用&#xff0c;如果有关联就三个&#xff0c;…

03_web端交互协议之HTTP

本课目标 (Objective) 理解HTTP协议简介掌握常见HTTP请求方式掌握HTTP协议响应状态码理解HTTP协议的交互原理 1. 前后端是如何交互的 通信协议&#xff08;Communication Protocol&#xff09;是指通信双方对数据传送控制的一种约定。 前端与服务端的数据传输是基于HTTP协议…

中仕教育:事业编招考全流程介绍

一、报名阶段 1. 了解查看招聘信息&#xff1a;查看各类事业编岗位的招聘信息&#xff0c;包括岗位职责、招聘条件、报名时间等。 2. 填写报名表&#xff1a;按照要求填写报名表&#xff0c;包括个人信息、教育背景、工作经历等内容。 3. 提交报名材料&#xff1a;将报名表及…

linux install nvm

官网地址&#xff1a;https://github.com/nvm-sh/nvm 1、wget https://codeload.github.com/nvm-sh/nvm/tar.gz/refs/tags/v0.39.7 tar -zxvf v0.39.7 2、vim ~/.bashrc $HOMEroot export NVM_DIR"$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \…

ASRT——部署SpeechRecognition

安装tensorflow&#xff1a; pip install tensorflow2.12.0 -i https://pypi.tuna.tsinghua.edu.cn/simple/ 报错解决&#xff1a;tensorflow出现报错&#xff1a; Could not locate zlibwapi.dll

JPA单元测试

使用TestPropertySource注解并尝试加载多个配置文件时&#xff0c;Spring框架并不直接支持同时加载多个属性文件。locations属性的值应为一个或多个classpath路径&#xff0c;但每次只会应用其中一个配置文件。 如果你希望在单元测试中合并主配置文件&#xff08;application.…

Hive3.1.3基础学习

文章目录 一、Hive入门与安装1、Hive入门1.1 简介1.2 Hive架构原理 2、Hive安装2.1 安装地址2.2 Hive最小化安装(测试用)2.3 MySQL安装2.4 配置Hive元数据存储到MySQL2.5 Hive服务部署2.6 Hive服务启动脚本(了解) 3、Hive使用技巧3.1 Hive常用交互命令3.2 Hive参数配置方式3.3 …

利用sqlmap探测get类型注入

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 基础:GET基于报错的sql注入利用-脱库-CSDN博客 sqlmap 工具是kali自带的 例子我都用sql靶场的第一关做演示 1、探测数据库名 sqlmap -u "http://192.168.0.103/sqlilab…

Arduino开发实例-使用SIM800L GSM模块接收和发送短信

使用SIM800L GSM模块接收和发送短信 文章目录 使用SIM800L GSM模块接收和发送短信1、硬件准备1.1 SIM800L介绍2、硬件接线原理图3、代码实现3.1 AT指令测试3.2 发送短信3.3 接收短信3.4 拨打电话3.5 接听电话在本文中,我们将使用 SIM800L GSM 模块和 Arduino。 SIM800L是一款低…

制作一个简单的HTML个人网站

在当今数字化的世界里&#xff0c;拥有一个个人网站已经成为了展示个人品牌、分享作品和信息的必备工具。虽然有各种复杂的内容管理系统&#xff08;CMS&#xff09;和平台可以帮助我们快速搭建个人网站&#xff0c;但对于初学者或者想要了解更多技术细节的人来说&#xff0c;从…