一.了解web结构
1:网站是安装在电脑上的应用程序,它有操作系统,应用程序和服务器例如wamp包含的 web服务器:Apache 数据库:MySQL 编程语言:php
2:网站的访问:用户通过url访问,dns服务器将域名解析为ip地址,ip地址访问服务器内容(数据库,服务器,应用程序),最终将结果反馈到用户的浏览器上。数据库包括要调用的数据,并存储在Web服务器上,这台服务器有真实的IP地址,每个人都能访问、Ping通它。每次页面请求或运行程序时,Web应用程序会在服务器上执行,而不是在客户的机器上。
3:如何入侵一个网站:入侵安装在计算机上的应用程序称为Web应用渗透测试,入侵带操作系统的计算机和应用程序称为服务端攻击,入侵人称为社会工程学攻击。拿到一个网站,明确到渗透目标,不要拿到目标就开始使用各种工具,而是应尽可能多的去获取该网站的信息,收集到的信息越多,越容易找到漏洞。
主动信息收集:通过直接访问、扫描网站,这种流量将流经网站
被动信息收集:利用第三方的服务对目标进行访问了解,如Google搜索、Shodan搜索等
4:常见的信息收集:
ip地址信息:服务,端口,协议,cdn
域名信息:邮箱,联系人,地址,电脑
技术使用:框架,服务器,数据库,编程语言
在同一台服务器的其他网站\旁站
DNS记录
文件,子域,C段,目录
二.域名信息收集
1:域名查询
域名系统:DNS(domain name system)是互联网的一项服务,它作为一个将域名和ip地址相互映射的分布式数据库。将域名转换为ip地址的系统。
域名解析:举一个例子,eastmount.org作为一个域名就和IP地址198.35.26.96相对应。DNS就像是一个自动的电话号码簿,我们可以直接拨打198.35.26.96的名字eastmount.org来代替电话号码(IP地址)。DNS在我们直接调用网站的名字以后就会将像eastmount.org一样便于人类使用的名字转化成像198.35.26.96一样便于机器识别的IP地址。再如51cto.com域名,edu.51cto.com和www.51cto.com是该域名对应的子域名,而edu(教育网)和www(万维网)是对应的主机名。
2:whois查询
Whois是用来查询域名的IP以及所有者等信息的传输协议。简单说,Whois就是一个用来查询域名是否已经被注册,以及注册域名信息的数据库(如域名所有人、域名注册商、注册商邮箱等)。不同的域名后缀需要到不同的whois数据库查询。
Whois协议基本内容是:先向服务器的TCP端口43建立一个连接,发送查询关键字并加上回车换行,然后接收服务器的查询结果。
通过Whois查询可以获得域名注册者邮箱地址等信息,一般情况下对于中小型网站域名注册者就是网站管理员,利用搜索引擎对Whois查询到的信息进行搜索,获取更多域名注册者的个人信息。
whois查询方法:
(1)web接口查询:
常见的信息收集网站包括:
- Whois站长之家:http://whois.chinaz.com/
- 微步在线:https://x.threatbook.cn/
- 阿里云中国万网:https://whois.aliyun.com/
- Whois Lookup查找目标网站所有者信息:http://whois.domaintools.com/
- Netcraft Site Report显示目标网站使用的技术:http://toolbar.netcraft.com/site_report?url=
- Robtex DNS查询显示关于目标网站的全面的DNS信息:https://www.robtex.com/
- 全球Whois查询:https://www.whois365.com/cn/
- 站长工具爱站查询:https://whois.aizhan.com/
- 爱站网ping检测\IP反查域:https://dns.aizhan.com/
- DNS服务器解析:http://tool.chinaz.com/nslookup
- 多地ping 检查dns是否存在:http://ping.chinaz.com/ping.chinaz.com
- 同ip查旁站:http://s.tool.chinaz.com/same
通过不同的查询系统,收集到的信息不同,尽可能收集到多的信息为后面的渗透做准备。
3.备案信息查询
ICP备案是指网络内容提供商(Internet Content Provider),《互联网信息服务管理办法》指出需要对网站进行备案,未取得许可不得从事互联网信息服务。
ICP查询网站:
- https://www.beian88.com/
- http://beian.miit.gov.cn/publish/query/indexFirst.action
- https://www.tianyancha.com/
- http://www.beianbeian.com/
三.web站点信息收集
1.cms指纹识别
在渗透测试中,对目标服务器进行指纹识别是相当有必要的,因为只有识别出相应的Web容器或者CMS(内容管理系统),才能查找与其相关的漏洞,然后才能进行相应的渗透操作。CMS又称整站系统。常见的CMS有:WordPress、Dedecms(织梦)、Discuz、PhpWeb、PhpWind、Dvbbs、PhpCMS、ECShop、、SiteWeaver、AspCMS、帝国、Z-Blog等。
CMS又称为整站系统或文章系统,用于网站内容管理。用户只需要下载对应的CMS软件包,就能部署搭建,并直接利用CMS。但是各种CMS都具有其独特的结构命名规则和特定的文件内容,因此可以利用这些内容来获取CMS站点的具体软件CMS与版本。
(1):在线识别
- BugScaner:http://whatweb.bugscaner.com/look/
- 云悉指纹:http://www.yunsee.cn/finger.html
- WhatWeb:https://whatweb.net/
- BGP:he.bgp.net
(2):本地工具
- 御剑Web指纹识别程序
- 大禹CMS识别程序(https://github.com/Ms0x0/Dayu)
2.cms漏洞查询
对于查询到的cms,可以到漏洞平台搜索该cms的漏洞
3.敏感目录信息
针对目标Web目录结构和敏感隐藏文件探测是非常重要的,在探测过程中很可能会探测到后台页面、上传页面、数据库文件,甚至是网站源代码文件等。补充谢公子大佬的内容,扫描网站目录结构可以看看是否可以遍历目录,或者敏感文件泄漏,包括:
- 后台目录:弱口令,万能密码,爆破
- 安装包:获取数据库信息,甚至是网站源码
- 上传目录:截断、上传图片马等
- mysql管理接口:弱口令、爆破,万能密码,然后脱裤,甚至是拿到shell
- 安装页面 :可以二次安装进而绕过
- phpinfo:会把你配置的各种信息暴露出来
- 编辑器:fck、ke等
- iis短文件利用:条件比较苛刻 windows、apache等
常见的探测工具包括:
- 御剑后台扫描工具
- wwwscan命令行工具
- dirb命令工具
- dirbuster扫描工具
- dirmap扫描工具
- dirsearch扫描工具
文件robots.txt
同时,提到网站敏感目录我们就不得不提robots.txt文件。robots.txt文件是专门针对搜索引擎机器人robot 编写的一个纯文本文件。我们可以在这个文件中指定网站中不想被robot访问的目录。从而让我们网站的部分或全部内容不被搜索引擎收录,或者让搜索引擎只收录指定的内容。
因此可以利用robots.txt让Google的机器人访问不了我们网站上的重要文件,Google Hack的威胁也就不存在了。假如编写的robots.txt文件内容如下,其中“Disallow”参数后面的是禁止robot收录部分的路径,例如我们要让robot禁止收录网站目录下的“data”文件夹,只需要在Disallow参数后面加上 /data/ 即可。如果想增加其他目录,只需按此格式继续添加。文件编写完成后将其上传到网站的根目录,就可以让网站远离Google Hack。
然而,虽然robots文件目的是让搜索蜘蛛不爬取想要保护的页面,但是如果我们知道了robots文件的内容的话,我们就可以知道目标网站哪些文件夹不让访问,从侧面说明这些文件夹是很重要。
4.WordPress测试
WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架构属于自己的网站,也可以把WordPress当作一个内容管理系统CMS来使用。针对WordPress测试,可以使用WpScan工具对其进行安全测试。
四.端口信息收集
1:端口
如果把IP地址比作一间房子,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口可以有65536(2^16)个门之多。端口是通过端口号来标记的,端口号只有整数,范围从0到65536(2^16-1 )。
计算机常见的端口号包括:
- HTTP服务器默认端口号为:80/tcp(木马Executor开放此端口)
- HTTPS服务器默认端口号为:443/tcp、443/udp
- Telnet(远程登录)默认端口号为:23/tcp(木马Tiny Telnet Server所开放的端口)
- FTP默认端口号为:21/tcp(木马Doly Trojan、Fore、Invisible FTP、WebEx、WinCrash等所开放的端口)
- TFTP(Trivial File Transfer Protocol)默认端口号为:69/udp
- SSH(安全登录)、SCP(文件传输)、端口号重定向,默认端口号为:22/tcp
- SMTP(E-mail)默认端口号为:25/tcp(木马Antigen、Email Password Sender、Haebu Coceda、Shtrilitz Stealth、WinPC、WinSpy都开放这个端口)
- POP3 Post Office Protocol(E-mail)默认端口号为:110/tcp
- Webshpere应用程序默认端口号为:9080
- TOMCAT默认端口号为:8080
- MySQL数据库默认端口号为:3306
- Oracle 数据库默认的端口号为:1521
- WIN2003远程登录默认端口号为:3389
- MS SQL*SERVER数据库server默认的端口号为:1433/tcp、1433/udp
对于收集目标及其端口状况可以使用工具来进行,其工作原理都是使用TCP或UDP等协议向目标端口发送指定标志位等数据包,等待目标返回数据包,以此来判断端口状态。后续作者,准备通过Python编写相关的代码。
这篇文章主要通过工具采集端口信息,包括:
- 使用Nmap采集,命令为:nmap -A -v -T4 目标
- 使用masscan采集,命令为:masscan -p80 目标
2:旁站和C段
旁站指的是同一服务器上的其他网站,很多时候,有些网站可能不是那么容易入侵。那么,可以查看该网站所在的服务器上是否还有其他网站。如果有其他网站的话,可以先拿下其他网站的webshell,然后再提权拿到服务器的权限,最后就自然可以拿下该网站了!
对于红蓝对抗和护网,C段扫描比较有意义。对于单独网站的渗透测试,C段扫描意义不大。C段指的是同一内网段内的其他服务器,每个IP有ABCD四个段,举个例子,192.168.0.1,A段就是192,B段是168,C段是0,D段是1,而C段嗅探的意思就是拿下它同一C段中的其中一台服务器,也就是说是D段1-255中的一台服务器,然后利用工具嗅探拿下该服务器。旁站和C段在线查询地址:
- http://www.webscan.cc/
- https://phpinfo.me/bing.php
- https://scan.top15.cn
旁站扫描能扫描与该IP地址挂靠的其他网站,这有利于Web渗透,可能旁站存在漏洞。
3:端口攻击
针对不同的端口具有不同的攻击方法,因为每个端口就是记录服务器或目标系统的大门,只要打开这个大门,就可以进入目标系统。例如:针对远程连接服务端口的攻击方法如下,因为23号端口Telnet远程连接是明文传递信息的,可以通过爆破、嗅探、弱口令等方法实施攻击。
这里推荐大家:当我们扫描到目标网站的端口号时,可以在搜索引擎中查找对应的攻击方法进行测试,也可以在乌云漏洞库(http://www.anquan.us/)或CVE库中搜索。
4:防御
对于端口攻击来说,只要端口开放并且可以连通,就可以利用对应的方式进行攻击测试。这里提供的防御措施包括:
- 关闭不必要的端口;
- 对重要业务的服务端口设置防火墙;
- 加强员工信息安全意识,经常性更换用户密码,避免弱口令爆破;
- 经常更新软件,打补丁(Patch);
- 利用CVE网站的漏洞信息,提高自身网站的安全。
五.敏感信息收集
针对某些安全做得很好的目标,直接通过技术层面是无法完成渗透测试的。在这种情况下,可以利用搜索引擎目标暴露在互联网上的关联信息。例如:数据库文件、SQL注入、服务配置信息,甚至是通过Git找到站点泄露源代码,以及Redis等未授权访问、Robots.txt等敏感信息,从而达到渗透目的。
在某些情况下,收集到的信息会对后期进行测试起到帮助重要。如果通过收集敏感信息直接获取了目标系统的数据库访问权限,那么渗透测试任务就结束了一大半。因此在进行技术层面情况下的测试之前,应该先进行更多的信息收集,尤其是针对敏感信息的。
1:Google hacking
Google Hack是指使用Google、百度等搜索引擎对某些特定网站主机漏洞(通常是服务器上的脚本漏洞)进行搜索,以达到快速找到漏洞主机或特定主机的漏洞的目的。常见方法包括:
Google提供了强大的搜索功能,可以获取精准的结果。如果访问不了,也可以通过百度获取相关内容,但是结果远没有谷歌精准,很多无关的广告及视频会返回给你。示例如下:
- intitle:eastmount 搜索网页标题包含eastmount字符的网页。
- inurl: login.asp?id= 搜索包含特定字符“login.asp?id=”的URL。常用示例为inurl:login.asp、inurl:asp?id=、inurl:login.asp。
- intext:cbi 搜索网页正文内容包含特定字符cbi的网页。
- filetype:ppt 搜索制定类型的文件,返回所有以ppt结尾的文件URL。
- site:baidu.com 找到与指定网站有联系的URL。
2:http响应收集server信息
通过HTTP或HTTPS与目标站点进行通信中,目标响应的报文中Server头和X-Powered-By头会暴露目标服务器和使用的编程语言信息,通过这些信息可以有针对的利用漏洞尝试。
获取HTTP响应的基本方法包括:
- 利用工具,如浏览器审计工具、BurpSuite、Fiddler等代理截断工具获取
- 编写Python脚本文件,如requests库
右键浏览器审查元素,获取Network中Headers信息。
六:真实ip地址识别
1.CDN
CDN全称是Content Delivery Network,即内容分发网络。其原理如下:某些大型网站在全国都会有很多用户,这些用户常常会向网站发送不同的请求,那么不同地域会具有不同的缓冲服务器来接收用户发送的流量。如果用户发送流量没有任何交互的数据,只是请求首页的话,此时根据用户所在地区来确定访问的高速缓存服务器,高速缓存服务器会返回对应的响应到用户的浏览器当中。当用户填写数据,需要交互时才会将请求发送到真实的服务器,CDN通常存在用户很多的大型流量网站,通过它来解决我们服务器的瓶颈。
2.判断CDN存在
可以通过Ping来判断网站是否存在CDN,www.xxxx.com和xxxx.com返回ip不一样则使用了CDN
也可以通过设置代理或利用在线Ping网站来使用不同地区的Ping服务器来测试目标,不同的检测点相应的ip不同
3.绕过CDN
如果目标没有使用CDN: 可以直接利用ping获取IP地址,或者利用在线网站获取
如果目标使用CDN: 需要绕过CDN后去真实IP地址,方法如下:
- 内部邮箱源:收集到内部邮箱服务器IP地址
- 网站phpinfo文件:phpinfo.php
- 分站IP地址,查询子域名:CDN很贵,很有可能分站就不再使用CDN
- 国外访问:https://asm.ca.com/en/ping.php
- 查询域名解析记录:https://viewdns.info/
通过国内网站(https://viewdns.info/)获取IP地址
4.验证ip地址
对得到的ip进行访问,如果正常则说明为真实ip,否则为假的
七.总结
之前看过很多篇信息收集的文章,一直没有做过记录,感觉这篇文章总结的很全面就记录下来学习一下。
再附上大佬对我说的话:第一 给你aa.com不是让你去看ip的 ip很有可能都是cdn 给你aa.com是让你去知道你要渗透的目标,然后根据域名定位公司,控股100%子公司,这是第一步,你要收集的你渗透的资产,
第二步才是主公司子域名,控股公司子域名,以及一些大目标很有可能全是外网c段甚至b段,他们分布的ip段,剩下的就和你说的差不多,但是日一个web最开始是肯定看web容器 服务器系统 操作语言的,当然能直接看出cms更好, 收集完子域名后 判断存活,去重,然后利用一些已知的漏洞攻击(cms框架漏洞,sql注入,上传,爆破,xss,rce)等等,如果获取到一个权限,一定要很小心,别一开始就扫描什么的,先把能收集的信息收集到极致,在开始为下一步渗透做准备,其实渗透测试就是信息收集的过程,你记住,渗透就是一直收集信息,打不下来就继续收集。
参考:https://cloud.tencent.com/developer/article/1685126