亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

如何進行RDG中兩個漏洞的分析

發布時間:2021-12-22 23:16:51 來源:億速云 閱讀:201 作者:柒染 欄目:網絡安全

這期內容當中小編將會給大家帶來有關如何進行RDG中兩個漏洞的分析,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

Remote Desktop Gateway,即遠程桌面網關(RDG),之前它的名字叫“Terminal Services Gateway”,即遠程桌面(RDP),是一種提供路由功能的Windows服務器組件。在RDG的應用場景中,用戶無需直接RDP服務器連接,而是直接連接網關。網關身份驗證成功后,,網關會將RDP流量轉發至用戶指定的地址,因此在這里網關實際上就是一個代理。此時,只有網關需要對外網開放,其他所有的RDP服務端都可以受到防火墻的保護。由于RDP的攻擊面更大,因此我們需要正確設置RDG環境,才能顯著減少可能存在的攻擊面。

在2020年1月份的安全更新中,微軟修復了RDG中存在的兩個漏洞。分配的漏洞編號分別為CVE-2020-0609CVE-2020-0610,而這兩個漏洞都可以允許攻擊者在目標設備上實現預認證遠程代碼執行。

版本區別分析-修復前和修復后

在進行漏洞分析之前,我們需要分析受影響DLL修復前和修復后的版本區別。

如何進行RDG中兩個漏洞的分析

分析后發現,其中只有一個函數被修改了。首先,RDG支持三種不同的協議,即HTTP、HTTPS和UDP。更新后的函數主要負責處理UDP協議。一般來說,我們可以拿更新前和更新后的函數進行對比,但是這個函數的代碼量非常大,而且有多處改動。因此,我們這里直接給出該函數對應的偽代碼,并且刪除了部分不相關的代碼:

如何進行RDG中兩個漏洞的分析

RDG處理的UDP協議允許將數據量大的消息拆分為多個獨立的UDP報文,因為UDP屬于無連接協議,因此報文到達的順序不定。。該函數的功能是重組消息,確保每個報文都位于正確的位置上。每個報文中都包含一個Header,其中包含如下字段數據:

fragment_id:報文在序列中的具體位置;

num_fragments:序列中報文的總數量;

fragment_length:報文數據的長度。

消息處理函數使用報文的Header數據來確保收到的消息能以正確的順序進行重組。然而,該函數在實現上存在漏洞,因此攻擊者將能夠利用該漏洞來實施攻擊。

CVE-2020-0609分析

如何進行RDG中兩個漏洞的分析

memcpy_s()函數會將每個分段數據(fragment)拷貝到重組緩沖區中的一個偏移量地址,重組緩沖區在堆上進行分配,每個分段的偏移量由fragment_idx 1000得到。但是,這里的邊界檢查邏輯并沒有考慮到偏移量這個因素。這里我們可以假設buffer_size= 1000,然后我們發送包含2個分段消息。

1、第1個分段消息(fragment_id=0)長度為1。此時this->bytes_written等于0,因此可以通過邊界檢查。

2、代碼將1字節數據寫入偏移量為0的緩沖區地址,bytes_written+ 1。第2個分段消息(fragment_id=1)長度為998,此時this->bytes_written= 1,而1 + 998< 1000,因此可以通過邊界檢查。

3、代碼將998字節數據寫入偏移量為1000(fragment_id*1000)的緩沖區地址,導致在緩沖區末尾后寫入998個字節。

需要注意的是,這里的報文不一定按順序到達。如果我們發送的第1個報文中fragment_id=65535(最大值),那么就會被寫入偏移量為65535x 1000的地址,也就是緩沖區末尾后的65534000個字節。攻擊者可以通過修改fragment_id來將最多999個字節的數據寫入緩沖區后偏移量為1到65534000的任何地址。與傳統的線性堆溢出漏洞相比,這個漏洞的靈活性更強。攻擊者不僅可以利用該漏洞來控制寫入數據的大小,而且還能控制寫入數據的位置。如果再配合使用其他的技術,攻擊者將能夠實現更為精準的數據寫入,以避免出現不必要的數據崩潰。

CVE-2020-0610分析

如何進行RDG中兩個漏洞的分析

上圖中的類對象包含一個由32位無符號整數組成數組,其中每個數組元素對應1個分段數據。當收到一個分段數據后,相應的數據值會從0變為1。當所有元素都被設置為1時,代碼就完成了消息重組操作,并開始處理完整的消息。這個數組最多能容納64個元素,但fragment_id的取值范圍為0到65535。代碼唯一執行的驗證操作就是確保fragment_id值小于num_fragments,但后者同樣可以被設置為65535。因此,我們可以將fragment_id設置為65到65535之間的任意值,這樣我們就可以在數據邊界外寫入1(TRUE)。你可能會覺得只將1個值設置為1很難實現遠程代碼執行,但即使一個小小的改動也可以對程序的正常行為帶來巨大的影響。

漏洞緩解

如果用戶沒有安裝漏洞修復補丁,那么攻擊者將能夠利用該漏洞實施攻擊。因此,用戶還可以直接禁用UDP傳輸功能,或使用防火墻來阻止UDP端口來解決這個安全問題。

如何進行RDG中兩個漏洞的分析

漏洞檢測工具

rdg_scanner_cve-2020-0609:【點我獲取

如何檢測

Example: python3 rdg_scanner_cve-2020-0609.py 192.168.1.1/24 # vuln scan for cve-2020-0609 on UDP 3391Example2 python3 rdg_scanner_cve-2020-0609.py 192.168.1.1/24 --webcheck # check webpage for RD gatewayExample3: python3 rdg_scanner_cve-2020-0609.py 192.168.1.1Example4: python3 rdg_scanner_cve-2020-0609.py fakewebsiteaddress.comExample5: python3 rdg_scanner_cve-2020-0609.py as15169Example6: python3 rdg_scanner_cve-2020-0609.py file:hostfile.txtusage: rdg_scanner_cve-2020-0609.py [-h] [--port PORT] [--webcheck][--verbose]targetNo installation required.Debian/Kali needs: apt-get install python3-netaddr

上述就是小編為大家分享的如何進行RDG中兩個漏洞的分析了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

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

AI

会宁县| 普兰县| 墨竹工卡县| 神木县| 洛隆县| 孟连| 新营市| 且末县| 杭锦旗| 红河县| 视频| 桂东县| 绍兴县| 库尔勒市| 教育| 罗江县| 丹棱县| 忻州市| 五河县| 襄城县| 宜章县| 邹平县| 仙游县| 盘山县| 镇沅| 隆林| 泸水县| 盈江县| 平顶山市| 厦门市| 永和县| 奇台县| 贵港市| 巴彦县| 米脂县| 青阳县| 云龙县| 南皮县| 普兰店市| 东莞市| 岚皋县|