Web渗透信息收集的理解总结
引言:常见的渗透Web需要收集的信息
- IP地址的信息
- 服务
- 端口
- 协议
- CDN
- 域名信息
- 邮箱
- 联系人
- 地址
- 电话
- Web应用程序常用的技术
- 前后端框架
- 服务器种类
- 数据库
- 编程语言
- 在同一台服务器上的其他网站/旁站
- DNS记录的映射ip的关系
- 目录文件、C段、子域名
一.信息收集第一步
####对于一个Web应用程序,我们应该先去了解它的web服务器,编程语言,数据库,操作系统等相关信息。
#####(一).常见的搭配有以下:
IIS+asp/aspx/php+Access/MS SQL/MySQL+Windows
tomcat+jsp/php+MYSQL/Oracle/MySQL+linux
apache/nginx+php+MySQL/Oracle+linux
#####(二).服务器控制台URL特征捕获:
1.Tomcat
网站根目录/manager/html
2.Apache
网站根目录/server-status
3.Jboss
网站根目录/jmx-console
(三)开发语言、操作系统、中间件、数据库信息收集
1.开发语言
通过部署在服务器上的网页后缀名判断
2.操作系统
通过nmap命令扫描进行判断,destip为目的主机ip地址
nmap -O destip
中间件扫描
最常用的就是用nmap命令去扫描该服务器上面的开放端口,然后去和各种中间件默认端口去匹配
扫描目的主机的目的端口,destip为目的主机,destport为目的端口
nmap -p destport destip
扫描目的主机的批量端口,destip为目的主机,num1-num2为端口序列
nmap -p num1-num2 destip
以下是常见的一些中间件的默认端口:
JBOSS-> PORT:8080
TOMCAT-> PORT:8080
WIN2003-> PORT:3389
Webshpere ->PORT:9080
数据库信息收集
这个思路和中间件匹配大致是差不多的
以下是常见的一些数据库的默认端口:
Mysql-> PORT:3306
PostgreSql-> PORT:5432
Oracle ->PORT:1521
DB2 -> 5000
MongoDB -> 27017
Redis->6379
二.查询是否有CDN
1.定义
CDN的全称是Content Delivery Network,即内容分发网络。通过在现有的internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络边缘,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。
用白话来说就是将源主机的内容存储在各地的cdn服务器上,从而缩短了用户获取服务器内容响应的时间,与此同时源站ip被cdn服务器ip所掩盖,cdn服务器只是起了缓存内容的作用,我们真正渗透的主机应该是源服务器,所以查询是否有CDN应该是我们做渗透测试前的最优先级选项,不然竹篮打水一场空
2.测试方法
(1)使用在线网站站长工具进行ping测试,返回结果有CDN提供商,独立ip地址
http://ping.chinaz.com/
(2)当然还可以通过cmd 命令ping某个ip地址来查看是否有CDN服务器
ping的b站,域名中出现cdn1的字样,可以判断是cdn服务器响应的
3.绕过技术
-
收集邮箱服务器的ip地址
在目标服务器注册页面进行注册,通过发送邮件的ip地址来捕获其服务器真实地址
-
如果该网站存在php网页,可以通过网站的phpinfo.php中的_SERVER[“SERVER_ADDR”]或SERVER_ADDR来查看真实ip
-
获取分站ip,查询子域名
此时可以利用查询二级域名尝试获得真实ip地址,比如说已经发现了www.gatsby.com存在CDN服务器,此时我们ping子域名:mail.gatsby.com、blog.gatsby.com、test.gatsby.com等等
-
用国外主机ping
因为CDN服务器大多只服务于国内用户,我们可以挂个VPN去ping被测试网站
挂VPN本质其实就是换了一台DNS服务器,这时候我们去找一台国外的DNS服务器的ip地址,用cmd命令:nslookup 待测网站地址 dns服务器ip能达到一样的效果
-
查询域名解析记录
https://viewdns.info/reverseip
- ping测试时直接采用ping xxx.com而不带www前缀
4.验证ip地址
view-source是一种协议,用于查看某个ip上部署的网页的源码
url中输入view-source:之前得到目标ip
如果目标ip为正确的,页面反馈回显的就是html源码
有一种特殊情况是我们验证其真实ip时目标ip网页拒绝访问,我们可以使用DNS反向查询
三.域名信息收集
DNS服务器域名解析:将域名和ip地址进行对应,可以在url地址中输入目的网页的域名而非具体ip地址来进行访问,再如edu、www为主机头名,分别表示教育网和万维网
1.Whois查询
Whois查询是用于查询域名的ip以及相关所有者信息的传输协议。
主要用途:用于查询域名是否已经被注册,注册该域名信息的数据库(域名持有者、域名注册人、注册人邮箱)
需要注意的是,不同域名后缀的Whois信息需要用到不同的Whois数据库查询,比如说.com和.edu使用的索引数据库是不一样。
途径有以下几种
2.备案信息查询
IPC备案查询途径有以下这几种
四.站点信息收集
1.CMS指纹识别
#####概述
CMS:即内容管理系统,已经成熟且开源的网站搭建系统
CMS能做什么?
1.个人博客
2.购物网站
3.导航网站
4.百度百科
5.企业官网
6.学校官网
CMS指纹识别:通过一些关键特征,识别出目标的CMS系统
常见的CMS
Discuz
Dedecms织梦
帝国CMS
PHPCMS
ECshop
CMS匹配
- 企业建站:MetInfo、SiteServer CMS
- 商城系统:ESshop、XpShop、HiShop
- 门户建站系统:DedeCMS(织梦)、帝国、PHPCMS
- 博客系统:Wordpress、Z-Blog
- 论坛:Discuz、PHPwind
- 百科:HDwiki
识别思路
1.通过吾爱破解版权信息
2.特定文件的MD5值
favicon.ico(favicon是Favorites Icon的缩写,代指的是一个网页标题左侧的图标)
得到小图标后将md5值解出,和开源系统的md5进行对比
3.查看网页源代码是否引用了相关系统的连接
4.敏感文件robots.txt查看
什么是robots.txt?
robots.txt是一个协议,我们可以把它理解为一个网站的"管家",它会告诉搜索引擎哪些页面可以访问,哪些页面不能访问。也可以规定哪些搜索引擎可以访问我们的网站而哪些搜索引擎不能爬取我们网站的信息等等,是网站管理者指定的"君子协议"。
得到robots.txt后送入蜘蛛程序
5.在线网站潮汐指纹识别
6.御剑指纹扫描器
####2.旁站和C段查询
1.旁站:部署在同一个服务器的不同网站
原理:看是否有不同域名解析在同一个ip上,这样能够证明它们在同一个服务器上。
目的:对旁站进行渗透,拿到旁站的webshell,提权拿到服务器的权限,最后拿下目标网站
2.C段:每个ip有ABCD段,使用点十分制表示为A.B.C.D,C段查询表示的是C相同的,然后查询D段上的1-255中的一台服务1\
在线旁站和C段扫描工具webscan
3.敏感目录信息扫描
针对目标web目录结构和敏感隐藏文件探测是很重要的,在探测过程中可以扫描到后台页面、上传页面、数据库文件,甚至是网站源代码文件。
有常见的以下利用敏感目录进行信息扫描
1.利用弱口令爆破进入后台,得到后台目录文件
2.获取数据库连接信息,网站源码压缩备份
3,PHPinfo暴露所有配置信息
4.编辑器:fck、ke
常见的探测工具包括:
1.御剑后台扫描
2.dirbuster
3.wwwscan命令行工具
扫描工具介绍
御剑
这个工具操作很简单,但是扫描速度…一言难尽
dirbuster
支持多种扫描方式:1.网页爬虫 2.字典暴扫 3.纯暴扫
采用内置字典,然后用url模糊匹配,速度还是很快的!我愿称其为最强
4.端口信息收集
这学期刚学了计网,端口是用来搭载相关进程服务的。如果说我们的服务器是一座山上的寺庙话,端口就是用来各条进入寺庙的山路
常见的端口如下所示:
80 HTTP服务器,默认端口号为80/tcp(木马Executor开放此端口)
443 HTTPS(securely transferring web pages)服务器,默认端口号为443/tcp 443/udp
80/8080/3128/8081/9098 HTTP协议代理服务器常用端口号:80/8080/3128/8081/9098
1080 SOCKS代理协议服务器常用端口号:1080
21 FTP(文件传输)协议代理服务器常用端口号:21
23 Telnet(远程登录)协议代理服务器常用端口号:23
23 Telnet(不安全的文本传送),默认端口号为23/tcp(木马Tiny Telnet Server所开放的端口)
21 FTP,默认的端口号为21/tcp(木马Doly Trojan、Fore、Invisible FTP、WebEx、WinCrash和Blade Runner所开放的端口)
69 TFTP(Trivial File Transfer Protocol),默认端口号为69/udp
22 SFTP、SSH(安全登录)、SCP(文件传输)、端口号重定向,默认的端口号为22/tcp
25 SMTP Simple Mail Transfer Protocol(E-mail),默认端口号为25/tcp(木马Antigen、Email Password Sender、Haebu Coceda、Shtrilitz Stealth、WinPC、WinSpy都开放这个端口)
110 POP3 Post Office Protocol(E-mail),默认端口号为110/tcp
7001 weblogic的默认端口是7001
9080 Webshpere应用程序,默认端口号为9080
9090 webshpere管理工具,默认端口号9090
8080 JBOSS,默认端口号为8080
8080 TOMCAT,默认端口号为8080
3389 WIN2003远程登录,默认端口号为3389
8081 Symantec AV/Filter for MSE,默认端口号为 8081
1521 Oracle 数据库,默认的端口号为1521
1158 ORACLE EMCTL,默认的端口号为1158
8080 Oracle XDB(XML 数据库),默认的端口号为8080
2100 Oracle XDB FTP服务,默认的端口号为2100
1433 SqlServer数据库server,默认的端口号为1433/tcp 1433/udp
1434 SqlServer数据库monitor,默认的端口号为1434/tcp 1434/udp
3306 mySql 默认的端口号为3306
9092 pointbase 默认的端口号为9092
27017 mongodb 默认的端口号为27017
6379 redis 默认的端口号为6379
11211 memcached 默认的端口号为11211
端口扫描
在Windows命令中使用:netstat -ano | netstat -anbo
来进行端口服务查询
也可以使用工具来进行,其工作原理都是使用TCP或UDP等协议向目标端口发送指定标志位等数据包,等待目标返回数据包,以此来判断该ip下端口状态。
-
NMAP命令:nmap -A -v -T4 目标ip
-
masscan命令:masscan -p80 目标ip
使用扫描工具会被记录ip,此时可以使用站长在线扫描工具来进行扫描,缺点是每次只能扫描一个端口
五.敏感信息收集
1.google语法:YYDS!
site: 指定搜索域名 site: baidu.com
inurl: 指定url中的关键字搜寻 inurl:.php admin
intext: 指定网页内容中关键字搜寻 intext:网站初始面貌
filetype: 指定搜索文件类型 filetype:xls
intitle: 指定网页标题所含关键字 intitle:后台
link: 指定网页连接
info: 指定网页信息
一个大家应该都爆过数据的小实例,在bing搜索引擎中开搞!
site: edu.cn filetype: xls 身份证
inurl: admin.php
2.HTTP响应头信息
通过HTTP或HTTPS与目标站点进行通信中,目标响应的报文中Server头和X-Powered-By头会暴露目标服务器和使用的编程语言信息,通过这些信息可以有针对的利用漏洞尝试。
方法:可以采用burpsuite代理工具查看response数据包
3.GitHub信息泄露
Github是一个分布式的版本控制系统,程序员在进行业务开发时会动态更新GitHub上面的项目,随着越来越多的应用程序转移到云端,Github已经成为了管理软件开发以及发现已有代码的首选方法.
再如,通过Github获取数据库泄露信息。
site:Github.com sa password
site:Github.com root password
site:Github.com User ID='sa’
通过Github探索SVN信息泄露信息。
site:Github.com svn
site:Github.com svn username
通过Github搜索综合泄露信息。
site:Github.com password
site:Github.com ftp ftppassword
site:Github.com 密码
site:Github.com 内部