VulnHub-DevGuru: 1

目录

简介

信息收集

漏洞发现与利用 

CVE-2020-26231

权限提升

CVE-2021-3156

CVE-2020-14144

Sudo提权+ CVE-2019-14287

总结


简介

        该靶机难度为中级,据说和OSCP靶机类似。通过.git目录下载网站源码,然后在配置文件中发现数据库用户名和密码,通过修改October CMS登录用户数据获取October CMS控制权,然后利用代码执行(猜测是CVE-2020-26231)获取服务器权限,可以利用CVE-2021-3156直接获取root权限,一步到位。也可以按靶机作者的思路继续进行,通过在备份文件获取到的另一个数据库用户名和密码修改gitea用户数据,进而利用CVE-2020-14144获取普通用户frank控制权,最后利用sudo和 CVE-2019-14287提升至root权限。

靶机地址:http://www.vulnhub.com/entry/devguru-1,620/

信息收集

        使用Nmap扫描目标主机发现目标主机开启22,80和8585端口,分别运行着OpenSSH 7.6p1服务,Apache httpd 2.4.29服务和git存储库,且服务器80端口存在.git目录,操作系统为Ubuntu,如图:

        利用GitHack将源码下载到本地,如图: 

        查看README.md文件发现该网站使用October CMS,查看config/database.php文件发现MySQL数据库:octoberdb,用户名:october,密码:SQ66EBYx4GT3byXH,如图:

漏洞发现与利用 

         访问adminer.php,发现目标主机使用Adminer 4.7.7,如图:

        使用刚刚获取到的凭据登录,如图:

 在backend_users表中发现登录用户frank和密码Hash:

$2y$10$bp5wBfbAN6lMYT27pJMomOGutDF2RKZKYZITAupZ3x8eAaYgN6EKK

如图:

        使用john破解密码,发现该密码类型为bcrypt,如图:

        使用dirsearch扫描网站目录发现认证页面,如图:

        访问该页面跳转到October CMS后台,如图:

        使用john和hashcat许久都未能解密frank用户的密码。通过搜索发现在线生成bcrypt密码Hash的网站:

  1. https://www.jisuan.mobi/p163u3BN66Hm6JWx.html
  2. http://www.ab126.com/goju/10822.html
  3. https://bcrypt-generator.com

        使用在线网站生成bcrypt密码Hash值,如图:

        在backend_users表中添加登录用户admin和刚生成的密码Hash值,并将is_superuser设置为1,如图:

        然后使用账户:admin,密码:admin成功登录OctoberCMS,如图:

        可看到当前OctoberCMS版本为1.0.469,尝试直接上传php文件失败。

CVE-2020-26231

        使用Google搜索该版本漏洞,发现CVE-2020-26231,如图:

        但是未找到公开的漏洞利用代码。查看CMS标签下的页面,发现blog隐藏页面只能由登录的后端用户访问,如图:

        访问blog页面报错,暴露网站物理路径,如图:

        查看代码,onStart函数中为php代码,如图:

        添加一个页面,写入标记a,如图:

        写入执行命令的php代码,如图:

        访问页面并传入参数执行命令,如图:

权限提升

        将shell反弹到本地,使用提权辅助脚本发现Linux内核版本和sudo版本,如图:

        内核版本4.15.0,可能存在CVE-2021-33909和CVE-2019-13272,sudo版本1.8.21p2,可能存在CVE-2021-3156。存在frank用户可执行文件/usr/local/bin/gitea,如图:

        端口开放信息如图:

        SUID文件如图:

        尝试利用CVE-2021-33909失败,好像需要内存大于6G,尝试利用CVE-2019-13272也失败。

CVE-2021-3156

        尝试利用CVE-2021-3156成功,直接获得root权限,如图:

        我这属于剑走偏锋,这并不是靶机作者的本意,因此继续尝试从其它途径提权。

CVE-2020-14144

        尝试使用数据库密码切换到frank用户失败,然后查看/usr/local/bin/gitea文件,如图:

        在Exploit-DB搜索gitea相关漏洞发现CVE-2019-11229和CVE-2020-14144(远程代码执行漏洞),但是需要认证才可利用。查看网站其它目录下的文件,在/var/backups/app.ini.bak中发现MySQL数据库:gitea,用户名:gitea,密码:UfFPTF8C8jjxVF2m,如图:

        使用该密码仍然无法切换到frank用户。登录Adminer后查看数据库gitea,在user表中发现密码Hash值:

c200e0d03d1604cee72c484f154dd82d75c7247b04ea971a96dd1def8682d02488d0323397e26a18fb806c7a20f0b564c900

和hash类型:pbkdf2,如图:

        搜索发现pbkdf2算法通过多次Hash来对密码进行加密。原理是通过将密码和Salt进行Hash,然后将结果作为Salt再与密码进行Hash,多次迭代后生成最终的密文。查看salt:Bop8nwtUiM,如图:

        用户frank的密码Hash长度为50字节,但不知道迭代次数。直接使用john和hashcat都无法识别该Hash,且未找到在线破解网站。在http://www.tomeko.net/online_tools/hex_to_base64.php将十六进制字符串转换为base64,然后尝试使用john和hashcat进行破解无果,如图:

        搜索发现https://github.com/hashcat/hashcat/issues/1583,将salt进行base64编码后拼接成如下格式破解,如图:

        跑完rockyou字典都没解密成功。然后在GitHub找到gitea源码,搜索该存储库下的pbkdf2找到两个长度为50字节的pbkdf2算法迭代次数为10000,如图:

        搜索在线生成pbkdf2密码的网站,该网站https://neurotechnics.com/tools/pbkdf2-test可生成自定义长度的密码hash值,且生成的密码可用,如图:

        将user表中frank用户数据进行复制,然后替换用户名、邮箱等信息为admin,将密码hash替换为刚刚生成的值,如图:

        访问8585端口即可使用新添加的用户名和密码登录。测试CVE-2020-14144漏洞利用代码发现有点问题,添加两行代码设置身份标识即可,如图:

        再次运行脚本,获得frank用户shell,如图:

Sudo提权+ CVE-2019-14287

        使用sudo -l发现可免密执行的sudo命令,但却限制了root用户免密执行,如图:

        直接利用CVE-2019-14287进行绕过,如图:

总结

        在该靶机的立足点卡了许久,由于未找到CVE-2020-26231的漏洞利用代码,并且没用过老外开发的October CMS,最后看了下提示才得以立足,但在获取立足点后就容易很多了。

欢迎关注朋友的微信公众号

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值