kali : 192.168.230.236
靶机 : 192.168.230.238
与之前的靶机不同,这次有ftp和8011,先登陆ftp看看
发现可以匿名登陆,但是进来毛都没有,一开始我想在kali上直接ftp,然后怎么搞都不行,总是提示ftp命令不存在(这个以后再说)
接着看看80没有什么发现
找不到可入手的地方(80网页先暂时放一放)
一开始有一个8011端口,我们访问一下
访问之后,发现也是web,我们直接扫目录
访问api,接着访问下面的文件
发现只有这个文件能够被访问,根据提示,我们出入一个file参数
拦截了,说明命令执行有效,我们换成post提交方式
直接post提交数据,发现了一个命令执行漏洞
这里还有一种命令行下的post提交积累一下
接着我们返回80页面,刚刚扫到一个development页面,访问一下试试看
发现需要账号密码,账号就应该是Frank,这也只是猜测,因为前面页面出现了Frank’s server,下面就要想办法找到账号密码
简单概述一下curl :
curl是一个利用URL语法在命令行下工作的文件传输工具
支持文件上传和下载,能查看源代码,post提交,设置代理等等,总之很牛逼
具体用法参考
https://blog.csdn.net/binglong_world/article/details/80755193
刚刚说了需要找到账号密码,下面介绍另一种工具,nikto
https://blog.csdn.net/qq_33530840/article/details/82181877
发现了index.html.bak文件
知道账号和加密后的密码,这个密码形势很熟悉,放到john里面解密
爆破出账号密码,还记得刚才的development页面吗,登陆
这里进行了文件头检验
在反弹shell的脚本上添加文件头GIF98(记住!!),然后保存为png文件
成功上传了,但是并没有显示上传路径,审查元素也没有找到
这里用到了php伪协议,ctf中很常见,还是第一次在靶机中遇到
curl -X POST -d "file=php://filter/read=convert.base64-encode/resource=/var/www/development/uploader/upload.php" "http://192.168.230.238:8011/api/files_api.php"
这里的目录是猜测的,反正是web上传,就猜呗,/var/www
捣鼓了半天,一个是命令没记对,还有就是请求页面没有选择对
解码后发现上传目录在FRANKuploads/目录下,下面反弹shell,利用那个文件包含
这就是图片的地址
curl -X POST -d "file=/var/www/development/uploader/FRANKuploads/php-reverse-shell.png" "http://192.168.230.238:8011/api/files_api.php"
查看内核版本,优先考虑内核溢出提权
这里我是在/tmp目录下下载的文件,其他的试了一些没有权限
编译运行,成功得到root权限
注意curl命令使用,nikto工具使用,包括一些信息搜集能力