描述:一个中等难度的靶机,最终目标是获取root权限拿到flag
1、目标发现
2、namp扫描
发现找到22端口、80端口。但22端口不是open状态,而是filtered状态,说明被防火墙拒绝了。以及一个robots文件
(资料图)
3、搜集Web信息
查看源码内容,发现提示信息
页面源码发现的信息:
登录页面:
查看源码信息:
源码中有一个login.php点击可以查看源码
看源码可以知道,登录成功会返回一张图片,这张图片应该就是上述提到需要的.jpg图片。
看源码中的SQL查询语句,发现可以SQL注入。
尝试注入' OR 1=1 --
但是没有返回任何信息
尝试直接访问3.jpg
保存这个文件
尝试使用隐写工具看是否有隐写
解密出一份文件。文件内容:
看看web页面的robots.txt
访问一下/config路径
有一个1.txt文件 文件内容可能是密码 ,先用base64解密一下
从目前得到信息,似乎是两个端口信息。
访问一下css/目录和imagens/目录
在css目录中发现一个2.txt 文件,文件内容如下
这应该是一种编码,经过搜寻,这应该是Brainfuck编码 https://en.wikipedia.org/wiki/Brainfuck
解码可得:
这应该也是一个端口号。
访问imagens/目录,
没有发现有价值的信息。
尝试使用目录扫描看是否能发现更多信息
发现backup
目录。访问
得到一个wordlist.txt
文件
看起来像是一个字典文件。
综合前面得到的信息。1.txt得到了信息:10000
;2.txt的内容是:4444
;3.jpg的内容是65535
。以及前面的提示:port knocking
和一个wordlist.txt
文件。
首先,尝试使用knock
工具进行tcp端口敲门
再次使用nmap扫描目标主机:
发现ssh端口状态是开放状态了。说明通过端口敲门,ssh端口被防火墙放行了。
尝试使用之前得到的用户名jubiscleudo
和得到的wordlist.txt
对SSH进行爆破
成功得到了一个密码。使用jubiscleudo
登录目标机器
4、搜索目标主机信息
获取内核版本信息和系统版本信息
获取任务计划信息
获取sudo权限信息
查找suid权限程序
查看网站根目录文件
发现一个.backup_config.php
的隐藏文件,查看其内容
发现一个hackable_3
的用户和密码信息。
尝试使用这个用户登录到目标主机
搜集这个用户的信息
sudo 、suid、任务计划都没有发现可以利用的地方。
在exploitdb中查找内核版本相关漏洞信息
尝试使用本地提权漏洞,把exp文件上传到目标主机,编译执行
但发现目标没有gcc编译环境。在本地同版本系统环境编译后再上传执行试试
但发现需要SUID,陷入僵局。
回到前面获取到的信息,发现有一个特别的地方
hackable_3
这个用户所属lxd
组。(LXD是一个系统级的容器)。
5、尝试使用lxd容器提权
参考文章:https://www.freebuf.com/articles/system/216803.html
首先,在本地环境构建一个用于提权的镜像
将构建好的镜像tar.gz文件上传到目标机器
导入镜像
运行容器将宿主机根目录挂载到容器中
查看容器内挂载的宿主机根/
目录信息