安全基础教育第一季:堡垒是从内部攻破的

郑昀 创建于2015/4/10 最后更新于2015/4/28
关键词: Web安全、系统安全、社工、社会工程学、弱密码、github、svn

本文档适用人员:广义的技术人员
提纲:
  1. 堡垒是从内部攻破的
    • 员工无知者无畏
    • 运维配置暴露细节
    • 后台不设防
  2. 常犯常新,屡战屡败
  3. 处处留心皆学问

0x00. 背景:

    技术团队第一忙于业务逻辑,第二大量新人涌入,会把过去大家在安全上栽的跟头重新趟一遍,因此该做的培训咱还得做,该说的经验教训还得说,一次不行就两次,两次不行三次,重复再重复。
 

0x01. 堡垒是从内部攻破的:

    一次成功的入侵渗透,并不需要是什么高危漏洞,几个普普通通的中等漏洞,搭配一次社会工程学行动,就可以搞定。
    一个公司成千上万人,往少里说也有 80% 的人安全意识淡薄,有耐心的攻击者会盯好几年,穷尽各种招数,没有攻不进去的堡垒。
 

员工无知者无畏

  大多数员工都图省事儿,公司邮箱以及其他内部 IT 系统都用简单密码甚至空密码,好些个知名 IT 系统也不对此做任何限制(甚至是专业企业级软件制造商出品的IT系统)。

    弱密码遇到不设防的 IT 系统,对攻击者来说真是福音。
 
案例一,乌云漏洞报告:重置某东任意内部邮箱用户密码
漏洞提交时间:
2013-10-26
原理:
公司做得越来越大的时候,总会出现那么几个安全意识薄弱的人员(俗称猪一样的队友),他们往往会做出一些让人无法理解的事情,比如:他会毫不犹豫地双击运行邮件内的 EXE 附件,或者使用跟用户名一样的密码,或者用户名+当前年份的密码。
实施步骤:
1)通过社会工程学神器 theharvester 工具,和 baidu/google 搜索引擎,收集所有关于某东员工的信息;
2)找到了可用的登录接口验证口令 ,https://mail.....com/owa/auth/logon.aspx,某东的邮件服务使用了微软的 Exchange 服务,并无验证码限制,可以直接 Fuzz;
注:Fuzz 指的是用随机坏数据攻击一个程序,然后等着观察哪里遭到了破坏。
3)成功 Fuzz 出某个用户的密码,再结合 Exchange 的通讯录功能,导出所有用户名列表;
4)是的,现阶段,你已经拥有了所有某东员工的联系信息列表 。
重复使用 Fuzz 规则,测试后回显找到了 2865 名员工的密码,均为弱口令。
 
    更有甚者,互联网开发人员还会主动暴露自家机密。每家知名公司都有这么几个没心没肺的人,在开源社区泄露源码或敏感信息:
……几乎每个大公司都报过这个漏洞。
 
    开源社区暴露了邮箱用户名密码之后,又会怎么样?后果很可怕。
案例二,乌云漏洞报告:一次成功地漫游某东内部网络的过程
漏洞提交时间:
2014-04-03
后果:
1)邮箱里找到了 VPN 登录方式:
图1 某东VPN邮件截图
2)拨 VPN 登 3389 进入堡垒机:
图2 某东堡垒机登录截图
3)进入堡垒机,看浏览器历史记录,找到了各种高大上的管理系统:
图3 某东内部各种应用入口
4)还找到了执行 SQL 刷库的地方%#&……
图4 某东执行SQL的内部界面
 
    总结一下:
以 github 为首的版本控制信息泄漏:
由于 github 支持强大的搜索语法,可以很方便地搜索到一些常规搜索引擎无法搜索到的内容,如搜索内部项目、密码、密钥等。
还可以通过 github 来查找代码安全问题,如输入规则:extension:php mysql_query $_GET,可以搜索到大量包含 mysql_query $_GET 的请求,可以有针对性地进行代码审计。
当你把自己的项目代码上传到 github 时,看看配置文件里是不是有不能说的秘密,思量一下后果。
 

运维配置暴露细节

  生产环境配置不当,加上开源系统层出不穷的漏洞,敏感信息轻轻松松泄露,经常坑爹的服务有 Resin-doc、SVN、git……

案例三,乌云漏洞报告:某公司源码泄露导致配置信息泄漏
漏洞提交时间:
2011年
原理:
Caucho Resin 是一款 Web 应用服务器,它自带一个 resin-doc app,这个破玩意儿在 Resin 3.0 上有一个漏洞,可以被当成一个后门。
Resin 的某个 CGI 程序实现上存在输入验证漏洞,远程攻击者可能利用此漏洞读取 Web 主目录下的任意文件,包括 JSP 源码或类文件。如果系统中安装了 resin-doc 就可能读取 Web 主目录中的所有文件,包括类文件,然后可以反编译这些文件浏览 Java 源代码。
实施步骤:
2011年时,你可以访问这样的路径:http://www.....com/resin-doc/viewfile/?file=index.jsp
攻击者可以设置 resin-doc 外的上下文路径,读取其他 Web 目录的任意文件:http://localhost/resin-doc/viewfile/?contextpath=/otherwebapp&servletpath=&file=WEB-INF/web.xml
 
    如果运维不强制规范上线部署 Resin 时一律删除 resin-doc app,那么类似的悲剧还会继续发生,如:
    因为你有可能部署一个低版本 Resin。
 
    SVN 的隐藏目录问题,各家也遇到过。
案例四,乌云漏洞报告:某财经网某处SVN泄露
漏洞提交时间:
2014-11-19
原理:
发布流程不规范的情况下,代码上线时,Java/PHP等都特别容易带入 SVN 隐藏目录。
在 svn 1.6 以下版本,通过访问 .entries,可以下载到 svn 里的代码。在 svn 1.7 之后的版本,通过访问 .svn/wc.db,对应的 metasploit 模块也是有利用程序的。
实施步骤:
http://service.....com.cn/.svn/entries
就是这么简单。
这名白帽子还总结了两点危害:
1.泄露 svn 地址和用户信息,通过爆破可控制 svn 权限;
2.可以获取截止到上一次 svn 操作的网站源码。
    再比如乐视某分站源码泄漏
 
git
    在 google 里搜索关键词 *".git" intitle:"Index of",还可以进一步找到 git 暴露在外的站点。
 
phpinfo
    生产环境里,phpinfo 也随便放,视搜索引擎为无物?
 

后台不设防

    Elastic Search 官方的控制台本身没有访问控制,一般来说大家都会仅限内网访问,但咱家在这上面也吃过亏。

案例五,乌云漏洞报告:某站ElasticSearch远程命令执行
漏洞提交时间:
2015-03-05
原理:
es 控制台内网域名本来是有防火墙策略的,但某天调整策略时子网掩码误操作写错了,导致外网可以访问到 es 控制台。
刚好 ES 自己爆了一个高危安全漏洞(CVE-2015-1427),该漏洞可导致远程代码执行,危害极大。俩事儿撞一块了。
es漏洞利用工具
图5 es漏洞利用截图
幸好是白帽子找出来的。
 

0x02. 小结:

    不一定非要出高危漏洞,白帽子就可以用社工+中等漏洞攻进来,开发、测试、运维,都要认真,前面这些环节不认真,就得等漏洞爆出来后再认真了。
 
参考文献:
1,百度QA,将Fuzz进行到底
2,2014,乌云知识库,fuzzing XSS filter
3,2014,乌云知识库,被忽视的开发安全问题
4,2006,模糊测试
 
-EOF-
posted @ 2015-05-29 18:46  旁观者  阅读(3654)  评论(0编辑  收藏  举报