信息泄露
总结常见信息泄露问题
信息泄露
攻击者要入侵一个网站,首要的就是收集目标更多的信息,攻击者获取这些信息之后可以以更低成本攻击系统。
主机信息
如果攻击这想要攻击服务器主机,首要的操作就是收集服务器的弱点信息,这些信息包括以下几点:
子域名信息
端口信息
域名注册信息
网站后台地址
网站架构探测
服务器路径信息
通过子域收集
可以使得攻击者迅速发现更多目标主机,从而能挖掘出更多弱点信息,而通过对一段端口或者指定端口扫描
后,攻击者可以知道目标提供了那些服务,再根据服务进行进一步攻击。而在域名注册信息
中,攻击者可以通过社工库反查管理员信息,推测其常用账号密码,进行撞库尝试登陆网站后台,并且得到管理员信息后还可以通过钓鱼等方式来进行攻击,对于攻击者来说,网站后台拥有的权限更大,所以攻击者通过寻找网站后台地址
来进行进一步操作,组合其它漏洞更有可能Get shell,同样的,攻击者对网站架构、指纹信息
进行探测,也便于其进一步攻击。同样的,攻击者通过上传图片
或者xml限制或删除不完全
,或者第三方服务解析漏洞
、报错信息友好
这些都会泄露服务器路径信息
。
源码泄露
当代码文件较多时,FTP上传比较慢,有些开发人员就先将代码打包压缩后上传到服务器,上传成功后再去服务器解压,这样虽然解决了上传速度慢的问题,但是却留下了安全隐患,当目录权限配置不严格时,攻击者得以下载该压缩包,就可以通过代码审计进行进一步攻击。
Git源码泄露
SVN源码泄露
hg/Mercurial源码泄漏
CVS泄露
Bazaar/bzr泄露
.DS_Store文件泄露
网站备份压缩文件、配置文件泄露
WEB-INF/web.xml泄露
Git源码泄露
当开发者在一个空目录执行git init
时,Git会创建一个.git
目录,这个目录包含所有Git存储和操作的对象,如果想备份或复制一个版本库,只需要把这个目录复制到另一处就可以了,开发者发布代码时,如果没有将.git
目录删除,直接发布到了运行目录中,攻击者就可以通过这个文件夹恢复源代码。
泄露内容:
所有该项目的源代码
私有仓库的地址
配置信息
所有commiter的邮箱账号信息
代码中可能会有连接数据库活其他内部的账号密码
利用方法:
下载整个目录,然后使用
git
命令回滚整个项目:自动化利用脚本:
dvcs-ripper (基于perl的工具,除了git还支持很多版本管理系统,使用方法:
rip-git.pl -v -u http://www.example.com/.git/
)GitHack(lijiejie师傅开发的利用脚本,使用方法:
GitHack.py http://www.example.com/.git
)
漏洞案例:
修复建议:
一般基于MVC的现代WEB框架都不会直接挂载文件, 但如果是基于PHP,ASP等语言的项目, 还是会存在安全隐患,虽然可以通过配置WEB服务器(apache/nginx等)来拒绝对.git路径的访问, 但也会出现被意外绕过的风险,最好的办法就是在项目新建一个www
目录来存放源代码文件。
SVN源码泄露
SVN(Subversion)是一个开放源代码的版本控制系统,与使用Git版本控制器类似,很多开发者网站安全以似不足,代码放到生产环境后,没有清理SVN的一些信息,导致SVN残留,因此攻击者可以下载网站源码。
泄露内容:
所有该项目的源代码
svn仓库的地址
svn仓库所属用户的用户名
利用方法:
下载目录,然后回滚:
自动化利用脚本:
dvcs-ripper (支持旧版和新版的svn,使用方法:
rip-svn.pl -v -u http://www.example.com/.svn/
)Seay-svn (基于Windows平台)
漏洞案例:
修复建议:
同git
hg/Mercurial源码泄漏
与git类似,hg在初始化项目时, 会在项目的根目录下创建一个名为.hg
的隐藏文件夹,里面包含了代码和分支的修改记录和开发人员的相关信息。
泄露内容:
项目源代码
项目仓库地址
可能会存在仓库的用户名
利用方法:
手动利用,下载+回滚:
dvcs-ripper (使用方法:
rip-hg.pl -v -u http://www.example.com/.hg/
)
修复建议:
同git
CVS源码泄露
cvs项目在初始化(cvs checkout project
)的时候, 会在project
目录下创建一个名为CVS
的目录,其中保存了各个文件的修改和commit记录. 通过此目录可以获取代码的历史版本, 其中两个关键文件为:CVS/Root
和CVS/Entries
, 分别记录了项目的根信息和所有文件的结构。
泄露内容:
源代码
利用方法:
直接访问url
dvcs-ripper (支持旧版和新版的svn,使用方法:
rip-cvs.pl -v -u http://www.example.com/CVS/
)
漏洞案例:
修复建议:
在目标服务器上删除CVS相关目录或者限制对CVS相关目录的访问。
bzr/Bazaar源码泄露
bzr在初始化项目时(bzr init/init-repo),会在项目根目录产生名为.bzr
的隐藏目录, 同样暴露了源代码和用户信息。
泄露内容:
源代码
仓库地址
开发者信息
利用方法:
命令行回滚:
dvcs-ripper (使用方法:
rip-bzr.pl -v -u http://www.example.com/.bzr/
)
修复建议:
.DS_Store文件泄露
.DS_Store
文件是MAC系统用来存储当前文件夹显示属性的,这些文件本意是给Finder使用的,其中包含一些目录信心,如果没有删除,攻击者就可以知道这个目录里面有所有文件夹的名称,在windows下类似的文件为desktop.ini
泄露内容:
系统的目录信息
利用方法:
.DS_Store
的格式为二进制, 内部数据结构为Proprietary格式, 可以自行解析并递归下载所有文件。ds_store_exp(使用方法:
python ds_store_exp.py http://www.example.com/.DS_Store
)
漏洞案例:
修复建议:
弱口令
弱口令(weak password) 没有严格和准确的定义,通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令。弱口令指的是仅包含简单数字和字母的口令,例如“123”、“abc”等,因为这样的口令很容易被别人破解,从而使用户的计算机面临风险,因此不推荐用户使用。
很多企业系统初始密码过于简单,后台管理密码设置为弱口令就很容易被攻击者进入系统,造成更大的危害。
利用方法:
通过常用密码字典对系统用户账号进行fuzz
漏洞案例:
修复建议:
建立完善的密码机制,经常验证更换密码规则。
用户信息泄露
Web可能会泄露用户信息,攻击者可以利用这一点收集网站用户字典,进行暴力破解等进一步攻击,下面总结一下哪些功能点可能会出现问题。
评论
一般用户评论处用户的信息都是加密的,比如显示的是用户手机号或邮箱等,就会直接对中间的一段数字进行加密,但是有些可能就没有加密,而是直接显示出来,那么这就造成了用户信息泄露问题。还有可能就是加密不当,在游览用户状态下对评论进行抓包,在返回包就有可能存在网站的用户名。同样的还可以对追加评论,或者如果评论中支持@他人,也可以进行抓包,还有当这个网站评论地方被搜索引擎爬虫到了,那么可以尝试利用搜索命令site:XXXX.com inurl:XX
目录在搜索引擎当中搜索,如果加密不完全,那么就可以在搜索引擎当中看到明文信息
转账
大型企业一般都有自家的金融平台,转账处输入用户名密码,它会像服务器发送一条验证信息,验证用户是否存在,抓包有可能在返回包中查看用户是否存在。
搜索
有些平台内置了搜索功能,跟搜索引擎思路很像,同样也是随意搜索,如果此时搜索的结果包含用户信息这块,那么就可能会导致用户信息泄露问题。
登陆注册
在登陆注册的地方,如果提示信息过于友好,也可以使得攻击者获得用户信息,比如提示“用户名不存在”、“密码输入错误”
个人页面/订单
通常系统拥有个人空间等功能,链接例如:http://xxx.com/usr/123
如果他人空间是可以访问或者权限未作合理限定,我们通过构造id序号遍历,也可以得到存在的用户信息,或者通过抓包看看用户id是否以参数的形式在数据包里传输,权限设置不佳也会导致越权验证用户是否存在。
上传
很多系统会为了便于区分用户上传的文件,会为用户设定一个个人文件夹,链接例如:http://xxx.com/upload/zhangsan ,我们通过构造文件名,即可验证用户名是否存在。
参考资源
Last updated