文章目录
这篇文章记录cms识别脚本。
技术原理
1.使用在线平台识别,比如whatcms,fofa等
2.自己写脚本识别,但是指纹库麻烦,需要耗费大量精力
代码实现一
这里我使用的是whatcms接口,可以免费每个月使用1000次。需要自己申请key。也可以用别的接口。
python
from prettytable import PrettyTable
from config import apikey_cms
import requests
def cms(domain):
if apikey_cms=="None":
print("no apikey for whatcms")
return None
api_url = f"https://whatcms.org/API/Tech?key={apikey_cms}&url={domain}"
response = requests.get(api_url)
# print(response.text)
# 检查响应状态码是否为 200 (OK)
if response.status_code == 200:
data = response.json()
if data['results'] != []:
tech_table = PrettyTable()
tech_table.field_names = ["技术名称", "版本", "类别", "更多信息"]
# 提取技术栈数据并添加到表格中
for tech in data['results']:
tech_table.add_row([
tech['name'],
tech['version'] if tech['version'] else 'N/A',
', '.join(tech['categories']),
f"https:{tech['url']}" # 拼接完整的 URL
])
# 打印技术栈表格
print("技术栈信息:")
print(tech_table)
else:
print("未识别到cms信息")
if data['meta'] != []:
# 创建 PrettyTable 对象来存储社交媒体数据
social_table = PrettyTable()
# 设置列名
social_table.field_names = ["社交网络", "URL", "个人资料"]
# 提取社交媒体数据并添加到表格中
for social in data['meta']['social']:
social_table.add_row([
social['network'],
social['url'],
social['profile']
])
# 打印社交媒体表格
print("\n社交媒体信息:")
print(social_table)
else:
print("未识别到社交信息")
else:
print(f"请求失败,状态码:{response.status_code}")
if __name__ == '__main__':
cms("http://eci-2zea2431utbdaijiw30l.cloudeci1.ichunqiu.com/")
这里我采用一道靶场为例:
代码实现二
自己使用指纹库识别,收集特征文件的md5值,然后访问文件比对md5值。
python
def cms_cms(url):
cms_json = open("../fingers/cms/fingers_simple.json", "r", encoding="utf-8")
cms_data = json.load(cms_json)
for i in cms_data["data"]:
print(i)
if i["path"]!="":
respon = requests.get(url+i["path"])
if str(respon) == "<Response [200]>":
md5_1 = hashlib.md5()
md5_1.update(respon.content)
hash_key = md5_1.hexdigest()
if hash_key ==i["match_pattern"]:
print(i["cms"])
return i["cms"]
指纹库如下这种(自己在网上收集):
xml
{
"data": [
{
"cms": "\u4e94\u6307cms\u7f51\u7ad9\u7ba1\u7406\u7cfb\u7edf",
"file_type": "css",
"type": "md5",
"match_pattern": "5fed1213ff84fad23770feb545d0bb18",
"path": "/res/member/css/member.css",
"uptime": "2020-07-20 15:22"
},
{
"cms": "\u4e94\u6307cms\u7f51\u7ad9\u7ba1\u7406\u7cfb\u7edf",
"file_type": "css",
"type": "md5",
"match_pattern": "5d5357cb3704e1f43a1f5bfed2aebf42",
"path": "/res/member/css/bootstrap.min.css",
"uptime": "2020-07-20 15:22"
},
{
"cms": "\u4e94\u6307cms\u7f51\u7ad9\u7ba1\u7406\u7cfb\u7edf",
"file_type": "css",
"type": "md5",
"match_pattern": "f392e44a01b4e725a0721c791b628107",
"path": "/res/member/css/login.css",
"uptime": "2020-07-20 15:22"
},
}
总结
对于cms识别如果自己没有大量时间建议使用在线cms识别。
浏览器插件: wappalyzer
whatcms
云悉
fofa,360quake等
指纹库:
自己去github上面找,然后自己针对经常遇到的cms进行收集,制作自己的指纹库。