
0x01 前言
这次的靶机还是OSCP Proving Grounds Play上的机器Potato。记录一下打靶的整个过程,希望能对新手同学有一些帮助。这个靶机整体不难,需要思考为什么会有这样的返回结果。
0x02 过程
信息收集
首先还是对主机的端口信息进行收集
利用masscan快速发现靶机开放了那些端口:
接着用nmap扫描开放端口的具体信息
从nmap扫描结果来看2112端口是开放的ftp服务,并且匿名用于还能进行登录,还存在两个文件。
接着收集web站点的目录信息。
用dirsearch扫描目标主机,发现存在一个admin的目录是一个登录页面
尝试了常用的弱口令均无法登录进去。
访问FTP服务,用匿名用户登陆时,需要填写密码,空密码无法登录
考虑到匿名用户还可以用邮箱登录
anonymous@domain.com
用邮箱成功登录,并成功获取到两个文件
在index.php.bak中找到账号和密码
但是却无法登录,应该被修改了。
分析源码发现strcmp函数可以进行绕过
利用
username=admin&password[]=1
绕过验证机制
getsgell
来到后台发现存在5个功能点
在kali上测试date返回结果跟站点类似
可能存在命令注入,但测试发现没有命令注入
抓包发现log功能点的数据有一个file参数,参试文件包含
存在文件包含,并且发现webadmin的密文
用john对密文进行解密
得到密码
提权
用得到的密码进行ssh连接
发现webadmin的sudo能执行命令
(ALL : ALL) /bin/nice /notes/*
在notes目录下存在id.sh和clear.sh两个shell脚本。
执行id.sh时返回用的id值,clear.sh时清屏。怀疑存在环境变量劫持。测试发现不存在环境变劫持。
观察sudo命令,考虑目录穿越,发现能进行目录穿越
在tmp目录下
echo "/bin/bash -p" > id
并给可执行权限
执行sudo命令,成功提权
sudo /bin/nice /notes/../tmp/id
0x03 总结
提权完成后去查看id.sh内容时发现,脚本内容执行的时/bin/id,发现了不能进行环境变量劫持的原理。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)