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

纵饮孤独 提交于 2019-12-04 23:02:57
郑昀 创建于2015/4/10 最后更新于2015/4/28

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

  • 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-
    易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
    该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!