(学习记录web渗透实战)
0.信息收集对象
服务器的配置信息和网站的敏感信息。包括:
域名,子域名,目标网站系统,CMS指纹,网站真实IP,开放的端口
1.域名信息的收集
在知道目标域名的情况下,我们首先需要收集的是域名的注册信息。包括不限于DNS服务器信息和注册人的联系信息等。
1.1 Whois查询
Whois是一个数据库,记录着是否已经注册,及注册的详细信息。得到注册人联系电话和邮箱等有时候对社工和密码字典爆破很有作用。一般情况下,域名所有者是管理员。
whois在kali中已默认安装,运行命令
whois 域名 (不用加www.)例: whois XXX.com
也可以在一些网站进行查询
https://whois.aizhan.comhttp://whois.chinaz.comhttps://www.virustotal.com(注:靠谱的查询网站可能要科学冲浪,以及付费)
1.2 备案信息查询
国家规定,搭建在国内的网站必须要进行备案,国外的则不用,此信息收集主要针对国内的网站。大部分还是通过网站查询
http://www.beianbeian.com(已经不能用了)http://www.tianyancha.com
2.收集敏感信息
此方法要能科学上网,且能登录Google搜索界面。利用谷歌的强大的搜索能力能进行一些敏感的信息收集,常用的关键字信息。
| 关键字 | 说明 |
|---|---|
| site | 指定域名 |
| inurl | URL中存在关键字的网页 |
| intext | 网页正文中的关键字 |
| filetype | 指定文件类型 |
| intitle | 网页标题中的关键字 |
| link | link:xx.com 表示返回所有和xx.com 做了连接的URL |
| info | 查找指定站点的一些基本信息 |
| cache | 搜索Google里关于某些内容的缓存 |
site:edu.cn 指定搜索后缀名为edu.cn的域名
例子:site:edu.cn intext:后台管理,就可以搜索域名edu.cn中的后台管理系统 。
合理的运用搜索引擎能获得意想不到的情况,可以收集数据库文件。SQL注入,配置信息·,源代码泄露,未授权访问,和robots.txt等敏感信息。
另外可以用Burp Suite的Repeater进行信息收集,可以得到一些服务器信息,如运行的server类型及版本,PHP版本的信息等。针对不同类型的server可以进行漏洞测试。还可以在Github进行信息泄露的查询:数据库连接信息,邮箱密码,uc-key,阿里的osskey,甚至可以找到源代码。
3.子域名的收集
子域名也就是二级域名,是只顶级域名之下的域名。如果目标网络过大,从主域入手显然是不太明智的。想办法从子域名迂回到目标也是一个不错的选择。
3.1 子域名的检测工具
Layer子域名挖掘机,K8,wydomain,sublist3r,dnsmaper,subDomainsBrute,Maltego CE等。工具具体下载请自行搜索。
3.2 搜索引擎枚举
可以利用site:xxx.com,进行子域名枚举
3.3 第三方聚合应用枚举
就是通过第三方查询其子域名。比如通过
https://dnsdumpster.com
进行查询潜在的子域名。
3.4 证书公开透明度公开日志枚举
证书透明度(CT)是证书授权机构(CA)的一个项目,CA会将每个SSL/TLS证书发布到公共日志中。一个SSL/TLS证书包含域名,子域名,邮件地址。查找CT日志的网站有
https://crt.shhttps://censys.iohttps://phpinfo.me/domain(子域名爆破网站)http://dns.aizhan.com(IP反查绑定域名网站)
4.收集端口信息
端口就是不同计算机提供不同的交互服务,在渗透测试中,对端口的信息收集十分重要。我们需要关注的是默认端口和在端口运行上的服务。常见扫描工具有Nmap,Zmap,和御剑高速TCP端口扫描工具。
4.1 文件共享服务端口有
| 端口号 | 端口说明 | 攻击方向 |
|---|---|---|
| 21/22/69 | FTP/TFTP文件传输服务 | 允许匿名的上传,下载,爆破和嗅探操作 |
| 2049 | NFS服务 | 配置不当 |
| 139 | Samba服务 | 爆破,未授权的访问,远程代码执行 |
| 389 | Ldap目录访问协议 | 注入,允许匿名访问,弱口令 |
4.2 远程服务连接的端口有
| 端口号 | 端口说明 | 攻击方向 |
|---|---|---|
| 22 | SSH远程连接 | 爆破,SSH隧道以及内网代理转发,文件传输 |
| 23 | Telent远程连接 | 爆破,嗅探,弱口令 |
| 3389 | Rdp远程连接 | Shift后门(windows server 2003以下版本系统),爆破 |
| 5900 | VNC | 弱口令爆破 |
| 5632 | PyAnywhere服务 | 抓密码,代码执行 |
4.3 Web应用服务端口
| 端口号 | 端口说明 | 攻击方向 |
|---|---|---|
| 80/443/8080 | 常见的Web服务 | Web攻击,爆破,对服务器版本漏洞 |
| 7001/7002 | WebLogic控制台 | Java反序列化,弱口令 |
| 8080/8089 | Jboss/Resin/Jetty/Jenkins | 反序列化,控制台弱口令 |
| 9090 | WebSphere控制台 | Java反序列化,弱口令 |
| 4848 | Glassfish控制台 | 弱口令 |
| 1352 | Lotus domino邮件服务 | 弱口令,信息泄露,爆破 |
| 10000 | Webmin-Web控制面板 | 弱口令 |
4.4 数据库服务端口
| 端口号 | 端口说明 | 攻击方向 |
|---|---|---|
| 3306 | MySQL | 注入,提权,爆破 |
| 1433 | MSSQL数据库 | 注入,提权,SA弱口令,爆破 |
| 1521 | Orecle数据库 | TNS爆破,注入,反弹SHell |
| 5432 | PostgreSQL数据库 | 爆破,注入,弱口令 |
| 27017/27018 | MongoDB | 爆破,未授权访问 |
| 6379 | Redis数据库 | 可尝试未授权访问,弱口令爆破 |
| 5000 | SysBase/DB2数据库 | 爆破,注入 |
4.5 邮件服务端口
| 端口号 | 端口说明 | 攻击方向 |
|---|---|---|
| 25 | SMTP邮件服务 | 邮件伪造 |
| 110 | POP3协议 | 爆破,嗅探 |
| 143 | IMAP协议 | 爆破 |
4.6 网络常见协议端口
| 端口号 | 端口说明 | 攻击方向 |
|---|---|---|
| 53 | DNS域名服务 | 允许区域传送,DNS劫持,缓存投毒,欺骗 |
| 67/68 | DHCP服务 | 劫持,欺骗 |
| 161 | SNMP协议 | 爆破,搜集目标内网信息 |
特殊服务端口
| 端口号 | 端口说明 | 攻击方向 |
|---|---|---|
| 2181 | Zookeeper服务 | 未授权访问 |
| 8069 | Zabbix服务 | 远程执行,SQL注入 |
| 9200/9300 | Elasticsearch服务 | 远程执行 |
| 11211 | Memcache服务 | 未授权访问 |
| 512/513/514 | Linux Rexec服务 | 爆破,Rlogin登录 |
| 873 | Rsync服务 | 匿名访问,文件上传 |
| 3690 | Svn服务 | Svn泄露,未授权访问 |
| 50000 | SAP Management Cansole |
远程执行 |
5.指纹识别
生物指纹由于终身不变性,唯一性和方便性,几乎已经成为生物特征的代名词。而我们在计算机中所说的指纹指的是网站CMS指纹识别,计算机操作系统及Web容器的指纹识别等。
应用程序一般在html,js,css等文件中多多少少会包含一些特征代码,比如WordPress在robots.txt中包含wp-admin,首页index.php中包含generator=wordpress 3.xx,这个特征就是这个CMS的指纹,那么碰到其他网站时候,存在此特征,就可以快速识别该CMS,所以叫做指纹识别。指纹识别是相当必要的,只有识别响应的CMS和Web容器,才能找到相关的的漏洞,然后才能进行相应的渗透操作。
CMS(Content Mangement System)称整站系统或者文章系统。以前网站内容管理,基本靠手工进行管理,在信息爆炸的如今,手工显然已经不能满足人们的需求。所以出现了CMS,开发者只需要给客户一个软件包,客户自己安装配置好,就可以维护管理网站。
常见的CMS有Dedecms(织梦),Discus,PHPWEB,PHPWind,PHPCMS,ECshop,Dvbbs,SiteWeaver,ASPCMS,帝国,Z-Blog,WordPress等。
常用代表指纹识别工具有:御剑Web指纹识别,WhatWeb,WebRobo,椰树,轻量Web指纹识别等。
在线网站查询CMS指纹识别有
http://whatweb.bugscaner.com/look/ (BugScaner)http://www.yunsee.cn/finger.html (云悉指纹识别)https://whatweb.net/ (WhatWeb)
6.查找真实IP
在渗透测试中,目标往往只有一个域名,如何通过这个域名来确定目标服务器的真实IP是十分重要的。如果目标服务器不存在CDN,可以直接通过www.ip138.com获取目标的IP和一些其他信息。
6.1 目标服务器存在CDN
CDN即内容分发网络,主要解决因传输距离和不同运营商节点造成的网络速度性能低下的问题。简单点说,就是目标把资源缓存在节点服务器上,用户访问资源时,直接从近的节点服务器响应给用户。所以当目标购买了CDN服务时,我们ping域名得到的是最近节点服务器的IP。
6.2 判断目标服务器是否使用了CDN
通常ping目标服务器,观察域名的情况,以此来判断是否使用了CDN

可以看到ping命令下的域名www.a.shifen.com与我们ping的域名www.baidu.com不同,则其使用了CDN。
还可以利用在线网站进行全国多地ping服务(https://www.17ce.com)
或者我们在ping目标域名时,我们ping的包被防火墙过滤,则极大可能是域名转换的IP就是真实IP
6.3 绕过CDN寻找真实的IP
在确认了CDN后,就需要绕过CDN找寻真实的目标IP常用方法有:
内部邮箱源:
一般的邮件系统都在内部,没有经过CDN解析,通过目标网站用户注册或者RSS订阅功能,查看邮件,寻找邮件头中邮件服务器的IP,ping这个邮件服务器的域名,就可以获得真实IP(必须是自己的邮件服务器,第三方邮件服务器不可行)
扫描网站测试文件:
如扫描phpinfo,test等,从而找到真实IP
分站域名
很多主站访问量大,所以一般情况都会挂CDN,但分站可能没有挂CDN,可以通过ping二级域名,获取分站的IP可能会出现分站和主站都在同一个C段的情况从而得到真实IP。
国外访问
CDN一般只对国内加速,而国外的CDN就不一定了。因此通过在线代理网站访问可能会得到目标IP(https://asm.ca.com/en/ping.php)。
查询域名解析记录
也许目标以前没有用过CDN可以通过网站(https://www.netcraft.com/)来观察IP的历史记录,也可以大致分析IP所在的段
相关产品
如果目标有自己的app可以尝试用Fiddler或者Burp Suite抓取App请求来确定目标真实IP。
绕过CloudFlare CDN
在确定了目标使用了CDN后,可以尝试用网站对目标进行IP查询(http://www.crimeflare.us/cfs.html#box)。
6.4 验证获取的IP
最简单的方法就是直接访问获取的IP,看看响应页面和域名访问是否一样。或者在目标段比较大的情况下,借助工具Masscan扫描段中开启了80,443,8080端口的IP,观察得到的IP是否为所需的IP。
7.收集敏感目录
探测Web目录结构和隐藏敏感文件是渗透测试中必不可少的一个环节。从可以获取的后台管理页面,文件上传页面,甚至可能扫描出网站的源代码。
针对目录扫描的工具有御剑后台扫描珍藏版,wwwscan,Dirbuster,Spinder.py,Sensitivefilescan,Weakfilescan,等工具。以及网站(www.webscan.cc)
8.社会工程学
具体运用靠自己咯。数据查询看社工库咯。
