基于phpstudy对cmseasy5.5进行漏洞复现

目录:
漏洞复现的cmseasy5.5百度网盘链接
安装cmseasy:

1.在phpstudy上安装cmseasy

2.设置mysql密码为phpstudy内置mysql的密码并检查安装环境

3.安装后查看mysql内cmseasy是否有内容

获取用户名和密码过程:

1.查看源码发现有个remotelogin远程登录函数

2.发现admin.php下有一个无须密码可跳转的if语句

3.在front_class.php找到IP相关函数,发现有一个x_forwarded_for登录if语句

4.在浏览器扩展中搜索x forwarded for扩展插件并获取

5.先登录cmseasy进去,然后点击设置跳转页面,发现有一个cookie安全码,记住这个页面的网址

6.打开获取到的扩展插件,输入name为X_FROWARDED_FOR,Value为目标网站IP

7.先在cmseasy退出登录,然后在之前复制的网址后面加入&ishtml=1,发现无须密码也可以登录,但是只有设置页面,找到cookie安全码并记录

8.继续看cookie_password一行,发现cookie安全码先进行base64_decode()解码,然后xxtea_decrypt()解密,然后unserialize()反序列化。

9.先找到解密函数xxtea_decrypt,然后找与其对应的加密函数xxtea_encrypt

10.因为是对$user赋值,发现其结构是user(),以及还有一个getrow()函数也要追代码

11.先找到user类,发现其继承table类,再去找table类

12.发现talbe类在inc文件夹下的table.php内,且getrow()函数也在其中

13.发现rec_select_one()还与其他2个函数有关

14.因为cmseasy是开源的,得知会用到cmseasy_user表,查看其表结构,发现有20个字段

15.于是我们写sql注入代码时要写20列,之前追代码可知传的参是一个数组
和之前对代码解读相反:先序列化,然后加密,然后编码

16.然后执行该index.php,将得到字符串复制下来

17.首先输入127.0.0.1/cmseasy/admin跳转到登录界面,然后将act=login参数改成act=remotelogin远程登录,然后在后面添加&args=字符串

18.复制加密的字符串,然后在cmd5.com进行解密,发现密码为root

1.在phpstudy上安装cmseasy
在这里插入图片描述
2.设置mysql密码为phpstudy内置mysql的密码并检查安装环境
#安装前请先在mysql创建一个数据库名cmseasy,安装时间需要等1-3分钟
在这里插入图片描述
3.安装后查看mysql内cmseasy是否有内容
在这里插入图片描述

1.查看源码发现有个remotelogin远程登录函数
里面有一个cookie_password
在这里插入图片描述
2.发现admin.php下有一个无须密码可跳转的if语句
在这里插入图片描述
3.在front_class.php找到IP相关函数,发现有一个x_forwarded_for登录if语句
在这里插入图片描述
4.在浏览器扩展中搜索x forwarded for扩展插件并获取
在这里插入图片描述
5.先登录cmseasy进去,然后点击设置跳转页面,发现有一个cookie安全码,记住这个页面的网址
在这里插入图片描述
6.打开获取到的扩展插件,输入name为X_FROWARDED_FOR,Value为目标网站IP
#本地搭建所以是127.0.0.1
在这里插入图片描述
7.先在cmseasy退出登录,然后在之前复制的网址后面加入&ishtml=1,发现无须密码也可以登录,但是只有设置页面,找到cookie安全码并记录
在这里插入图片描述
8.继续看cookie_password一行,发现cookie安全码先进行base64_decode()解码,然后xxtea_decrypt()解密,然后unserialize()反序列化。
在这里插入图片描述
9.先找到解密函数xxtea_decrypt,然后找与其对应的加密函数xxtea_encrypt
将该函数及其内部用到的其他函数一起复制到一个新建的index.php内:str2long(),long2str(),int32()

在这里插入图片描述

10.因为是对$user赋值,发现其结构是user(),以及还有一个getrow()函数也要追代码
在这里插入图片描述
11.先找到user类,发现其继承table类,再去找table类
在这里插入图片描述
12.发现talbe类在inc文件夹下的table.php内,且getrow()函数也在其中
还用到了condition()和rec_select_one()函数,而condition()就在getrow()下面,现在要继续追代码rec_select_one()了

在这里插入图片描述
13.发现rec_select_one()还与其他2个函数有关
在这里插入图片描述
14.因为cmseasy是开源的,得知会用到cmseasy_user表,查看其表结构,发现有20个字段
在这里插入图片描述
15.于是我们写sql注入代码时要写20列,之前追代码可知传的参是一个数组
和之前对代码解读相反:先序列化,然后加密,然后编码

在这里插入图片描述
16.然后执行该index.php,将得到字符串复制下来
在这里插入图片描述
17.首先输入127.0.0.1/cmseasy/admin跳转到登录界面,然后将act=login参数改成act=remotelogin远程登录,然后在后面添加&args=字符串
#字符串内的+,/都要进行unicode编码,其中+为%2d,/为%2f
然后浏览器按F12,找到查看cookie值的一栏,发现login_username值已经出来了

在这里插入图片描述
18.复制加密的字符串,然后在cmd5.com进行解密,发现密码为root
在这里插入图片描述
思考:追代码很耗时耗精力,代码审计同样如此,即使是复现漏洞也不敢说完全能看懂,有时候debug能用还是用一下比较好。

链接:https://pan.baidu.com/s/1L3KAEMGBQ3nSytih15j_aw
提取码:1234
–来自百度网盘超级会员V4的分享

  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wzzzzz06

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值