参考:https://www.yuque.com/weiker/xiaodi/xydntt
信息收集
参考:http://t.csdn.cn/pMmhk
https://zhuanlan.zhihu.com/p/355150689
(CMS)指纹识别
- 概念
- cms 就是内容管理系统,也可以理解成为网站建设系统。
- 内容管理系统使用基于角色的用户管理,通过添加不同权限的用户,可以把网站管理权限分配到不同的用户上,然后把这些用户通过权限来划分各种级别,例如:超级管理人员、栏目管理人员、文档录入人员、审核人员等等,这样网站在发布内容的时候就不会出现任何错误,同时也能保证内容的质量。
- 现在流行的开源 CMS 系统有 WordPress、Joomla!、Drupal、Xoops、CmsTop 等。
- 识别 cms 目的
- 准确的获取 CMS 类型、Web 服务组件类型及版本信息。
- 了目标的 cms,就可以利用相关 bug 进行测试,进行代码审计等。
- 在指纹识别的学习过程中,有很多开源的工具和指纹库,如 fofa、WhatWeb、w11scan、WebEye。
- 在了解使用了具体框架,可以进行框架漏洞的搜索,利用工具进行扫描。
- 指纹识别对象
- CMS 信息:比如大汉 CMS、织梦、帝国 CMS、phpcms、ecshop 等;
- 前端技术:比如 HTML5、jquery、bootstrap、pure、ace 等;
- Web 服务器:比如 Apache、lighttpd, Nginx, IIS 等;
- 应用服务器:比如 Tomcat、Jboss、weblogic、websphere 等;
- 开发语言:比如 PHP、Java、Ruby、Python、C# 等;
- 操作系统信息:比如 linux、win2k8、win7、kali、centos 等;
- CDN 信息:是否使用 CDN,如 cloudflare、360cdn、365cyd、yunjiasu 等;
- WAF 信息:是否使用 waf,如 Topsec、Jiasule、Yundun 等;
- IP 及域名信息:IP 和域名注册信息、服务商信息等;
- 端口信息:有些软件或平台还会探测服务器开放的常见端口。
- 如何识别 cms
- 人工
(1)网站特有文件
如 /templets/default/style/dedecms.css—dedecms
(2)网站独有文件的 md5
如 favicon.ico,但是该文件可以被修改导致不准确。
(3)网页关键字
如 /data/sessions/index.html——dedecms
(4)Url 特征
(5)robots.txt
(6)通过版权信息进行查询
(7)通过查看网页源码的方式
(8)通过比较网站 md5 值 - 网站
(1)https://link.zhihu.com/?target=http%3A//whatweb.bugscaner.com/look/
(2)https://www.yunsee.cn/ - 工具
思想:爆破
有些 cms 的扫描器就是用这个原理的,cms 有些特定的文件。
先收集某个 cms 的某个路径的文件的 md5 值,要求这个文件一般不会被使用者修改的。然后访问这个网站同样的路径下是否存在这个文件,存在的话比较 md5 值。相同能报出 cms 类型。这个比较考验字典的能力。
(1)WhatWeb
此工具 kali 自带,使用方法:whatweb www.example.com 即可,也可以加参数 - v 显示更详细的信息。
系统及数据库
操作系统层面
- 识别操作系统
- 可以通过网站识别通过网站的手工识别方法判断:
windows 对大小写不敏感 - 根据 TTL 值判断
ping 一个网站
(1)WINDOWS 95/98 TTL:32
(2)WIN7 TTL:64
(3)UNIX TTL:255
(4)LINUX TTL:64
ps:这个方法不是特别准确 - 通过 nmap 进行扫描
nmap -O IP 地址
- 判断 windows 和 linux 的意义
区别出不同的操作系统才能对症下药、因为 windows 和 linux 的漏洞是不一样的、可能 windows 的漏洞在 windows 上就不能运用,不同的漏洞会造成不同漏洞利用的条件,有些漏洞会对操作系统造成崩溃、而有些系统只是蓝屏、或者是权限的提升。
数据库层面
- 识别数据库类型常见方法
- 常见的语言搭配的数据库
(1)组合类型 asp + access/mssql/sql server
(2)组合类型 php + mysql
(3)组合类型 aspx+mssql
(4)组合类型 jsp +mysql/oracle
(5)组合类型 Python + MongoDB - 常见的数据库默认端口号
关系型数据库
(1)mysql,3306
(2)sqlserver,1433
(3)oracle,1521
(4)psotgresql,5432
非关系型数据库
(1)MongoDB,27017
(2)Redis,6379
(3)memcached,11211
- 判断数据库类型的意义
- 数据库特点不同,漏洞利用方式不同(sql 注入的 payload)
- 数据库权限、网站权限、修改网页内容
第三方层面
- 判别方法
端口扫描
nmap -O -sV ip 地址 - 判别第三方意义
不同的第三方软件或工具存在不同的漏洞、识别到更多的信息对收集到的漏洞也就越多
CDN 相关技术
CDN 的全称是 Content Delivery Network,即内容分发网络。CDN 是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。但在安全测试过程中,若目标存在 CDN 服务,将会影响到后续的安全测试过程。
- CDN 与负载均衡
参考:https://www.talklee.com/blog/361.html - 如何判断目标存在 CDN 服务?
- 利用多节点技术进行请求返回判断
http://ping.chinaz.com/
ping 出来很多结果表明使用了 CDN
- CDN 对于安全测试有那些影响?
cdn 会隐藏服务器真实的 ip 地址,无法对目标网站的操作系统进行渗透,但 cdn 站点又可以理解为是目标站点的镜像站点(大多数都是静态 cdn 加速),拥有相同的网站架构,且 cdn 服务器可与站点服务器进行交互,因此 sql 注入,xss 等漏洞的挖掘并不受太大影响。
(CDN)绕过
- 子域名查询:
因为有些主站是做了 CDN 服务而子站是没有做 CDN 服务
- http://tools.bugscaner.com/subdomain/
- https://www.dnsgrep.cn/subdomain
- https://dnsdb.io/zh-cn/
- https://sitereport.netcraft.com/?url
- https://viewdns.info/
原理:证书透明公开日志枚举
证书透明度 (Certificate Transparency, CT) 是证书授权机构 (CA) 的一个项目,证书授权机构会将每个 SSL/TLS 证书发布到公共日志中。一个 SSL/TLS 证书通常包含域名、子域名和邮件地址, 这些也经常成为攻击者非常希望获得的有用信息。查找某个域名所属证书的最简单的方法就是使用搜索引 | 擎搜索一些公开的 CT 日志。
- 邮件服务查询:
因为邮箱大部分都是内部人在访问、而且访问的量也不是很大,一般是没有做 CDN。邮件服务查询
- 利用收到的邮件查 ip(查看源代码)
- 国外地址请求:
因为很多的企业没有在国外部署 CDN,要是用国外的地址请求、就容易找到他的真实地址。
遗留文件、扫描全网
- 挂 vpn 代理查询
- 黑暗引擎搜索:
**1. fofa:https://fofa.info/ **
详情:https://www.freebuf.com/sectool/268365.html
https://www.freebuf.com/sectool/268246.html
- SHODAN(撒旦):https://www.shodan.io/
详情:https://zhuanlan.zhihu.com/p/267202589 - 谛听:https://www.ditecting.com/
- zoomeye(钟馗之眼):https://www.zoomeye.org/about
Shodan 主要针对的是设备指纹,也就是与某些特定端口通信之后返回的 banner 信息的采集和索引。而 ZoomEye 除了设备指纹的检测,还针对某些特定服务加强了探测,比如 Web 服务的细节分析。
详情:https://blog.csdn.net/Fly_hps/article/details/79406517 - censys:https://censys.io/
- quake:https://quake.360.net/quake/#/index
详情:https://www.freebuf.com/sectool/308478.html
- 特定文件 dns 历史记录 (观察之前没有 CDN 时的地址),以量打量 (DDOS、流量耗尽攻击)
多个用户访问,将流量耗尽完,会显示出真实 ip - 扫全网工具
- w8fuckcdn
详情:https://blog.csdn.net/weixin_43977912/article/details/115575656 - zmap
zmap 是一款扫描软件,由 Durumeric 领导密歇根大学研究团队开发。这一工具能在一个小时内扫描整个公共互联网,显示近 40 亿在线设备的信息。扫描结果能显示哪些网站无法防御特定漏洞。
zmap 原理详细解剖:https://xz.aliyun.com/t/3653 - Masscan:最快的互联网 IP 端口扫描器
- fuckcdn
- 一些例子
- https://www.xueersi.com/
https://ping.chinaz.com/xueersi.com
(1)ping 检测:www.xueersi.com
(2)ping 检测:xueersi.com
解释:在部署 cdn 时,目的主要时为了避免网络拥挤,增加用户体验。当浏览器访问 xueersi.com 时,一般会自动转到 www.xueersi.com 。此时相对来说 xueersi.com 不是那么拥挤,就可能没有部署,而且考虑到资金问题。
ps:为啥会出现两个呢,应该是加入了负载均衡技术。
(3)验证获取到 ip 是否可信可以采用第三方的 ip 地址查询工具经行验证。
https://get-site-ip.com/
所以这俩 ip 是利用了负载均衡技术 - https://www.sp910.com/
同上述方法一样
可以把 www.sp910.com 换成 m.sp910.com 试一试
- 总结
经过上述方法,手动与工具不一致时,需要认为辨别一下。
社会工程学:
- 查看网站备案号,查看蛛丝马迹。比如备案号写渝,代表重庆,那么 IP 地址选择重庆的那一个会更准确。
- 查看公司地区之类信息判断。
- 将有疑惑的 ip 和域名写入 host 文件,利用 ping 命令确认 ip 匹配成功后,用浏览器访问该网站,看是否能够访问。
- 利用黑暗搜索引擎(撒旦等)。原理:比对 IP 的 ico 图标的 hash 值。 得到地区后判断
参考:https://www.cnblogs.com/gaojia-hackerone/p/15182598.html
具体流程:
(1)首先访问获取 ico 地址(查看源代码)
(2)然后利用 python2 获取其 ico 地址的 hash 信息
1 | import mmh3 |
(3)再利用黑暗引擎 shodan 进行全网追踪
1 | http.favicon.hash:(hash值) |
(4)最后通过结果访问探针真实地址
信息收集(WAF)
站点搭建
- 目录型站点
简单的理解就是主站上面存在其他的 cms 程序(一个站点多个应用功能)
例如:
学生网站的上面通过后台扫描探针发现有一个 bbs 的目录一点击发现是一个 bbs 的论坛网站如:www.xxx.com/bbs
我们把这个成为目录型网站、可以有两种找到漏洞的思路一个是主站的漏洞另外的一个是 bbs 上面的漏洞 - 端口类站点
有的站点不是使用的是默认的站点 80 而是其他的端口、可以使用 shodan 等空间搜索引擎去收集端口 - 子域名站点
现在的主流网站都是采用的这种模式且子域名和网站之间很有可能是不在同一台的服务器上面。 - 类似域名站点
有些公司由于业务的发展将原来的域名弃用、选择了其他的域名但是我们访问他的旧的域名还是能够访问、有的是二级域名的更换而有的是顶级域名的更换
可以通过他的旧的域名找到一些突破口
例如:京东的网站是 jd.com 那么他就有可能是采用了 jd.net jd.cn 等域名我们采用社工的方式去尝试获取他的相关域名信息 - 旁站,c 段站点
- 旁站:同一个服务器上面存在多个站点。
但是你要攻击的是 A 网站由于各种原因不能完成安全测试。就通过测试 B 网站进入服务器然后在攻击 A 网站最终实现目的。 - C 段:同网段不同的服务器上面存在不同的网站。
通过扫描发现与你渗透测试的是同一个网段最终拿下服务器、然后通过内网渗透的方式拿下渗透服务器。 - 旁站 /c 段查询在线网站:
(1)https://chapangzhan.com/
(2)https://www.webscan.cc/
- 搭建软件特征站点
有的网站是借助于第三方的集成搭建工具实现例如:PHPstudy、宝塔等环境这样的集成环境搭建的危害就是泄露了详细的版本信息。
(WAF)防护分析
- 什么是 WAF
安全测试的一道墙
Web 应用防护系统(也称为:网站应用级入侵防御系统。英文:Web Application Firewall,简称: WAF)。利用国际上公认的一种说法:Web 应用防火墙是通过执行一系列针对 HTTP/HTTPS 的安全策略来专门为 Web 应用提供保护的一款产品。
- 大型公司企业会有硬件类的 WAF 进行防护。
- 一般企业和个人网站会选择软件脚本类型 WAF 进行防护。
- 如何识别 WAF
- 使用工具 wafw00f
wafw00f 的缺点判断的不是特别的准确存在误报或识别不出的情况。 - 在有些网站的请求信息当中有的网站没有做安全信息上面留下了 waf 的相关信息
X-Powered-By: - 使用工具 nmap
**nmap --script=http-waf-detect www.jianshu.com **
** nmap --script==http-waf-fingerprint www.jianshu.com ** - 使用工具 sqlmap
sqlmap -u “http://www.baidu.com” --identify-waf
这个选项已经被废弃了,但是 sqlmap 仍然有识别 waf 的能力,主要是由于 identywaf 这个库。 - 使用工具 identYwaf
下载地址:参考地址:https://github.com/stamparm/identywaf
**python identYwaf.py https://www.baidu.com/ **
缺点就是:很慢很慢很慢很慢,但是结果还不错。
- 识别 wAF 对于安全测试的意义?
对于一个网站要是使用了 waf 而渗透人员没有识别直接使用工具进行扫描有可能会导致 waf 将你的 ip 地址拉入黑名单而不能访问。而识别 waf 在于有针对性行的绕过各个厂商的 waf 可能存在着不同的绕过思路
其他内容收集
- 资产信息
- 通过各种平台获取信息
- whois 备案查询
- github 监控(获取最新 cve, 查询具体的项目信息)
server 酱:http://sc.ftqq.com/3.version
GitHub 项目监控地址:https://github.com/weixiao9188/wechat_push
- 第三方应用
- 数据库信息
- 各种管理平台(weblogic、phpmyadmin)
- 各种第三方应用(git)
- 各种服务接口(存储服务、支付服务、内部服务,发现更多位置服务接口)
web/ftp/telnet/ssh/mail/mysql/mssql/oracle/rdp
- 内部信息
- 微信公众号
- 企业微信或钉钉或 qq 或微信群