CMS渗透策略
关于cms,译名是“内容管理系统”,来有效解决用户网站建设与信息发布中常见的问题和需求。对网站内容管理是该软件的最大优势,它流程完善、功能丰富,可把稿件分门别类并授权给合法用户编辑管理,而不需要用户去理会那些难懂的SQL语法。
扫描目录:是否有敏感文件,站长是否对站点有误操作(网站备份的压缩文件,说明文件)
审查元素:上传文件在前端屏蔽还是在后端屏蔽
判断是何种CMS,寻找此CMS的漏洞,如果开源,还能下载相对应的源码进行代码审计。
论坛 discuz 简称dz
博客 WordPress
企业网站 metinfo
渗透流程
获得授权证书
信息收集:
- 获取whois信息,域名注册者的信息(丢到社工库)。
- 网站指纹识别(cms,cdn,证书等),dns记录。
- 子域名收集,获取查询服务器的旁站,C段。
- 服务器的相关信息(真实ip,系统类型,版本,开放端口,WAF等)可能有web服务器中间件漏洞,目录遍历。
- 扫描网站目录结构,敏感文件泄露。
- IP地址扫描(对于响应的端口漏洞探测)
方法:PHP探针,Google Hack
漏洞扫描(挖掘):SQL,XSS,文件上传,包含,任意文件读取,XSRF,越权访问,弱口令,代码执行,命令注入执行,漏洞利用获取webshell,继续提权
提权:
mysql提权,oracle提权
windows 溢出提权
linux脏牛,内核漏洞提权,find提权等
日志清理
总结报告,修复方案
网站指纹:
网站指纹是Web 服务组件在开发时留下的类型、版本等标记信息,包括Web 服务器指纹、Web 运用指纹及前端框架指纹等。 除了用Nmap 扫描端口和服务的方法,我们还可以通过前端网页和返回一些HTTP 头信息来判断网站使用的哪些开发框架、服务器、系统。
信息收集
域名信息收集
获取域名的注册信息,包括该域名的DNS服务器信息、子域信息和注册人的联系信息等信息。
whois查询:
Whois站长之家查询:http://whois.chinaz.com/
阿里云中国万网查询:https://whois.aliyun.com/
全球Whois查询:https://www.whois365.com/cn/
使用kali中的whois工具查询
备案信息查询
ICP/IP地址/域名信息备案管理系统:http://beian.miit.gov.cn/publish/query/indexFirst.action
ICP备案查询网:http://www.beianbeian.com/
子域名信息收集
子域名(Subdomain)是在域名系统等级中,属于更高一层域的域。比如,mail.example.com和calendar.example.com是example.com的两个子域,而example.com则是顶级域.com的子域。
子域名枚举可以在测试范围内发现更多的域或子域,这将增大漏洞发现的几率。有些隐藏的、被忽略的子域上运行的应用程序可能帮助我们发现重大漏洞。
利用搜索引擎查询
使用“site:baidu.com”语法
利用在线工具查询
- DNSdumpster:https://dnsdumpster.com/
- virustotal:www.virustotal.com
- 子域名爆破:https://phpinfo.me/domain/
- whois反查:http://whois.chinaz.com/
kali上的工具
站点信息收集
CMS指纹识别
常见的CMS有Dedecms(织梦)、Discuz、PHPWEB、PHPWind、PHPCMS、ECShop、Dvbbs、SiteWeaver、ASPCMS、帝国、Z-Blog、WordPress等。
在线识别
- BugScaner: http://whatweb.bugscaner.com/look/
- 潮汐指纹:http://finger.tidesec.net/
- 云悉:http://www.yunsee.cn/info.html
- WhatWeb: https://whatweb.net/
常见的CMS指纹识别工具有WhatWeb、WebRobo、椰树、御剑Web指纹识别。大禹CMS识别程序等,可以快速识别一些主流CMS。
手工识别
- 根据HTTP响应头判断,重点关注X-Powered-By、cookie等字段
- 根据HTML 特征,重点关注 body、title、meta等标签的内容和属性。
- 根据特殊的class判断。HTML 中存在特定 class 属性的某些 div 标签,如
<body class="ke-content">
敏感目录/文件收集
扫描获取网站的后台管理页面、文件上传界面、robots.txt,甚至可能扫描出备份文件从而得到网站的源代码。
常见扫描工具
- wwwscan
- 御剑后台扫描工具
Waf识别
wafw00f是一个Web应用防火墙(WAF)指纹识别的工具。
下载地址:https://github.com/EnableSecurity/wafw00f,kali内置。
敏感信息收集
使用Google
查找网站后台
- intext:后台登录:将只返回正文中包含“后台登录”的网页
- intitle:后台登录:将只返回标题中包含“后台登录”的网页
查找指定网站后台
- site:xx.com intext:管理
- site:xx.com inurl:login
- site:xx.com intitle:后台
查看指定网站的文件上传漏洞
- site:xx.com inurl:file
- site:xx.com inurl:load
查找后台数据库管理页面
inurl:/phpmyadmin/index.php
查找管理员登录页
inurl:/admin/login.php
谷歌搜索引擎的一些语法:
intext:寻找正文中含有关键字的网页
intitle:寻找标题中含有关键字的网页
allintitle:用法和intitle类似,只不过可以指定多个词
inurl:搜索url中含有关键词的网页
allinurl:用法和inurl类似,只不过可以指定多个词
site:指定访问的站点
filetype:指定访问的文件类型
link:指定链接的网页
related:搜索相似类型的网页
info:返回站点的指定信息,例如:info:www.baidu.com 将返回百度的一些信息
phonebook:电话簿查询美国街道地址和电话号码信息
Index of:利用 Index of 语法可以发现允许目录浏览的web网站,就像在本地的普通目录一样
备份文件泄露
- intitle:index.of index.php.bak
- inurl:index.php.bak
- intitle:index.of www.zip
查找sql注入
- inurl:?id=1
- inurl: php?id=
GHDB 谷歌黑客数据库
链接:https://www.exploit-db.com/google-hacking-database/。汇集着各种已经被优化的查询语句的数据库,每天都在不断地更新各种好用有效的Google查询语句。
Github信息泄露
开发人员在开发时,常常会先把源码提交到github,最后再从远程托管网站把源码pull到服务器的web目录下,如果忘记把.git文件删除,就造成此漏洞。
.git
的隐藏文件夹(版本库)这个文件夹里面保存了这个仓库的所有版本等一系列信息
利用方法:
GitHack是一个.git泄露利用脚本,通过泄露的.git文件夹下的文件,还原重建工程源代码。
脚本的工作原理:
解析.git/index文件,找到工程中所有的: ( 文件名,文件sha1 )
去.git/objects/ 文件夹下下载对应的文件**
使用zlib解压文件,按原始的目录结构写入源代码
还可以爬虫爬取整个git目录,可以跟踪到git的每一次提交。
修复方法:
- 对.git目录的访问权限进行控制
- 在每次pull到web目录下之后删除.git文件夹
例如:数据库信息泄露:
site:Github.com sa password
site:Github.com root password
.htacess文件:
.htaccess叫分布式配置文件,它提供了针对目录改变配置的方法——在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。
.htaccess文件的主要功能包括使用密码保护文件夹,禁止或允许用户使用IP地址访问,禁止目录浏览,将用户自动重定向到另一个页面或目录,创建和使用自定义错误页面,改变具有特定扩展名的文件的使用方式,或者通过指定文件扩展名或特定文件作为主页。简而言之,这是一套包含在您的网络服务器上的规则。
利用.htaccess做网站跳转。
Web服务器指纹识别
Web服务器指纹识别主要识别以下信息:
1、Web服务器名称,版本
2、Web服务器后端是否有应用服务器
3、数据库(DBMS)是否部署在同一主机(host),数据库类型
4、Web应用使用的编程语言
5、Web应用框架
手工检测
- HTTP头分析
即查看HTTP响应头中的Server、X-Powered-By、Cookie 等字段,这也是最基本的方法。
- 协议行为
即从HTTP头字段顺序分析,观察HTTP响应头的组织顺序,因为每个服务器都有一个内部的HTTP头排序方法。
- 浏览并观察网站
我们可以观察网站某些位置的HTML源码(特殊的class名称)及其注释(comment)部分,可能暴露有价值信息。观察网站页面后缀可以判断Web应用使用的编程语言和框架。
- 刻意构造错误
错误页面可以给你提供关于服务器的大量信息。可以通过构造含有随机字符串的URL,并访问它来尝试得到404页面。
利用工具识别:whatweb
使用说明:
- 常规扫描:
whatweb 域名/ip地址
- 批量扫描:
指定要扫描的文件
whatweb -i 含有需要扫描的域名的文件的路径
- 详细回显扫描:
whatweb -v 域名
真实IP地址识别
在渗透测试中,一般只会给你一个域名,那么我们就要根据这个域名来确定目标服务器的真实IP,我们可以通过像www.ip138.com这样的IP查询网直接获取目标的一些IP及域名信息,但这里的前提是目标服务器没有使用CDN。
CDN判别
设置代理或者通过在线ping网站来在不同地区进行ping测试,然后对比每个地区ping出的IP结果,查看这些IP是否一致,一致,则极有可能不存在CDN。
有以下网站可以进行ping测试:
绕过CDN找到目标真实IP
- 利用子域名。一般来说很多站长可能只会对主站或者流量较大的分站使用CDN
- 查询主域,把目标网站的www去掉,ping一下看ip是不是变了
- 扫描网站敏感文件,如phpinfo.php等,从而找到目标的真实IP。
- 从国外访问。国内很多CDN厂商因为各种原因只做了国内的线路,而针对国外的线路可能几乎没有,此时我们使用国外的主机直接访问可能就能获取到真实I
- 通过邮件服务器。一般的邮件系统都在内部,没有经过CDN的解析,通过目标网站用户注册或者RSS订阅功能,查看邮件,寻找邮件头中的邮件服务器域名IP,ping这个邮件服务器的域名IP。
- 查看域名历史解析记录。也许目标很久之前没有使用CDN,所以可能会存在使用 CDN 前的记录。所以可以通过https://www.netcraft.com、https://viewdns.info/等网站来观察域名的IP历史记录。
- 让目标主动连接我们:利用网站漏洞。比如有代码执行漏洞、SSRF、存储型的XSS都可以让服务器主动访问我们预设的web服务器,那么就能在日志里面看见目标网站服务器的真实IP。
端口信息收集
- 使用masscan探测端口开放信息
- 使用nmap工具收集