本帖最后由 zhaorong 于 2021-4-20 11:31 编辑
一、前言
CMS指纹识别:指纹识别是将识别对象的指纹进行分类对比从而进行判别 就像是人的指纹一样 不会出现一模一样的指纹从
而通过每个对象的不同特征来识别对象的归属。这里的指纹识别是指网站CMS指纹识别 在渗透测试过程我们会遇到各种各
样的CMS建站我们需要判断目标网站使用的到底是哪一个CMS。判别方法就是看应用程序的文件中出现的特征码 这个特
征码就可以快速识别出到底是哪一个CMS,再将判别出来的CMS进行漏洞查找利用。
二、CMS指纹识别思路
可以对CMS指纹的各个识别工具进行使用 区别各个指纹识别的不同与特点
(一)可以使用CMS指纹识别工具来进行客户端的识别 常用的工具有Test404轻量CMS之别识别工具
plecostcmscan、御剑WEB指纹识别工具 BlindElephant、FingerPrint、gwhatweb、TideFinger
Wappalyzer、指纹特征识别beta2-b0y等。
(二)手工进行识别,可以对网站的显示信息进行分析 如技术支持显示 Powered by xxx 或者是网站的后台登录界面
也有建站cms的特征码。以及网站的路径信息 不同的cms建站有不同的网站路径名,可以根据其中特有的路径名进行
区分还可以利用robots.txt文件来匹配不同的cms。
(三)在线cms指纹识别平台检测 如http://whatweb.bugscaner.com/look/、http://www.yunsee.cn/finger.htm
三脚本类的指纹识别工具进行利用
(一)根据关键字网页显示的特征码识别cms类型
脚本代码如下:
利用过程:
- request建立连接---获取网页内容---利用正则表达式匹配关键字---识别CMS类型
- #coding=utf-8
- import requests
- import re
- header={
- 'Accept-Language':'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
- 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
- 'User-Agent':'xxxxxx',
- 'Accept-Encoding':'gzip, deflate, br'
- }
- url=("http://www.xxx.com")
- res=requests.get(url, header)
- text=res.text
- # print(text)
- pattern=re.compile('Powered by <.*?>(.*?)<\/.*?>.*?',re.S)
- flag=re.findall(pattern,text)
- if flag!=[]:
- print("识别成功:",end="")
- print(flag)
- else:
- print("识别失败")
复制代码
Phpwind cms指纹识别
织梦 cms指纹识别
Discuz cms指纹识别
在互联网上 还有一种显示建站厂商的特征码方式 就是技术支持:XXX
这种方式和前面介绍的Power by xxx的方式是一样的 都是反映该网站建站以及维护的cms厂商信息。
技术支持:本成网络
脚本代码如下:
利用过程:
- request建立连接---获取网页内容---利用正则表达式匹配关键字---识别CMS类型
- # coding=utf-8
- import requests
- import re
- header={
- 'Accept-Language':'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
- 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
- 'User-Agent':'xxxxxx',
- 'Accept-Encoding':'gzip, deflate, br'
- }
- url=("http://xxx.com")
- res=requests.get(url, header)
- text=res.text
- # print(text)
- pattern=re.compile('技术支持:.*?<.*?>(.*?)<\/.*?>.*?',re.S)
- flag=re.findall(pattern,text)
- if flag!=[]:
- print("识别成功:",end="")
- print(flag)
- else:
- print("识别失败")
复制代码
运行效果图如下:
(二)根据cms的路径信息识别cms类型
脚本代码如下:
利用过程:
request建立连接---枚举网站路径---返回状态码---识别CMS类型
- # -*- coding:utf-8 -*-
- import requests
- import re
- url = 'http://www.xxx.com'
- with open("web.txt","r") as web:
- webs=web.readlines()
- w=open('write.txt','w+')
- for web in webs:
- web=web.strip()
- pattern=re.compile('(.*?)------.*?',re.S)
- flag=re.findall(pattern,web)
- u = url+flag[0]
- r = requests.get(u)
- status_code=r.status_code
- if status_code==200:
- print("识别成功:",flag[1])
- print("url为:"+u+' '+"状态为:%d"%status_code)
- w.write("识别成功:"+flag[1]+"url为:"+u+' '+"状态为:%d"%r.status_code+"\n")
复制代码
phpwind cms指纹识别
将脚本运行的结果保存在write.txt文本下,方便用户查看
四、客户端类的指纹识别工具进行利用
(一)御剑WEB指纹识别工具
工具介绍:
该工具利用的原理类似于上述的python脚本 通过枚爆破识别cms的路径和特征码
使用中可以单一添加 也可以导入文本(存放多个网站的文本)然后进行扫描
这里以论坛为例子 御剑WEB指纹识别工具会通过应用指纹(网页特征)和判定文件路
径信息来识别各个不同的cms类型。
最终结果为无法判定 现实中在建站的初期 如果网站管理员想要避免自己的网站被黑客前期
信息收集的话可以修改网页的特征信息
(1)修改网页展示信息网页模板 技术支持 关键字 版本信息 后台登录模块信息等
(2)修改网页路径信息 /robots、/admin等
(3)修改网页信息可以个性化一点 修改网页路径信息可以通过拼音缩写或者个性化方式来隐藏
建站厂商的通用路径名 例如/admin修改为/a8min
识别成功的案例如下
现实中如果是大型的互联网企业,网站中常常会部署一些安全设备 比如WAF(WEB Application Firewall流量
探针等如果某个用户ip在一个很短的时间段发送了多个请求url 这就明显是有人利用工具在爆破 这个时候网站
可能就会做一些保护措施 例如常见的封IP等。
(二)指纹特征识别beta2-b0y
工具介绍:
通过识别/robots.txt路径下的内容 如果出现Disallow://wp-includes/则判定cms为
wordpress以此类推来匹配robots路径下的内容。
识别成功案例
如下该工具的配置 可以导入特征文件 也可以导出特征文件 从而增加工具可识别的范围
五、在线cms指纹识别平台
平台网址为:http://whatweb.bugscaner.com/look/通过域名或者ip地址进行查询。
六、后记
CMS指纹识别技术在实际的渗透测试中处于信息收集的模块 如果在前期的信息收集中能够收集到一个网站的建站cms
就能够利用该cms 的版本漏洞 以及在开源的cms中可以利用代码审计来寻找网站漏洞。平时挖掘通用漏洞中 寻找相同
建站cms也是一个比较麻烦的过程 用户可以利用上述的方式来寻找该网站是否属于自己想寻找的cms建站厂商。 |