DevGuru

一、测试环境

DevGuru靶机、Mac攻击机、kali2020辅助攻击机

VM名称:DEVGURU:1
下载:https://www.vulnhub.com/entry/devguru-1,620
目标:获得user.txt与root.txt并获得root权限
运行:VMware Workstation 16.x Pro(默认为NAT网络模式,VMware比VirtualBox更好地工作)
描述:DevGuru是一家虚构的web开发公司,雇用您进行pentest评估。您的任务是在他们的公司网站上查找漏洞并获取root。

靶机DevGuru

image-20210305104431636
QQ20210305-0

二、信息收集

1.nmap扫描端口信息

D76167BBD7BA7094E3A61116D26257F9

2.我们看到了一个git信息泄露~提取泄露信息

image-20210305111115003
image-20210305111337967

提取完成。我们打开泄露信息文件夹~

image-20210305111433148

3.我们在config/database.php发现数据库密码信息

image-20210305111610453

adminer.php文件是数据库配置功能页面,类似phpmyadmin

4.接下来我们登录adminer进入数据库

image-20210305112300310

登录数据库,寻找铭感信息~

image-20210305122041271

我们看到了一个用户名 frank 但是密码是被加密过的~

经分析得知~这个是MD5二次加密并加盐后的密码。

那么我们需要自行修改密码并加密。替换原有的密码即可。

image-20210305135524213

把密文替换~两个选项都需要哦:password和persist_code两个字段,值都是上面123456加密加盐值,类型不选。保存即可

image-20210305135624740

PS:当然我们也可以新建一个用户,但是记得给管理员权限~

5.接下来我们扫描网站目录,寻找后台登录页面。

image-20210305135947558

扫描完成后,测试一波,发现了登录页面~

image-20210305140021363

5.登录后台~

435D8EED33C18C0EF39B0A9CC7417670

三、渗透测试之远程命令执行

1.仔细查询一番,发现可以在cms里面进行命令执行~

image-20210305140456221

2.在code中添加命令执行参数

image-20210305141943919

在Markup添加一行进行调用

image-20210305142038460

点击首页进行访问~

image-20210305142226325

接下来,我们用GET请求,尝试命令执行

image-20210305142334872

命令执行成功!

PS:在命令存在空格时使用${IFS}绕过即可

image-20210305142441118

四、反弹shell

1.修改之前写入的命令执行参数,修改为反弹shell的命令

image-20210305142703158

2.攻击机终端使用nc连接

输入完成后,重新访问首页,进行反弹~

EF0762613693765C8F46A48E54C66B28

进入var,发现备份文件,仔细搜寻一番,发现有一个可疑的备份文件~

image-20210305143133844

我们把这个文件复制到html里面进行下载查看~

image-20210305143415285

我们访问域名进行下载

image-20210305143609006

打开搜寻一番,发现了另外一个数据库用户密码

image-20210305143803489

五、破解密码

打开:http://192.168.0.111/adminer.phparrow-up-right 登录新的数据库

image-20210305144100406

我们再次看到了user,发现了一个新的加密方式~

53D1E918F3F54B1B5F3F09935F099675

修改frank用户密码为123456,需要知道密码加密方式。。

查找源码加密方式:https://github.com/go-gitea/gitea/blob/master/models/user.goarrow-up-right

加密参数有passwd,salt,algo

image-20210305144502298

按照switch语句判断应该执行

修改一下脚本进行运行。

使用golang语言在线编译:https://play.golang.org/arrow-up-right

image-20210305144714408

得到密文:

也可以用python进行编译

修改密码:

image-20210305144904064

六、登录&获取shell

1.登录系统~

image-20210305145203376
B553250E55D054D729D1CE1413AA08D5

2.寻找地方写shell

找到个人仓库~

image-20210305145532804

点击setting

image-20210305145550893

找到Git Hooks

image-20210305145605512

点击最后一个的小画笔

image-20210305145747028

写入bash脚本

image-20210305145850090

点击update hook进行保存,在终端监听5555端口

接下来,在CODE中选择一个文件进行修改并保存

image-20210305151128601
image-20210305151145076

Done!获得frank用户的shell

image-20210305151212492

使用python3升级shell功能

image-20210305184006213

七、获得user.txt

获得第一个flag:user.txt

627BED4DAF5A2EAAAA1DE963F5B6500A

八、提权

查看sudo -lcrontab -lid等,此处可以利用suid提权

B39D3E6C-8263-4AA9-8D5D-CF9FEEB5A04F

sudo提权辅助网站:https://gtfobins.github.io/gtfobins/sqlite3/arrow-up-right

image-20210305185209650
image-20210305185245458

提权时候会让输入密码,使用sudo -u#-1绕过限制进行执行

image-20210305185415125

九、获得root.txt

进入root用户文件夹获得flag

image-20210305185640503

Done!

最后更新于