penetration-information
手捧夕阳blog https://charonzhou.github.io/
记录渗透笔记学习
This is an artacle about network information collect
俗话说知己知彼百战百胜,学习渗透的第一步应该从信息搜集开始学起
[个人理解每个人都有不同的看法]
那信息搜集应该收集些什么东西
一般来说要收集这些信息,但不局限于这些:
- 企业备案
- 域名
- IP地址
- 端口
- 中间件
- CMS
- 服务器系统
- 数据库
- 目录
- WAF
- 泄露
可以使用零零安信对目标进行评估
零零信安能收集资产的信息系统暴露、移动端应用(APP、API、小程序、公众号)、敏感目录、邮箱泄露、文档和代码、域名、人员、DWM情报等,功能强大。
信息收集流程
1 查询资产的企业备案 [收集到的信息要记录下来]
2 根据备案号查询企业拥有的域名,结合黑暗引擎与OneForAll工具查询这些域名的子域名 [其他工具也可以]
需要注意的是有些网站可能会使用CDN加速,你域名反查可能会查到那个CDN服务器上,那这样就是没有意义的信息收集,
我们一般用这两种方法来判断域名是否采用CDN加速:
- 方法一:Ping多处。使用站长家的多址ping功能ping目标域名。获取多个独立IP地址时,采用CDN加速。
- 方法二:NSLOOKUP+域名。配合命令窗口中的NSLOOKUP+域名命令。当非权威响应中出现多个独立的IP地址时,说明采用了CDN加速。
那么如何找到CDN加速域名的真实IP呢?有几种方法:
- 方法一:DNS历史解析记录
- 查询域名历史解析记录,可以找到网站使用CDN之前的解析记录,从而获取真实IP。
- 方法二:子域名查询
- 域名CDN加速需要付费给对应的CDN加速公司。很多情况下,只有主域名采用CDN加速,而没有采用子域名。这时候先查询对应的子域名,再反向查询子域名,得到真实IP。
- 方法三:在国外很多地方ping
- 很多国内CDN厂商因为各种原因只做国产线,但是国外线可能很少。这时候我们或许可以通过外部主机直接访问来获取真实IP。
- 方法四:SSL证书查询
- 证书颁发机构 (CAS) 必须将他们发布的每个 SSL/TLS 证书发布到公共日志中。 SSL/TLS 证书通常包含域名、子域名和电子邮件地址。
- 方法五:邮寄
- 许多网站都有发送电子邮件的功能,例如通过电子邮件注册和订阅网站内容。这时候查看邮件源码就会包含服务器的真实IP。检查电子邮件标头信息以查找真实 IP 地址。
以上就是总结域名反查可能会查到CND之后的几种解决方法[有其他更好更方便的方法也可以]
- 方法一:DNS历史解析记录
3 上一步获取到域名之后可以用域名反查获取到真实IP地址,获取到之后分别能进行:
根据IP地址与域名查询开放的端口
使用工具扫描IP地址与域名获得中间件、CMS、服务器系统、数据库、目录、泄露信息
这些信息该如何去搜集
企业备案
- 一家公司开设网站需要对网站进行备案,备案号一般在网站的最底部可以查到。根据查到的网站,可以进行查询后得到该公司的其他注册域名,以下网站常用于企业备案查询:
1
https://beian.miit.gov.cn
- 若是想得到公司的其他信息,可以到企业查询网站查询,在这些网站里能查到目标公司的网站,电话,负责人等信息,为后面的信息收集与网站渗透提供参考,以下网站常用于企业查询:
1
2
3https://aiqicha.baidu.com(爱企查)
https://www.qcc.com(企查查)
https://www.tianyancha.com(天眼查)
域名
域名能通过DNS来解析回IP,其中域名分为顶级域名,二级域名,三级域名等
tieba.baidu.com
↑ ↑ ↑
三级域名.二级域名.顶级域名
对于安全测试的意义:
- 相同的二级域名的网站架构、源码、密码可能相似
- 两个网站的域名解析的IP地址可能相同
子域名的获取方式有爆破,搜索,JS查找,证书查找,DNS搜索,OneForAll搜索
爆破
分享两个常用的爆破工具:
1 | 子域名挖掘机:https://pan.baidu.com/s/1qL1XYr9hhmlm_EleTEl0SQ 提取码:ews7 |
搜索
搜索主要是使用搜索引擎进行搜索,例如百度、谷歌、fofa、hunter、shodan、zoomeye
在使用黑暗搜索引擎时,经常会出现与目标公司不相关的URL,这时就能通过下载该网站的favicon.ico文件并查看
获得favicon.ico文件方法:
- 方法一
- 直接在网站网址后面加favicon.ico
- 方法二
- F12或者右键查看网页源代码,链接头部指向即为favicon.ico的地址
- 方法三
以下为常用的google hack搜索语法:
1 | site 指定域名 |
在线搜索的网站有:
1 | https://rapiddns.io/subdomain |
JS查找
JS查询为使用JSFinder工具通过正则表达式获取URL与子域名。
证书查找
查询HTTPS证书能查询到子域名
1 | https://crt.sh/ |
DNS搜索
查询DNS能查询到该域下的解析记录,从而有可能获得子域名
1 | https://dnsdb.io/zh-cn/ |
OneForAll搜索
OneForAll工具是集合了各种方法的子域名收集工具,因此功能很强大
1 | https://github.com/shmilylty/OneForAll |
IP地址
获得一个网站的真实IP是极其重要的,原因如下:
- 获取到IP地址后可以使用nmap扫出开放的端口[其他工具也可以,我用nmap较多就拿这个举例]
- 扫描IP地址为扫描网站的上一级文件夹
- 很多网站在其上一级有可能有该网站的源码备份
一个IP地址能分为5个段IP地址
A类地址 :
一个A类IP地址由1字节的网络地址和3字节主机地址组成,它主要为大型网络而设计的,网络地址的最高位必须是“0”, 地址范围从1.0.0.0 到127.0.0.0)。可用的A类网络有127个,每个网络能容纳16777214个主机。其中127.0.0.1是一个特殊的IP地址,表示主机本身,用于本地机器的测试1
2
3注:
A:0-127,其中0代表任何地址,127为回环测试地址,因此,A类ip地址的实际范围是1-126.
默认子网掩码为255.0.0.0B类地址 :
一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,地址范围从128.0.0.0到191.255.255.255。可用的B类网络有16382个,每个网络能容纳6万多个主机1
2注:
B:128-191,其中128.0.0.0和191.255.0.0为保留ip,实际范围是128.1.0.0--191.254.0.0C类IP地址 :
一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。范围从192.0.0.0到223.255.255.255。C类网络可达209万余个,每个网络能容纳254个主机1
注:C:192-223,其中192.0.0.0和223.255.255.0为保留ip,实际范围是192.0.1.0--223.255.254.0
D类IP地址:
用于多点广播(Multicast)。 D类IP地址第一个字节以“lll0”开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。224.0.0.0到239.255.255.255用于多点广播E类IP地址
以“llll0”开始,为将来使用保留。240.0.0.0到255.255.255.254,255.255.255.255用于广播地址。全零(“0.0.0.0”)地址对应于当前主机。全“1”的IP地址(“255.255.255.255”)是当前子网的广播地址。
CDN
介绍:
1 | 全称:Content Delivery Network或Content Ddistribute Network 即内容分发网络 |
概念:
1 | 尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上 |
作用:
1 | 解决因分布、带宽、服务器性能带来的访问延迟问题,适用于站点加速、点播、直播等场景。使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度和成功率。 |
架构:
1 | 当用户点击网站页面上的内容URL,经过本地DNS系统解析,DNS系统会最终将域名的解析权交给CNAME指向的CDN专用DNS服务器。 |
无CDN
获取一个域名对应的IP需要分析其有没有CDN,判断方法为使用超级ping,若每个地方的IP地址不同,就是有CDN,若无则否
1 | 若是没有用CDN的话直接用`ping`命令就能够获取真实的IP |
有CDN
- 网站的各个子域名可能在1-254区间内,或者不同的网段,因此可以测试区域内不同IP来获取真实IP
- 有些网站只对加www的网站加CDN,所以无www的网站有可能为真实IP
- 根据备案信息注册的省份来判断域名所在地
- 有些网站仅仅在国内有CDN,所以可以使用超级ping来判断真实IP
- 有些网站仅仅主站有CDN,而分站没有,所以可以根据分站IP判断真实IP
- 可以通过注册账号获取验证码的方式获取目标网站向自己发送的邮件,然后使用foxmail打开查看源码,以此获得真实IP
- 使用fofa、hunter、shodan、zoomeye搜索指定关键字,以此来获得真实IP
- 查询DNS记录来查询真实IP
- 使用w8fuckcun、fuckcdn工具扫描全网来获得真实IP
- 使用微步查询历史记录,有可能查到网站没加CDN之前的IP记录
- 使用VPN挂全局代理后
ping
目标网站 - 使用get-site-ip网站查询真实IP,有可能不准确,需要借助以上思路进行判断
- 利用网站favicon.ico地址的hash值在shodan搜索,具体参考该链接
端口
端口的范围是从0到65535,其中端口分为3大类:
- 公认端口:
从0-1023,这些端口绑定了一些明确服务的协议 - 注册端口:
从1024到49151,这些端口松散绑定一下服务 - 动态端口:
从49152到65535,这些端口并不常用
端口收集常使用nmap来进行探测,以下为快速扫描指令:
1 | nmap -sS -Pn -open -T4 |
其他扫描工具有御剑高速TCP端口扫描工具、masscan、Goby
也可以使用在线的方式探测端口:
1 | http://coolaf.com/tool/port |
中间件
中间件为网站搭建平台,是网站的一个框架,常见中间件为iis、apache、tomcat、nginx、thinkphp、structs2等
通常使用AlliN、Glass、EHole、dismap等工具进行查看
也可以通过观察网站的后缀进行判断,比如.net.php.asp
后缀的网站的中间件一般为IIS
CMS
CMS为一个网站的模板,这个模板已经被设计好,使用前只需要使用者根据自己的需求进行更改,识别CMS能使用特定的攻击方式来进行渗透。
在识别CMS前,可以使用先用7kbscan工具进行扫描,看看是否能扫出源码备份文件或者数据库备份文件。
以下网站能查看ASP,PHP,ASPX,JSP,JAVAWEB 等脚本类型源码安全问题
1 | https://websec.readthedocs.io/zh/latest/language/index.html |
以下为识别方法:
在一些网站的最下面会有CMS的名字
访问CMS的特定路径查看是否能访问来判断CMS
使用kali中的
whatweb
命令进行扫描使用浏览器中的
wappalyzer
插件进行查看使用御剑WEB指纹识别系统来进行扫描
下载网站的ico文件查看(即favicon.ico文件)
使用在线网站进行查看,如:
1
2https://www.yunsee.cn/
http://whatweb.bugscaner.com/(云悉)
若是以上方法无法找到源码备份原件和CMS,则可以通过Charles工具来描绘网站,该工具能自动对访问的URL进行归类整理,点击的越多,得到网站的全貌就越完整。
服务器系统
常见的服务器系统为windows与linux,获得操作系统的信息可以根据操作系统的特性进行特定的渗透攻击,如对window7可以使用永恒之蓝进行攻击。
以下为分辨的方法:
为查看网站对大小写是否区分,区分大小写的为linux,不区分大小写的为windows
根据TTL值判断操作系统,但TTL值可以修改,有可能会误导我们,以下为默认操作系统TTL(TTL可以通过在
CMD
中PING
目标网站查看):1
2
3
4
5WINDOWS NT/2000 TTL:128
WINDOWS 95/98 TTL:32
UNIX TTL:255
LINUX TTL:64
WIN7 TTL:64使用
nmap
命令的-O
参数来进行探测
数据库
数据库能为网站存储信息,不同的数据库有不同的漏洞,因此得知该网站的数据库是很有必要的,以下为识别方法:
根据网站的文件来识别:
1
2
3
4
5asp access
php mysql
aspx mssql
jsp mssql,oracle
python mogodb通过操作系统来判断数据库,有一些数据库只能在特定操作系统中才能运行,比如window下才有access,sqlserver
使用nmap指令进行探测端口,根据端口号来判断:
1
2
3
4
5
6mysql 3306
mssql 1433
oracle 1511
mongodb 27017
redis 6379
memcached 11211通过
nmap -O -sV ip地址
的方式扫描能获得apache和php和mysql版本
目录
目录作为网站的基本结构之一,能方便浏览者和管理者区分。
通常能用Charles工具、dirsearch、JSFinder工具、御剑目录扫描专业版进行目录扫描
WAF
WAF为WEB应用防护系统,用于隔离外界的非法请求
有些WAF还能作为网站的中间件,如宝塔,phpStudy,inmap等等
识别WAF对于安全测试的意义在于不能对有WAF的网站使用扫描工具扫描
以下为识别WAF的方法:
- 使用wafw00f工具进行识别
- 利用浏览器抓包识别
X-Powered-By
泄露
泄露分为SVN泄露、HG泄露、GIT泄露、VIM缓存泄露、备份文件泄露、PHP备份文件泄露、gedit备份文件泄露
SVN泄露
SVN是源代码版本管理软件。
在使用SVN管理本地代码过程中,会自动生成一个隐藏文件夹,其中包含重要的源代码信息。但一些网站管理员在发布代码时,不愿意使用‘导出’功能,而是直接复制代码文件夹到WEB服务器上,这就使隐藏文件夹被暴露于外网环境,这使得渗透工程师可以借助其中包含版本信息追踪的网站文件,逐步摸清站点结构。
在服务器上布署代码时,如果是使用 svn checkout
功能来更新代码,项目目录下会生成隐藏的.svn
文件夹(Linux上用ls
命令看不到,要用ls -al
命令),若没有配置好目录访问权限,则会存在此漏洞。黑客利用此漏洞,可以下载整套网站的源代码。
svn1.6及以前版本会在项目的每个文件夹下都生成一个.svn文件夹,里面包含了所有文件的备份,文件名为 .svn/text-base/文件名.svn-base。
svn1.7及以后版本则只在项目根目录生成一个.svn文件夹,里面的pristine文件夹里包含了整个项目的所有文件备份。
使用dvcs-ripper工具能对网站扫描SVN
HG泄露
当开发人员使用 Mercurial 进行版本控制,对站点自动部署。如果配置不当,可能会将.hg 文件夹直接部署到线上环境。这就引起了 hg 泄露漏洞。
使用dvcs-ripper)工具能对网站扫描HG
vim缓存
- vim 交换文件名
- 在使用vim时会创建临时缓存文件,关闭vim时缓存文件则会被删除,当vim异常退出后,因为未处理缓存文件,导致可以通过缓存文件恢复原始文件内容
- 以 index.php 为例:第一次产生的交换文件名为 .index.php.swp
- 再次意外退出后,将会产生名为 .index.php.swo 的交换文件
- 第三次产生的交换文件则为 .index.php.swn
git泄露
当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git
文件夹直接部署到线上环境。这就引起了git泄露漏洞。
dirsearch工具扫描目录后有可能扫出.git
目录,之后使用GitHack工具能获取该文件
备份文件泄露
常见的网站源码备份文件后缀
1
2
3
4tar
tar.gz
zip
rar常见的网站源码备份文件名
1
2
3
4
5
6
7web
website
backup
back
www
wwwroot
Temp可以使用7kbscan扫描
bak是备份文件,为文件格式扩展名。这类文件一般在.bak前面加上应该有原来的扩展名比如windows.dll.bak,或是windows_dll.bak,有的则是由原文件的后缀名和bak混合而成。
常见备份文件后缀:“.git” 、“.svn”、“ .swp” “.~”、“.bak”、“.bash_history”、“.bkf”
访问隐藏文件时前面加”.”
PHP备份文件泄露
- .phps后缀释义: phps文件就是php的源代码文件。
- 通常用于提供给用户(访问者)查看php代码,因为用户无法直接通过Web浏览器看到php文件的内容,所以需要用phps文件代替
gedit备份文件泄露
在Linux下,用gedit编辑器保存后,当前目录下会生成一个后缀为“ ~ ”的文件,其文件内容就是刚编辑的内容.假设刚才保存的文件名为flag,则该文件名为flag~,见图1-1-7.通过浏览器访问这个带有“ ~ ”的文件,便可以得到源代码。
工具扫描
在得到资产的网站后,可以使用扫描器去扫描网站存在的漏洞
最常用的扫描器有Xray、awvs(该链接迅雷不能下载)、nessus(该链接迅雷不能下载)
漏洞库
1 | https://github.com/binganao/vulns-2022 |
peiqi漏洞库