0x01 前言
0x02 WEBSHELL获取的尝试
1.登录后台
data/backup目录下找到数据库的备份,从中找到了用户表ims_users。
password,在forget.ctrl.php中找到了一处。
$password = md5($password . $member_info['salt'] . $_W['config']['setting']['authkey']);。是根据原密码+salt+authkey的形式进行拼接,然后进行md5加密。data/config.php文件中。
salt和authkey拼接为新的salt,然后使用md5($pass.$salt)的加密方式进行解密。

2.失败的获取shell过程
pppppp。|
|
"*.php "文件了。但是有限制,适用于apache下,而且版本有限制。目标站不使用该方法的原因有二,一是该系统上传的位置是腾讯云COS上,二是server是Tengine。|
set global general_log = on; #开启general log模式 set global general_log_file = ‘/var/www/html/1.php’; #设置日志目录为shell地址 select ‘<?php eval($_POST[cmd]);?>’ #写入shell |
0x03 代码审计

1.分析
web/source/cloud/dock.ctrl.php,找到执行的download方法。
$data就是请求包的内容。然后对$data进行发序列化返回$ret,接下来获取$ret['file']并Base64解密返回$file。当存在gzcompress和gzuncompress这两个函数时,就会利用gzuncompress函数对$file进行解压操作。$file进行md5加密后,与$ret['path']以及获取的$_W['setting']['site']['token']进行拼接为$string。当满足$_W['setting']['site']['token']非空并且$stringmd5加密后的结果与$ret['sign']一致时,才可以进行下面的操作。下面就是文件的写入了,根据$ret['path']进行判断,然后写入的位置不一样。$_W['setting']['site']['token']这个值的获取。这个是利用authcode函数对cache_load(cache_system_key('cloud_transtoken'))进行解密获取的。authcode函数位于framework/function/global.func.php文件中。
authcode加解密,需要知道$GLOBALS['_W']['config']['setting']['authkey'],在上面提到过,authkey在data/config.php文件中。cache_system_key('cloud_transtoken')的内容了。2.cloud_transtoken的获取
framework/model/cloud.mod.php中的cloud_build_transtoken函数中被写入的,通过进入cache_write方法,发现会写入数据库中。
cloud_transtoken。结果并没有找到,可能原因是没有写入cloud_transtoken的时候就进行了数据库备份。cloud_build_transtoken。
cloud_site_info()函数获取站点信息。函数cloud_site_info()调用了cloud_api('site/info'),这里的method为site/info,所以继续调用cloud_build_transtoken从会而将cloud_transtoken的内容写入数据库。然后通过数据库备份的功能,就可以看到数据库中保存的cloud_transtoken,进而可以利用之前的分析写shell。3.自定义数据库备份

cloud_transtoken,但是数据库目录和文件的名字是随机的。
cloud_transtoken也无法利用,我们需要最新的备份文件。web/source/system/database.ctrl.php。
volume-10位随机字符串-1.sql的形式,既然可以自定义,那么就简单多了。
cloud_transtoken了。接下来就可以进行shell的获取了。4.获取WEBSHELL
cloud_transtoken、authkey已经知道了,接下来就是构造payload了。


5.延伸
/data/config.php中的authkey。如果没有文件备份,登录了一个管理员权限的用户,能否获取shell呢。答案也是可以的。
data/.,特征函数为password。然后就可以看到查杀结果,获取authkey的值。

0x04 总结
cloud_transtoken到数据库中。cloud_transtoken。转自:乌云安全
seo优化_前端开发_渗透技术








