被忽视的开发安全问题
0x00 背景
本文是为了揭示那些被忽视的开发安全问题,主要针对基础设施部署环境基础解决方案包括(内部、外部、云环境)给出的解决方案。
0x01 攻击面
github
版本控制工具:
持续集成工具:
aws config files:
客户端配置工具:
elasticsearch:
内存数据库:
版本控制工具:
github信息泄漏:
github支持较为较为强大的搜索语法,通过这些搜索语法,通过github可以搜索到一些常规方法无法搜索的内容,如搜索内部项目、密 码,ssh私钥等。 Conviso Research and Development Team编写了个较为详细的github语法搜索文章,可以通过http://blog.conviso.com.br/2013/06/github- hacking-for-fun-and-sensitive.html 查阅。 如搜索mysqldump 备份的sql文件,可使用extension:mysqldump sql来搜索。
另外还可以通过github来查找代码安全问题,如输入规则:extension:php mysql_query $_GET,可以搜索到大量包含mysql_query $_GET的请求,可以有针对性的进行代码审计。
git 娱乐:
github 是否能让我们冒充其他用户呢?让我们试下成为linus,通过邮件组收集下大神的邮箱信息。
通过github 可以搜索到linus的commit记录。
结果linus大神的commit记录出现在了我们的repo源。
该问题后的总结,审计谁可以访问到你的repos,启用github双因素认证。
git配置不当:
如果.git文件夹可以被外网,攻击者可以通过.git下载所有的代码,当前前提是目录可被遍历,如果能遍历可以简单的获取到源代码。
接着执行。
通过在google中输入查询语句,*”.git” intitle:”Index of”,可以找到几条记录。
通过Google找到了一台配置错误的机器,看我们可以访问到.git目录
上边这些代码,都可以被我们下载到。如果目录没有开放遍历,可以检测.git/config
使用dvcs-pillage or dvs-ripper 下载源代码,dvcs-pillage 也支持HG和GZR文件格式。 .git 泄漏你可以获取哪些东西呢,包括配置文件,源代码,开发者姓名、公钥、邮箱地址等,repo记录,漏洞漏洞删除的修复记录、密码、私钥等信 息,wordpress配置文件,站点数据库备份在.git,会话密钥等。
svn配置不当:
在svn1.6之前的版本,通过访问.entries,可以下载到svn里的代码,比如案例: WooYun: 乐视某分站源码泄漏
在metasploit里有利用程序,对应的利用模块是:
auxiliary/scanner/http/svn_scanner。
在svn1.7之后的版本,通过访问.svn/wc.db,对应的metasploit模块也是有利用程序的,对应的modules是:
auxiliary/scanner/http/svn_wcdb_scanner。
gitlist:
通过google 搜索关键字,powered by gitlist,可以看到可以搜索到的记录数为: 897,000 条结果。
在gitlist 4.0及之前版本存在远程代码执行漏洞,漏洞CVE版本号为CVE-2014-4511,该漏洞利用方式为:””whoami,通过执行该命令可以导致gitlist出现知名错误。
在2014年6月29号的时候, 该文章对这个远程代码执行漏洞进行了详细讲解并且给出了漏洞利用代码。
博客地址:http://hatriot.github.io/blog/2014/06/29/gitlist-rce/ 通过该利用程序可以将php木马写入到gitlist目录中,从而获取权限服务器
利用代码:
利用方式:
持续集成工具:
hudson是jenkins的前身,是基于Java开发的一种持续集成工具,用于监控程序重复的工作,Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使持续集成变成可能。
通过Google Hacking方法,讲hundon输入到shodan中进行搜索,可以发现大量使用hundon的服务器如,hundson搜索结果。
jenkins搜索结果。
在Jenkins如果缺少认证,可以访问/view/ALL/newJob来新建一个build然后执行恶意代码如下图:
另外也可以使用metasploit来进行渗透测试。
通过metasploit来进行利用,可以获取目标服务器权限
参考:https://www.pentestgeek.com/2014/06/13/hacking-jenkins-servers- with-no-password/ 把邪恶的东西放在/vagrant/.git/hooks/post-commit并等待用户提交一些代码,从用户挂载/vagrant目录开始,钩子就 一直在运行,即使用户销毁了VM。
kickstart files:
在kickstart中有3种办法重置用户密码,1、安装过程中 2、在kickstart文件加密的哈希” rootpw –iscrypted” 3、在kickstart文件明文” rootpw –plaintext”
举例
aws config files:
AWS 命令行界面 (CLI) 是用于管理 AWS 服务的统一工具。只通过一个工具进行下载和配置,您可以使用命令行控制多个 AWS 服务并利用脚本来自动执行这些服务。
aws使用aws商店以明文存储hiddle申请,这是典型的特权访问。
客户端配置工具:
Chef是由Ruby与Erlang写成的配置管理软件,它以一种纯Ruby的领域专用语言(DSL)保存系统配置“食谱(recipes)”或“做饭书(cookbooks)”。
Chef由Opscode公司开发,并在Apache协议版本2.0下开源发布。Chef可在主从式架构之下运行,亦可在名为“chef-solo”的集成配置之下运行。
通过shodanhq来搜索下“chef server” 可以找到较多运行该服务的服务器。
通过查看chef上可以看到登录的帐号密码,即可完成登录,可以看到较多敏感信息!所以一定要记得修改默认密码。
knife 是一个chef命令行实用工具,可以加密及存储数据包凭证,使用方法例如:
chef/knife 加密数据包:
Vagrant:
你知道如何修改你的ssh keys吗?Vagrant有默认证书,并且sudo不需要密码,可以使用metasploit来扫描默认key,如图:
elasticsearch:
elasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
elasticsearch 本身没有访问控制,任何通过http api搜索es中存储的结果,可以用put请求来update存储结果。elasticsearch早与1.2.0版本中存在远程代码执行漏洞,cve版本号为:CVE-2014-3120
elasticsearch启动默认端口为9200,可以看到集群版本信息如图:
使用metasploit溢出存在漏洞的集群,成功获取权限。
内存数据库:
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)
redis没有加密方式,监听6379 tcp端口,默认redis如果没有指向监听内网地址,而对外开放,外网攻击者可以直接访问该数据库。
通过shodan来搜索redis:6379 关键字,可以获取大量redis信息:
随机找一条,可以正常登录,redis-cli 可以指向需要连接的redis ip地址。
memcache:
memcache 是一种分布式缓存服务器,和通常使用的非分布式的ecache不同,memcache需要独立的服务器支撑,客户端通过配置IP地址和端口号(默认11211)与之连接并使用API进行数据的缓存操作。
memcached未作IP限制导致缓存数据可被攻击者控制,可被攻击者控制,通过连接上后可获取敏感信息,如图:
0x03 结语
通过这些案例,让我们知道,其实安全问题不止来源于web问题,安全问题更来自于运维安全,运维和运维安全的强弱是衡量一个公司安全的基础之一!
被忽视的开发安全问题相关推荐
- ASP.NET开发安全问题
ASP.NET开发安全问题 前言:之所以想到要写ASP.NET安全问题的文章,是有感于自己的一些经历.想当初自己学习ASP.NET的时候,到处找有关安全方面的文章,当时发现很多文章指示蜻蜓点水的告诉我 ...
- 游戏服务器 协议 安全问题,游戏服务器开发安全问题
游戏服务器开发安全问题 内容精选 换一换 如果您需要使用毕昇JDK,则需要先在服务端安装毕昇JDK.毕昇JDK基于OpenJDK开发,是一个高性能.可用于生产环境的OpenJDK发行版,它积累了大量使 ...
- java开发安全问题_Java 安全开发需要了解什么?
安全服务于业务,既然想从事Java安全开发,首先要精通"业务"--Java开发. Java平台被用于很多领域开发,Web Dev是其中一个.因此学习可以分为两个层面基础面和领域面. ...
- 安全基础教育第一季:堡垒是从内部攻破的
郑昀 创建于2015/4/10 最后更新于2015/4/28 本文档适用人员:广义的技术人员 提纲: 堡垒是从内部攻破的 员工无知者无畏 运维配置暴露细节 后台不设防 常犯常新,屡战屡败 处处留心皆学 ...
- 深度学习框架中的魔鬼:探究人工智能系统中的安全问题
ISC 2017中国互联网安全大会举办了人工智能安全论坛. 我们把论坛总结成为一系列文章,本文为系列中的第一篇. 深度学习引领着新一轮的人工智能浪潮,受到工业界以及全社会的广泛关注. 虽然大家对人工智 ...
- ASP.NET安全问题--ASP.NET中的授权问题(前篇)
ASP.NET安全问题--ASP.NET中的授权问题(前篇) 前言:之前的一些文章谈了一些有关验证的问题,接下来的一些文章就说下授权以及代码访问安全的问题. 在ASP.NET应用程序 ...
- Android应用安全开发之浅谈加密算法的坑
<Android应用安全开发之浅谈加密算法的坑> 作者:阿里移动安全@伊樵,@舟海 阿里聚安全,一站式解决应用开发安全问题 Android开发中,难免会遇到需要加解密一些数据内容存 ...
- 创新式开发探索(一) —— 开篇
创新并不是什么神秘的事物, 它就产生于我们工程师一族日常的开发活动中. 为什么还要加班熬夜写程序? 为什么上班的8小时不能把该学的东西都学到手, 该做的事情都做好? 为什么还停留于低层次低效率的开发 ...
- 安全开发Java:日志注入,并没那么简单
本文分享自华为云社区<Java云服务开发安全问题解析--日志注入,并没那么简单>,原文作者:breakDraw. 案例故事 某个新系统上线了,小A在其中开发了个简单的登录模块,会在日志里记 ...
最新文章
- JavaScript高级程序设计(第3版)非扫描版
- lex编译dos命令_微软新的命令行工具:Windows Terminal
- 简述Intel的MESI缓存一致性协议
- pprof 的原理与实现
- Java Web 前端高性能优化(一)
- 【dfs】无穷迷宫(jzoj 3924)
- C++中virtual关键字的用法
- mysql学习笔记03 mysql数据类型
- 整合vue_直指核心,7天成为Vue高手
- kibana常见启动报错
- linux下u盘的使用
- 计算机键盘功能教案,认识键盘教学设计
- 25个常用Matplotlib图的Python代码
- python的debug为什么点第一行直接运行结束了_Python 代码调试工具 pdb 快速入门
- 菜鸟在学编程__LSJ
- Windows XP系统正版验证出现的黑屏解决方法
- 北漂这些年(四)-地下室
- 实用常识 | 如何将多张图片合成一张gif图片(使用Win10自带工具or利用Photoshop实现)
- Blockchain DB,区块链数据库
- 阿里云服务器封禁了SMTP 25号端口
热门文章
- 腾讯地图只显示某一区域,覆盖图,marker自定义图标和文本标注
- [已推荐到体育博客,点击查看更多精彩内容] 篮球上的幽默时刻(多图)
- hbase 使用lzo_hbase 使用LZO笔记
- 燃爆朋友圈!中国设计师携手,用海报为武汉加油!
- 测试计划及方案怎么写?
- C语言将UTC时间转为时区时间的方法参考
- 利用Sharepoint里面Mysite的Shared Pictures的图片做相册 [包括创建文件夹,上传文件]...
- 从零实战:爬2019富豪榜进行数据分析
- 新华三交换机密码重置
- 【数据结构篇03】栈和队列