实验环境:
攻击者:Kali Linux(192.168.0.136)
靶机:Oracle VM VirtualBox 6.1.10——Debian(32-bit)(192.168.0.219)
实验流程:
-
实验环境导入方法参考链接:
https://blog.csdn.net/su__xiaoyan/article/details/111143714 -
启动靶机,信息探测。
检测与靶机的网络连通性
端口探测,服务扫描
命令:nmap -sV 192.168.0.219
通过端口扫描结果,80端口和31337端口对应的都是Web服务,尝试进行访问。
80端口为NGINX服务器的网站主页
31337端口对应的Web服务网站主页报404状态码。也可以通过查看网站源代码获取相关信息。
目录扫描
命令:dirb http://192.168.0.219:31337
通过目录扫描,网站主目录下面存在robots.txt中,尝试访问。
尝试访问网站主目录下面的taxes目录
拿到第一个flag -
继续攻击,尝试访问网站目录下面的.ssh目录
当前目录下面存在三个文件,疑似ssh的私钥、公钥以及其他相关文件
尝试下载秘钥以及authorized_keys
将这两个文件移动到kali的桌面上面
-
利用私钥进行远程连接
远程连接时需要用到用户名,该用户名可以从authorized_keys中进行获取。
远程连接时需要输入用户密码,空密码无法进行登录。 -
对ssh私钥进行解密
利用john对私钥文件进行破解
首先利用ssh2john将私钥文件转换成john可以识别的内容(注意:私钥文件必须先赋权;权限:600)
破解密码时可以直接利用默认字典进行破解,也可以利用其他字典进行破解。
通过获得的密码重新进行远程连接
-
确认当前用户权限
查看root用户的家目录(CTF比赛中,flag一般属于root用户)
当前用户为普通用户,并且root用户的下面有一个flag.txt,但是没有权限查看,需要提权。 -
提权
查看系统中具有root权限的文件
命令:find / -prem -4000 2>/dev/null
其中“/usr/local/bin/read_message”和当前目录下的read_message.c非常相似,尝试查看该文件内容。
在该文件中发现了第二个flag,尝试对该文件进行代码审计。
该文件的大致功能如下:程序执行后由用户输入用户名并将用户输入的用户名的前五位和Simon进行对比,如果相同即输出该用户名,如果不同即提示用户输入有误。
关键点:由用户输入的用户名有长度限制——20个字符 -
内存溢出漏洞
运行read_message命令,输入用户名Simonxxxxxxxxxxxxxxx/bin/sh
验证身份,尝试查看flag.txt文件
实验完成,拿下最终的flag。