Web6 - 变量覆盖

kim23   ·   发表于 2019-11-06 23:38:23   ·   技术文章投稿区




我们可以去网上下载这个cms的源码然后进行白盒测试


找到后台登录页面的位置,admin/index.php,源码


于是定位到配置文件config.php


发现chenk.admin.php和用户权限验证

于是定位到check.admin.php


这里定义了 CheckPurview() 来进行用户权限检查,如果是管理员才可以(getUserRank() 返回为1即可),并且使用了session_start()记录用户session,也就是说可以通过_session[]请求传参

全局搜索下CheckPurview(),发现大部分都调用了此函数

getgroupid()是实现getUserRank()的方法,在UserLogin的对象创建时,会被赋值

另外,同为 userLogin类的成员变量的 $userID,就是上面提到的 admin/config.php 中 getUserID() 函数返回的值。

所以说,userID 和 groupid的值,都能通过 $_SESSION[ ] 进行传入

然后寻找有调用session_start()函数的文件进行传参,但不一定都有用,由于/duomicms/interface/comment.php 的第一行代码就调用了 session_start();因此,可以将 _SESSION参数传入通过该文件来传入










先从后台看起吧,进入后台


直接/admin即可

构造POC并访问


interface/comment.php_SESSION[duomi_group_id]=&_SESSION[duomi_admin_id]=1&_SESSION[duomi_admin_name]=admin



返回登陆页面   刷新

直接进入后台,而且是admin身份


下面寻找可以上传一句话木马拿webshell的位置,我这里演示下全局下的百度推送,发现有路径,但是好像没有上传一句话木马的功能,但是还是可以截断利用,试试


执行PHPinfo()


  


得到shell

打赏我,让我更有动力~

1 Reply   |  Until 2020-5-29 | 1023 View

sechacker
发表于 2020-5-29

大佬 图挂了

评论列表

  • 加载数据中...

编写评论内容
LoginCan Publish Content
返回顶部 投诉反馈

© 2016 - 2022 掌控者 All Rights Reserved.