Vulnhub 靶场 DIGITALWORLD.LOCAL: SNAKEOIL
前期准备:
靶机地址:https://www.vulnhub.com/entry/digitalworldlocal-snakeoil,738/
kali攻击机ip:192.168.11.129
靶机ip:192.168.11.192
一、信息收集
1.使用nmap对目标靶机进行扫描

发现开放了 22、80和8080端口。
2. 80端口

没发现什么,扫一下目录:

什么也没有。
3. 8080端口

查看一下网站内的信息,发现在 Useful Links 里有个网址:

是一些配置信息,,扫一下目录:

发现了一些新的页面,查看一下:
/users 页面下:

发现用户名和加密过的密码。
/registration 页面下:

说请求方法错了,抓包改下请求方式:


说 username 字段不能为空,那就加上 username 字段:

又提示 password 字段不能为空,再加上 password 字段:

说注册成功了,那就在 /login 页面登陆一下,要加上用户名和密码:

再访问一些别的页面(现在是在登陆状态中):
/create 页面:

无法了解请求,大概是传入什么东西。
/run 页面:

说要以 url:port 形式提供要请求的 URL:

记得格式要换成 Content-Type: application/json, 在ajax中,如果没加contentType:"application/json",那么data就对应的是json对象;反之,如果加了contentType:"application/json",那么ajax发送的就是字符串。
现在又说需要 secret key ,访问一下 /secret 页面:

POST 方式不行,再换成 GET :

还是不行,那就再加上之前返回的 cookie:

发现还是不行,想起来之前发现过一些配置信息,从中找到了 cookie 的名称:

再次提交 cookie:

得到 "secret_key": "commandexecutionissecret",再在 /run 里面提交:

得到了返回信息,像是系统的进程信息,尝试一些别的指令:


发现可以注入,尝试往其中写入 shell:

发现不行,找了找python,nc等都不行,那试试能不能上传个 .ssh 私钥文件然后 ssh 登录。
二、制作ssh私钥登录
首先先制作 ssh 私钥:

开启 http 服务,把私钥文件传到靶机上:


查看一下有没有上传成功:

时间上没问题,上传成功了,把 authorized_keys 文件移到 /home/patrick/.ssh/ 目录下:

查看一下 .ssh 目录下有没有:

发现已经有了,验证一下内容:

没问题,那就直接 ssh 登录:

三、提权
登陆成功,看一下权限:

发现可以以 root 身份执行任意命令

不过需要 patrick 的密码,找找系统中的文件,看有没有线索,最后在 ~/flask_blog/app.py 文件中找到了:

切换 root 账户:


完成。

浙公网安备 33010602011771号