Web安全
- 一、信息收集简介
- 二、信息收集的分类
- 三、常见的方法
- 四、在线whois查询
- 在线网站备案查询
- 五、查询绿盟的whois信息
- 六、收集子域名
- 1、子域名作用
- 2、常用方式
- 3、域名的类型
- 3.1 A (Address) 记录:
- 3.2 别名(CNAME)记录:
- 3.3 如何检测CNAME记录?
- 3.4 MX(Mail Exchanger)记录:
- 3.5 什么是TXT记录?
- 3.6 什么是NS记录?
- 3.7 子域名在线查询1
- 3.8 子域名在线查询2
- 3.9 dns侦测
- 3.10 IP138查询子域名
- 3.11 FOFA搜索子域名
- 3.12 Hackertarget查询子域名
- 4、360测绘空间
- 4.1 Layer子域名挖掘机
- 4.2 SubDomainBrute
- 4.3 Sublist3r
- 4.4 python2.7.14 环境
- 4.5 OneForALL
- 4.6 Wydomain
- 4.7 FuzzDomain
- 4.8 隐藏域名hosts碰撞
- 七、端口扫描
- 1、msscan端口扫描
- 2、御剑端口扫描工具![在这里插入图片描述](https://img-blog.csdnimg.cn/0b727214a07d45fb8c4b109ea0535e8f.png)
- 3、nmap扫描端口和探测端口信息
- 4、在线端口检测
- 5、端口扫描器
- 6、渗透端口
- 7、渗透常见端口及对应服务
- 8、常见的端口和攻击方法
- 八、查找真实ip
- 1、多地ping确认是否使用CDN
- 2、查询历史DNS解析记录
- 2.1 DNSDB
- 2.2 微步在线
- 2.3 Ipip.net
- 2.4 viewdns
- 3、phpinfo
- 4、绕过CDN
- 九、旁站和C段
- 1、站长之家
- 2、google hacking
- 2.1 网络空间搜索引擎
- 2.2 在线c段 webscan.cc
- 2.3 Nmap,Msscan扫描等
- 2.4 常见端口表
一、信息收集简介
渗透的本质是信息收集
信息收集也叫做资产收集
信息收集是渗透测试的前期主要工作,是非常重要的环节,收集足够多的信息才能方便接下来的测试,信息收集主要是收集网站的域名信息、子域名信息、目标网站信息、目标网站真实IP、敏感/目录文件、开放端口和中间件信息等等。通过各种渠道和手段尽可能收集到多的关于这个站点的信息,有助于我们更多的去找到渗透点,突破口。
二、信息收集的分类
- 服务器的相关信息(真实ip,系统类型,版本,开放端口,WAF等)
- 网站指纹识别(包括,cms,cdn,证书等) dns记录
- whois信息,姓名,备案,邮箱,电话反查(邮箱丢社工库,社工准备等)
- 子域名收集,旁站,C段等
- google hacking针对化搜索,word/电子表格/pdf文件,中间件版本,弱口令扫描等
- 扫描网站目录结构,爆后台,网站banner,测试文件,备份等敏感文件泄漏等
- 传输协议,通用漏洞,exp,github源码等
三、常见的方法
- whois查询
域名在注册的时候 需要填入个人或者企业信息 如果没有设置隐藏属性可以查询出来 通过备案号 查询个人或者企业信息 也可以whois反查注册人 邮箱 电话 机构 反查更多得域名和需要得信息。 - 收集子域名
域名分为根域名和子域名
baidu.com 根域名 顶级域名
www.baidu.com子域名 也叫二级域名
www.1.baidu.com 子域名 也叫三级域名 四级如此类推 - 端口扫描
服务器需要开放服务,就必须开启端口,常见的端口是tcp 和udp两种类型
范围 0-65535 通过扫得到的端口,访问服务 规划下一步渗透。 - 查找真实ip
企业的网站,为了提高访问速度,或者避免黑客攻击,用了cdn服务,用了cdn之后真实服务器ip会被隐藏。 - 探测旁站及C段
旁站:一个服务器上有多个网站 通过ip查询服务器上的网站
c段:查找同一个段 服务器上的网站。可以找到同样网站的类型和服务器,也可以获取同段服务器进行下一步渗透。 - 网络空间搜索引擎
通过这些引擎查找网站或者服务器的信息,进行下一步渗透。 - 扫描敏感目录/文件
通过扫描目录和文件,大致了解网站的结构,获取突破点,比如后台,文件备份,上传点。 - 指纹识别
获取网站的版本,属于那些cms管理系统,查找漏洞exp,下载cms进行代码审计。
四、在线whois查询
通过whois来对域名信息进行查询,可以查到注册商、注册人、邮箱、DNS解析服务器、注册人联系电话等,因为有些网站信息查得到,有些网站信息查不到,所以推荐以下信息比较全的查询网站,直接输入目标站点即可查询到相关信息。
- 站长之家域名WHOIS信息查询地址 http://whois.chinaz.com/
- 爱站网域名WHOIS信息查询地址 https://whois.aizhan.com/
- 腾讯云域名WHOIS信息查询地址 https://whois.cloud.tencent.com/
- 美橙互联域名WHOIS信息查询地址 https://whois.cndns.com/
- 爱名网域名WHOIS信息查询地址 https://www.22.cn/domain/
- 易名网域名WHOIS信息查询地址 https://whois.ename.net/
- 中国万网域名WHOIS信息查询地址 https://whois.aliyun.com/
- 西部数码域名WHOIS信息查询地址 https://whois.west.cn/
- 新网域名WHOIS信息查询地址 http://whois.xinnet.com/domain/whois/index.jsp
- 纳网域名WHOIS信息查询地址 http://whois.nawang.cn/
- 中资源域名WHOIS信息查询地址 https://www.zzy.cn/domain/whois.html
- 三五互联域名WHOIS信息查询地址 https://cp.35.com/chinese/whois.php
- 新网互联域名WHOIS信息查询地址 http://www.dns.com.cn/show/domain/whois/index.do
- 国外WHOIS信息查询地址 https://who.is/
在线网站备案查询
网站备案信息是根据国家法律法规规定,由网站所有者向国家有关部门申请的备案,如果需要查询企业备案信息(单位名称、备案编号、网站负责人、电子邮箱、联系电话、法人等),推荐以下网站查询
- 天眼查 https://www.tianyancha.com/
- ICP备案查询网http://www.beianbeian.com/
- 爱站备案查询https://icp.aizhan.com/
- 域名助手备案信息查询 http://cha.fute.com/index
五、查询绿盟的whois信息
Whois查询nsfocus.com.cn
通过反查注册人和邮箱得多更多得域名
六、收集子域名
1、子域名作用
收集子域名可以扩大测试范围,同一域名下的二级域名都属于目标范围。
2、常用方式
子域名中的常见资产类型一般包括办公系统,邮箱系统,论坛,商城,其他管理系统,网站管理后台也有可能出现子域名中。
首先找到目标站点,在官网中可能会找到相关资产(多为办公系统,邮箱系统等),关注一下页面底部,也许有管理后台等收获。
查找目标域名信息的方法有:
- FOFA title=“公司名称”
- 百度 intitle=公司名称
- Google intitle=公司名称
- 站长之家,直接搜索名称或者网站域名即可查看相关信息:
http://tool.chinaz.com/ - 钟馗之眼 site=域名即可
https://www.zoomeye.org/
找到官网后,再收集子域名,下面推荐几种子域名收集的方法,直接输入domain即可查询
3、域名的类型
A记录、别名记录(CNAME)、MX记录、TXT记录、NS记录:
3.1 A (Address) 记录:
是用来指定主机名(或域名)对应的IP地址记录。用户可以将该域名下的网站服务器指向到自己的web server上。同时也可以设置您域名的二级域名。
3.2 别名(CNAME)记录:
也被称为规范名字。这种记录允许您将多个名字映射到同一台计算机。通常用于同时提供WWW和MAIL服务的计算机。例如,有一台计算机名为“host.mydomain.com”(A记录)。它同时提供WWW和MAIL服务,为了便于用户访问服务。可以为该计算机设置两个别名(CNAME):WWW和MAIL。这两个别名的全称就是“www.mydomain.com”和“mail.mydomain.com”。实际上他们都指向“host.mydomain.com”。同样的方法可以用于当您拥有多个域名需要指向同一服务器IP,此时您就可以将一个域名做A记录指向服务器IP然后将其他的域名做别名到之前做A记录的域名上,那么当您的服务器IP地址变更时您就可以不必麻烦的一个一个域名更改指向了 只需要更改做A记录的那个域名其他做别名的那些域名的指向也将自动更改到新的IP地址上了。
3.3 如何检测CNAME记录?
1、进入命令状态;(开始菜单 - 运行 - CMD[回车]);
2、输入命令" nslookup -q=cname 这里填写对应的域名或二级域名",查看返回的结果与设置的是否一致即可。
3.4 MX(Mail Exchanger)记录:
是邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据 收信人的地址后缀来定位邮件服务器。例如,当Internet上的某用户要发一封信给 user@mydomain.com 时,该用户的邮件系统通过DNS查找mydomain.com这个域名的MX记录,如果MX记录存在, 用户计算机就将邮件发送到MX记录所指定的邮件服务器上。
3.5 什么是TXT记录?
TXT记录一般指为某个主机名或域名设置的说明,如:
1)admin IN TXT "jack, mobile:13800138000";
2)mail IN TXT "邮件主机, 存放在xxx ,管理人:AAA",Jim IN TXT "contact: abc@mailserver.com"
也就是您可以设置 TXT ,以便使别人联系到您。
如何检测TXT记录?
1、进入命令状态;(开始菜单 - 运行 - CMD[回车]);
2、输入命令" nslookup -q=txt 这里填写对应的域名或二级域名",查看返回的结果与设置的是否一致即可。
3.6 什么是NS记录?
ns记录全称为Name Server 是一种域名服务器记录,用来明确当前你的域名是由哪个DNS服务器来进行解析的。
3.7 子域名在线查询1
https://phpinfo.me/domain/
3.8 子域名在线查询2
https://www.t1h2ua.cn/tools/
3.9 dns侦测
https://dnsdumpster.com/
3.10 IP138查询子域名
https://site.ip138.com/moonsec.com/domain.html
3.11 FOFA搜索子域名
https://fofa.so/
语法:domain="baidu.com"
提示:以上两种方法无需爆破,查询速度快,需要快速收集资产时可以优先使用,后面再用其他方法补充。
3.12 Hackertarget查询子域名
https://hackertarget.com/find-dns-host-records/
注意:通过该方法查询子域名可以得到一个目标大概的ip段,接下来可以通过ip来收集信息。
4、360测绘空间
https://quake.360.cn/
domain:"*.freebuf.com"
4.1 Layer子域名挖掘机
4.2 SubDomainBrute
pip install aiodns
运行命令subDomainsBrute.py freebuf.com
subDomainsBrute.py freebuf.com --full -o freebuf2.txt
4.3 Sublist3r
https://github.com/aboul3la/Sublist3r
pip install -r requirements.txt
提示:以上方法为爆破子域名,由于字典比较强大,所以效率较高。
帮助文档
usage: sublist3r.py [-h] -d DOMAIN [-b [BRUTEFORCE]] [-p PORTS] [-v [VERBOSE]]
[-t THREADS] [-e ENGINES] [-o OUTPUT] [-n]
OPTIONS:
-h, --help show this help message and exit
-d DOMAIN, --domain DOMAIN
Domain name to enumerate it's subdomains
-b [BRUTEFORCE], --bruteforce [BRUTEFORCE]
Enable the subbrute bruteforce module
-p PORTS, --ports PORTS
Scan the found subdomains against specified tcp ports
-v [VERBOSE], --verbose [VERBOSE]
Enable Verbosity and display results in realtime
-t THREADS, --threads THREADS
Number of threads to use for subbrute bruteforce
-e ENGINES, --engines ENGINES
Specify a comma-separated list of search engines
-o OUTPUT, --output OUTPUT
Save the results to text file
-n, --no-color Output without color
Example: python sublist3r.py -d google.com
中文翻译
-h :帮助
-d :指定主域名枚举子域名
-b :调用subbrute暴力枚举子域名
-p :指定tpc端口扫描子域名
-v :显示实时详细信息结果
-t :指定线程
-e :指定搜索引擎
-o :将结果保存到文本
-n :输出不带颜色
默认参数扫描子域名
python sublist3r.py -d baidu.com
使用暴力枚举子域名
python sublist3r -b -d baidu.com
4.4 python2.7.14 环境
;C:\Python27;C:\Python27\Scripts
4.5 OneForALL
pip3 install --user -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
python3 oneforall.py --target baidu.com run /*收集*/
爆破子域名
Example:
brute.py --target domain.com --word True run
brute.py --targets ./domains.txt --word True run
brute.py --target domain.com --word True --concurrent 2000 run
brute.py --target domain.com --word True --wordlist subnames.txt run
brute.py --target domain.com --word True --recursive True --depth 2 run
brute.py --target d.com --fuzz True --place m.*.d.com --rule '[a-z]' run
brute.py --target d.com --fuzz True --place m.*.d.com --fuzzlist subnames.txt run
4.6 Wydomain
dnsburte.py -d aliyun.com -f dnspod.csv -o aliyun.log
wydomain.py -d aliyun.com
4.7 FuzzDomain
4.8 隐藏域名hosts碰撞
隐藏资产探测-hosts碰撞
https://mp.weixin.qq.com/s/fuASZODw1rLvgT7GySMC8Q
很多时候访问目标资产IP响应多为:401、403、404、500,但是用域名请求却能返回正常的业务系统(禁止IP直接访问),因为这大多数都是需要绑定host才能正常请求访问的 (目前互联网公司基本的做法)(域名删除了A记录,但是反代的配置未更新),那么我们就可以通过收集到的目标的 域名 和 目标资产 的IP段组合起来,以 IP段+域名 的形式进行捆绑碰撞,就能发现很多有意思的东西。
在发送http请求的时候,对域名和IP列表进行配对,然后遍历发送请求 (就相当于修改了本地的hosts文件一样),并把相应的title和响应包大小拿回 来做对比,即可快速发现一些隐蔽的资产。
进行hosts碰撞需要目标的域名和目标的相关IP作为字典
域名就不说了
相关IP来源有:
目标域名历史解析IP
https://site.ip138.com/
https://ipchaxun.com/
ip正则
https://www.aicesu.cn/reg/
七、端口扫描
当确定了目标大概的ip段后,可以先对ip的开放端口进行探测,一些特定服务可能开起在默认端口上,探测开放端口有利于快速收集目标资产,找到目标网站的其他功能站点。
1、msscan端口扫描
msscan -p 1-65535 ip --rate=1000
https://gitee.com/youshusoft/GoScanner/
2、御剑端口扫描工具
3、nmap扫描端口和探测端口信息
常用参数,如:
nmap -sV 192.168.0.2
nmap -sT 92.168.0.2
nmap -Pn -A -sC 192.168.0.2
nmap -sU -sT -p0-65535 192.168.122.1
用于扫描目标主机服务版本号与开放的端口
如果需要扫描多个ip或ip段,可以将他们保存到一个txt文件中
nmap -iL ip.txt
来扫描列表中所有的ip。
Nmap为端口探测最常用的方法,操作方便,输出结果非常直观。
4、在线端口检测
http://coolaf.com/tool/port
5、端口扫描器
御剑,msscan,zmap等
御剑高速端口扫描器:
填入想要扫描的ip段(如果只扫描一个ip,则开始IP和结束IP填一个即可),可以选择不改默认端口列表,也可以选择自己指定端口。
6、渗透端口
21,22,23,1433,152,3306,3389,5432,5900,50070,50030,50000,27017,27018,11211,9200,9300,7001,7002,6379,5984,873,443,8000-9090,80-89,80,10000,8888,8649,8083,8080,8089,9090,7778,7001,7002,6082,5984,4440,3312,3311,3128,2601,2604,2222,2082,2083,389,88,512,513,514,1025,111,1521,445,135,139,53
7、渗透常见端口及对应服务
- 1.web类(web漏洞/敏感目录)
第三方通用组件漏洞struts thinkphp jboss ganglia zabbix
80 web
80-89 web
8000-9090 web
- 2.数据库类(扫描弱口令)
1433 MSSQL
1521 Oracle
3306 MySQL
5432 PostgreSQL
- 3.特殊服务类(未授权/命令执行类/漏洞)
443 SSL心脏滴血
873 Rsync未授权
5984 CouchDB http://xxx:5984/_utils/
6379 redis未授权
7001,7002 WebLogic默认弱口令,反序列
9200,9300 elasticsearch 参考WooYun: 多玩某服务器ElasticSearch命令执行漏洞
11211 memcache未授权访问
27017,27018 Mongodb未授权访问
50000 SAP命令执行
50070,50030 hadoop默认端口未授权访问
- 4.常用端口类(扫描弱口令/端口爆破)
21 ftp
22 SSH
23 Telnet
2601,2604 zebra路由,默认密码zebra
3389 远程桌面
- 5.端口合计详情
21 ftp
22 SSH
23 Telnet
80 web
80-89 web
161 SNMP
389 LDAP
443 SSL心脏滴血以及一些web漏洞测试
445 SMB
512,513,514 Rexec
873 Rsync未授权
1025,111 NFS
1433 MSSQL
1521 Oracle:(iSqlPlus Port:5560,7778)
2082/2083 cpanel主机管理系统登陆 (国外用较多)
2222 DA虚拟主机管理系统登陆 (国外用较多)
2601,2604 zebra路由,默认密码zebra
3128 squid代理默认端口,如果没设置口令很可能就直接漫游内网了
3306 MySQL
3312/3311 kangle主机管理系统登陆
3389 远程桌面
4440 rundeck 参考WooYun: 借用新浪某服务成功漫游新浪内网
5432 PostgreSQL
5900 vnc
5984 CouchDB http://xxx:5984/_utils/
6082 varnish 参考WooYun: Varnish HTTP accelerator CLI 未授权访问易导致网站被直接篡改或者作为代理进入内网
6379 redis未授权
7001,7002 WebLogic默认弱口令,反序列
7778 Kloxo主机控制面板登录
8000-9090 都是一些常见的web端口,有些运维喜欢把管理后台开在这些非80的端口上
8080 tomcat/WDCP主机管理系统,默认弱口令
8080,8089,9090 JBOSS
8083 Vestacp主机管理系统 (国外用较多)
8649 ganglia
8888 amh/LuManager 主机管理系统默认端口
9200,9300 elasticsearch 参考WooYun: 多玩某服务器ElasticSearch命令执行漏洞
10000 Virtualmin/Webmin 服务器虚拟主机管理系统
11211 memcache未授权访问
27017,27018 Mongodb未授权访问
28017 mongodb统计页面
50000 SAP命令执行
50070,50030 hadoop默认端口未授权访问
8、常见的端口和攻击方法
端口号 | 服务 | 攻击方法 |
---|---|---|
21/22/69 | ftp/tftp文件传输协议 | 爆破嗅探 溢出 ; 后门 |
22 | ssh远程连接 | 爆破OpenSSH;28个退格 |
23 | telnet远程连接 | 爆破嗅探 |
25 | smtp邮件服务 | 邮件伪造 |
53 | DNS域名系统 | DNS区域传输DNS劫持 DNS缓存投毒 DNS欺骗 深度利用 :利用DNS隧道技术刺透防火墙 |
67/68 | dhcp | 劫持欺骗 |
110 | pop3 | 爆破 |
139 | samba | 爆破未授权访问 远程代码执行 |
143 | imap | 爆破 |
161 | snmp | 爆破 |
389 | Idap | 注入攻击未授权访问 |
512/513/514 | linux r | 直接使用rlogin |
873 | rsync | 未授权访问 |
1080 | socket | 爆破:进行内网渗透 |
1352 | lotus | 爆破:弱口令信息泄漏:源代码 |
1433 | mssq | 爆破:使用系统用户登录注入攻击 |
1521 | oracle | 爆破: TNS注入攻击 |
2049 | nfs | 配置不当 |
2181 | zookeeper | 未授权访问 |
3306 | mysql | 爆破拒绝服务 注入 |
3389 | rdp | 爆破Shift后门 |
4848 | glassfish | 爆破:控制台弱口令认证绕过 |
5000 | sybase/DB2 | 爆破注入 |
5432 | postgresql | 缓冲区溢出注入攻击 爆破:弱口 |
5632 | pcanywhere | 拒绝服务代码执行 |
5900 | vnc | 爆破:弱口令认证绕过 |
6379 | redis | 未授权访问爆破:弱口令 |
7001 | weblogic | Java反序列化控制台弱口令 控制台部署webshell |
8069 | zabbix | 远程命令执行 |
8080-8090 | web | 常见web攻击控制台爆破 对应服务器版本漏洞 |
9090 | websphere控制台 | 爆破: 控制台弱口令Java反序列 |
9200/9300 | elasticsearch | 远程代码执行 |
11211 | memcacache | 未授权访问 |
27017 | mongodb | 爆破未授权访问 |
八、查找真实ip
如果目标网站使用了CDN,使用了cdn真实的ip会被隐藏,如果要查找真实的服务器就必须获取真实的ip,根据这个ip继续查询旁站。
注意:很多时候,主站虽然是用了CDN,但子域名可能没有使用CDN,如果主站和子域名在一个ip段中,那么找到子域名的真实ip也是一种途径。
1、多地ping确认是否使用CDN
http://ping.chinaz.com/
http://ping.aizhan.com/
2、查询历史DNS解析记录
在查询到的历史解析记录中,最早的历史解析ip很有可能记录的就是真实ip,快速查找真实IP推荐此方法,但并不是所有网站都能查到。
2.1 DNSDB
https://dnsdb.io/zh-cn/
2.2 微步在线
https://x.threatbook.cn/
2.3 Ipip.net
https://tools.ipip.net/cdn.php
2.4 viewdns
https://viewdns.info/
3、phpinfo
如果目标网站存在phpinfo泄露等,可以在phpinfo中的SERVER_ADDR或_SERVER[“SERVER_ADDR"]找到真实ip
4、绕过CDN
绕过CDN的多种方法具体可以参考 https://www.cnblogs.com/qiudabai/p/9763739.html
九、旁站和C段
旁站往往存在业务功能站点,建议先收集已有IP的旁站,再探测C段,确认C段目标后,再在C段的基础上再收集一次旁站。
旁站是和已知目标站点在同一服务器但不同端口的站点,通过以下方法搜索到旁站后,先访问一下确定是不是自己需要的站点信息。
1、站长之家
同ip网站查询http://stool.chinaz.com/same
https://chapangzhan.com/
2、google hacking
https://blog.csdn.net/qq_36119192/article/details/84029809
2.1 网络空间搜索引擎
如FOFA搜索旁站和C段
该方法效率较高,并能够直观地看到站点标题,但也有不常见端口未收录的情况,虽然这种情况很少,但之后补充资产的时候可以用下面的方法nmap扫描再收集一遍。
2.2 在线c段 webscan.cc
webscan.cc
https://c.webscan.cc/
c段利用脚本
pip install requests
#coding:utf-8
import requests
import json
def get_c(ip):
print("正在收集{}".format(ip))
url="http://api.webscan.cc/?action=query&ip={}".format(ip)
req=requests.get(url=url)
html=req.text
data=req.json()
if 'null' not in html:
with open("resulit.txt", 'a', encoding='utf-8') as f:
f.write(ip + '\n')
f.close()
for i in data:
with open("resulit.txt", 'a',encoding='utf-8') as f:
f.write("\t{} {}\n".format(i['domain'],i['title']))
print(" [+] {} {}[+]".format(i['domain'],i['title']))
f.close()
def get_ips(ip):
iplist=[]
ips_str = ip[:ip.rfind('.')]
for ips in range(1, 256):
ipadd=ips_str + '.' + str(ips)
iplist.append(ipadd)
return iplist
ip=input("请你输入要查询的ip:")
ips=get_ips(ip)
for p in ips:
get_c(p)
2.3 Nmap,Msscan扫描等
例如:nmap -p 80,443,8000,8080 -Pn 192.168.0.0/24
2.4 常见端口表
21,22,23,80-90,161,389,443,445,873,1099,1433,1521,1900,2082,2083,2222,2601,2604,3128,3306,3311,3312,3389,4440,4848,5432,5560,5900,5901,5902,6082,6379,7001-7010,7778,8080-8090,8649,8888,9000,9200,10000,11211,27017,28017,50000,50030,50060,135,139,445,53,88
注意:探测C段时一定要确认ip是否归属于目标,因为一个C段中的所有ip不一定全部属于目标。