信息打点
信息打点(信息收集)
1. 信息打点的定义和必要性
实际上就是收集你要攻击的目标的相关信息(包括但不限于:操作系统、源码、架构、端口等等)。
在进行安全测试(攻击)之前,一定要事先收集好目标信息,分析目标的入口点(漏洞)。
2. 收集各种类型信息的必要性
2.1 操作系统
有些漏洞只会产生在Windows系统,而有些漏洞只会产生在Linux系统上。
客户机常用于Windows系统,而服务器常用于Linux系统等等。
因此,收集操作系统信息,为我们实施安全测试是非常必要的。
2.2 Web中间件
有些漏洞只会在特定的中间件上产生。当我们拿到目标的中间件相关信息后,我们可以利用已知的漏洞库来实现攻击。
2.3 脚本语言
例如:log4j漏洞只会在java上产生,而不会在php上产生。
因此,收集脚本语言信息也是非常重要的。
2.4 数据库
有些漏洞只会在特定的数据库上产生。或者当我们拿到目标的数据库相关信息后,我们可以采用弱口令等方式实现攻击。
2.5 CMS
不同的CMS产生的漏洞也各不相同。有些开源的CMS,我们可以获取源码来进行代码审计或者利用已知的漏洞库。
2.6 源码
源码的产出有三种途径:
1. CMS开源(网上直接可下载)
2. 闭源售卖(需要特殊渠道购买)
3. 自主研发(一般买不到)
获取到目标源码后,我们可以:
1. 直接利用公开的漏洞库尝试安全测试
2. 进行代码审计,自己挖漏洞。
3. 如何收集?
对于常用信息的收集方式,这里通过案例来诠释。
比如:
1. 通过http的应答包来查看该web的脚本语言、CMS等信息。
2. 通过TTL值来判断操作系统。
这里有一篇参考资料:https://blog.51cto.com/u_1481758/7478455
3. 通过端口扫描来判断目标机器所开放的服务等信息(相对准确)。
端口扫描分为主动和被动扫描。有些站点明确不让使用扫描(主动扫描),因此要根据实际情况来确定扫描方式。
关于扫描的具体内容,后期进行详细讲解。
4. 通过语言、中间件和数据库的常见组合来推测出数据库类型。
5. 通过指纹来判断操作系统信息(案例)。
数据库的常用端口:
https://blog.csdn.net/SeniorShen/article/details/108643979
请求头/响应头参数:
https://zhuanlan.zhihu.com/p/585115845
在线端口扫描
https://saomiao.bmcx.com/
4. 信息打点案例
4.1 对个人博客进行信息打点
在上图的响应头中,我们可以看到如下信息:
1. 该站点采用PHP语言搭建。
2. 该站点采用Z-Blog(CMS)来搭建的博客。
3. 该站点采用的中间件是Apache/2.4.46(httpd)
4. 该站点的操作系统为:windows
我们可以对该站点进行端口扫描,来查看一下所开放的服务(为了安全性,不暴露ip地址)。
上图结果表明:
1. 该站点开放了HTTP服务(WEB)
2. 使用的是MySQL数据库
3. 远程桌面开放
4. 开放了一个自用端口8888
4.2 对某APP进行信息打点
我们可以通过burpsuite抓包来进行分析。(关于配置代理的具体流程,这里不再赘述,可以参考之前的笔记)
4.3 对于web应用进行信息打点
这个流程跟个人博客类似,这里不再赘述。
可以通过域名查询网站,备案查询网站,来查看某域名是否被注册过。进而增加资产,增加渗透目标。
4.4 对SRC平台中的应用进行信息打点
SRC平台链接:https://www.butian.net/
这里的流程也跟个人博客类似,这里不再赘述。
5. 源码泄露
5.1 源码泄露原因
在我们对目标进行安全测试时,最好的做法是可以直接获取源代码。以方便我们进行代码审计。如果获取不到的话,我们只能进行黑盒测试,黑盒测试的效果没有比白盒测试好。
所以,获得目标的源码是十分重要的。
原因主要分为五类:
从源码本身的特性入口
从管理员不好的习惯入口
从管理员不好的配置入口
从管理员不好的意识入口
从管理员资源信息搜集入口
5.2 源码泄露种类
composer.json
git源码泄露
svn源码泄露
hg源码泄露
网站备份压缩文件
WEB-INF/web.xml泄露
DS_Store 文件泄露
SWP 文件泄露
CVS泄露
Bzr泄露
GitHub源码泄露
6. 信息打点案例
6.0 参考资料
常见的Web源码泄漏漏洞及其利用:
https://www.secpulse.com/archives/124398.html
GitHack工具下载地址:
https://github.com/lijiejie/GitHack
SvnHack工具下载地址:
https://github.com/callmefeifei/SvnHack
DS_Store漏洞利用工具下载地址:
https://github.com/lijiejie/ds_store_exp
dvcs-ripper工具(信息泄露利用工具)下载地址:
https://github.com/kost/dvcs-ripper
6.1 直接获取-CMS识别
云悉指纹识别平台网址:https://www.yunsee.cn/
我们可以通过指定平台来获取某站点下的资产信息。包括:
1. 域名/IP/子域名信息
2. 开发语言
3. 数据库
4. 商业模式等
需要注意:平台的能力有限,有些网站的资产信息是无法识别的。(例如:源码不是开源的,是购买或自研的)
6.2 备份习惯问题-可以直接访问网站备份文件
敏感目录文件扫描器:7kbscan-webpathbrute
该软件可以暴力扫描web站点的目录。
有些站长出于安全性的考虑,会将网站的源码进行备份。但是由于备份的习惯(疏忽),他把备份文件(压缩包)放到了网站目录当中,使得用户可以通过浏览器下载到这个备份文件。
攻击者可以通过诸如7kbscan这样的扫描工具,来查看某站点的网站目录中是否存在这样的文件。
6.3 Git源码泄露
Git是版本控制系统,便于开发者管理自己的源代码。通过创建.git目录进行管理。
但是在上线网站时,有些站长疏忽,将网站的源代码直接复制到中间件的网站目录中,导致了.git目录也暴露了出去。
攻击者可以通过.git目录来恢复该站点的源代码(GitHack)。
如何查看某站点上具有.git目录?
可以直接通过url访问:www.example.com/.git/
如果出现403,那么就代表存在。此时可以通过GitHack进行恢复源代码。
6.4 SVN源码泄露
SVN跟Git都是版本控制系统(管理源代码)。在上线网站时,有些站长疏忽,将网站的源代码直接复制到中间件的网站目录中,导致了.svn目录也暴露了出去。
攻击者可以利用.svn/entries文件来获取该站点的源码。
如何查看某站点上具有.svn目录?
可以直接通过url访问:www.example.com/.svn/entries/
如果出现403,那么就代表存在。此时可以通过SvnHack进行恢复源代码。
6.4 SVN源码泄露案例
1. 我们通过url访问https://www.trafficbonus.com/.svn/entries/发现可以访问
2. 我们通过SvnHack来恢复该网站的源代码
3. 效果如下
这里面有一些注意的点:
1. 该工具使用python2编写,因此不要用python3来运行。
2. 只支持http协议,不支持https协议
3. 不要用来干坏事。
6.5 DS_Store文件泄露
.DS_Store是Mac下Finder用来保存如何展示 文件/文件夹 的数据文件,每个文件夹下对应一个。如果将.DS_Store上传部署到服务器,可能造成文件目录结构泄漏,特别是备份文件、源代码文件。(来自:https://www.secpulse.com/archives/124398.html)
如何查看某站点上具有.DS_Store目录?
可以直接通过url访问:www.example.com/.DS_Store/
如果出现403,那么就代表存在。此时可以通过DS_Store漏洞利用工具恢复源代码。
6.6 composer.json泄露-PHP特性
composer.json介绍:https://blog.csdn.net/qq_35655945/article/details/79694249
composer.json是PHP的包管理工具。在上线网站时,有些站长疏忽,将网站的源代码直接复制到中间件的网站目录中,导致了composer.json文件也暴露了出去。
这个文件里面保存着诸如:开发语言。域名信息,CMS等信息。
如何查看某站点上具有composer.json文件?
可以直接通过url访问:www.example.com/composer.json
如果正常显示,则存在。
6.7 WEB-INF/web.xml泄露(需要配合下载漏洞)
上述图片来自:https://www.secpulse.com/archives/124398.html
6.7 BUUCTF-EasyJava-WEB-INF/web.xml泄露
1. 打开这道题,发现一个页面。你并不知道账号和密码,你需要在这个页面中获得flag。
2. 我们可以单击help,来看一看有什么内容?
3. 该内容显示:对于help.docx这个文件,该服务器不存在。
这个错误消息是Java中的一个异常信息,指示程序试图打开一个文件(在这里是"help.docx"),但是未能找到该文件。具体而言,这是一个FileNotFoundException,表明系统无法在指定的路径中找到所需的文件。
我们也可以确定,这个站点是用Java搭建的。
4. 虽然这个文件不存在,但是我们可以查看一下url,发现有一定的规律。
4.1 filename=help.docx,我们猜测这个参数就是要访问(下载)的文件参数。
4.2 我们对其抓包发现:该请求为GET请求。filename就是文件参数。该站点会将参数filename传递给Download这个controller中。(这就表明这里有下载漏洞)
5. 我们可以通过该下载漏洞,下载这个服务器当中的文件。进而获取Flag。(但是,如果这道题没有下载漏洞的话,攻击无从谈起)
6. 我们可以将参数改为/WEB-INF/web.xml来查看服务器所返回的内容。
7. 我们发现使用GET请求,无法获取到这个文件。我们尝试使用POST请求看看?(这里用postman来模拟post请求)
8. 我们发现成功获取了web.xml文件的内容。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<welcome-file-list>
<welcome-file>Index</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>IndexController</servlet-name>
<servlet-class>com.wm.ctf.IndexController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>IndexController</servlet-name>
<url-pattern>/Index</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>LoginController</servlet-name>
<servlet-class>com.wm.ctf.LoginController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginController</servlet-name>
<url-pattern>/Login</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>DownloadController</servlet-name>
<servlet-class>com.wm.ctf.DownloadController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DownloadController</servlet-name>
<url-pattern>/Download</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>FlagController</servlet-name>
<servlet-class>com.wm.ctf.FlagController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FlagController</servlet-name>
<url-pattern>/Flag</url-pattern>
</servlet-mapping>
</web-app>
查看上述内容,我们发现:存在FlagController、DownloadController等
DownloadController就是用来处理下载请求的Controller
FlagController当然就是答案所在的Controller了。
9. 虽然我们通过web.xml知道了服务器有这些内容,但是我们如何查看这些Controller的源代码呢?
10. 通过之前提到的下载漏洞。我们尝试将filename参数进行填写(通过servlet-class标签):
10.1 获取DownloadController字节码文件
post请求,参数filename = /WEB-INF/classes/com/wm/ctf/DownloadController.class
10.2 获取FlagController字节码文件
post请求,参数filename = /WEB-INF/classes/com/wm/ctf/FlagController.class
11. 获取到字节码文件之后,我们可以使用java的反编译工具,得到该字节码所对应的源代码。(由于获取的内容存在乱码,因此这里就不尝试进行反编译了)(使用postman,来获得字节码文件的内容)
这里我们访问filename = /WEB-INF/classes/com/wm/ctf/FlagController.class
发现内容有base64编码,我们将其编码放到base64加解密网站上进行解密,最终:得到flag。本题结束。
6.8 GitHub/Gitee/搜索引擎泄露-找源码&资产&社会工程学
你可以通过自身所了解的信息,将这些信息放到搜索平台上去搜索,你可能会得到一些额外的信息(源码、某程序员的个人信息等等)。
例如:
6.8.1 通过某网站站长的个人介绍,我们可以将其信息放到搜索平台上去搜索,我们可以得到额外的信息。
6.8.2 通过某代码当中的作者信息,我们可以将其信息放到搜索平台上去搜索,我们可以得到该作者所开发的其他源代码及相关信息。
...
善用谷歌搜索语法,可以搜索更加符合条件的资产信息:
site:可以限制你搜索范围的域名.
inurl:用于搜索网页上包含的URL,这个语法对寻找网页上的搜索,帮助之类的很有用.
intext: 只搜索网页<body>部分中包含的文字(也就是忽略了标题、URL等的文字)
intitle: 查包含关键词的页面,一般用于社工别人的webshell密码
filetype:搜索文件的后缀或者扩展名
intitle:限制你搜索的网页标题.
link: 可以得到一个所有包含了某个指定URL的页面列表.
查找后台地址:site:域名
inurl:login|admin|manage|member|admin_login|login_admin|system|login|user|main|cms
查找文本内容:site:域名 intext:管理|后台|登陆|用户名|密码|验证码|系统|帐号|admin|login|sys|managetem|password|username
查找可注入点:site:域名 inurl:aspx|jsp|php|asp
查找上传漏洞:site:域名 inurl:file|load|editor|Files
找eweb编辑器:
site:域名 inurl:ewebeditor|editor|uploadfile|eweb|edit
存在的数据库:site:域名 filetype:mdb|asp|#
查看脚本类型:site:域名 filetype:asp/aspx/php/jsp
迂回策略入侵:inurl:cms/data/templates/images/index/
GitHub信息泄露监控:https://blog.csdn.net/weixin_50607688/article/details/132378460
7. 获取网络信息-服务厂商-网络架构
7.1 收集服务厂商信息的意义
所谓服务厂商信息:指的就是目标服务器所提供的厂商。
1. 例如:如果服务器是自购的,那么就会有厂商去售卖服务器。(神州数码等)
2. 但是,大多数情况都是云服务器。例如:阿里云、腾讯云、华为云等等
因为有些服务厂商对于服务器所提供的安全措施是不同的。收集这些信息,有利于我们根据不同服务厂商所提供的不同安全措施进行对应的处理。
7.2 收集网络架构信息的意义
有些服务器的网络架构有可能对我们的安全测试造成一定的影响。
1. 如果这台服务器直接架设到外网,那么我们可以直接去访问它。
2. 如果这台web服务器架设到内网,通过交换机的外网出口做一个映射(反向代理),对于用户来讲,我们可以直接通过外网ip来享受到web服务。但是,如果你采用端口扫描来对这个外网ip进行扫描的话,是看不到80端口开放的(造成误报或者扫不到东西)。因为服务架设在内网机器上。(对于这种情况的话,一般没有什么解决方案,除非你攻破了跟web服务器处于同一网段的机器,之后你就可以使用内网渗透)
因此,如果在实际中出现了类似这样的情况,我们要学会去分析。
8. 获取服务信息-应用协议-内网资产
8.1 获取服务信息的意义
有些服务器不只架设web服务,还架设了诸如:redis、mysql、ftp、dhcp等等。
我们可以根据不同的服务,来进行对应的安全测试。
8.2 获取内网资产信息的意义
内网资产信息:指的就是这台机器所处网段下的所有机器。例如:服务器架设到内网上,IP地址:192.168.1.1。所处网段为:192.168.1.1-192.168.1.254。这样的话,如果我们对于192.168.1.1这台机器,暂时找不到有效的测试手段的话,我们可以扫描所处网段下的所有机器。假设,我们攻破了192.168.1.2这台机器,那么我们可以利用这台机器对192.168.1.1实施内网攻击安全测试手段。
9. 获取阻碍信息(对于安全测试的阻碍信息)-CDN&WAF-负载均衡-防火墙
9.1 获取阻碍信息(对于安全测试的阻碍信息)-CDN&WAF-负载均衡-防火墙的意义
有些技术从研发之初的目的不是为了安全,而是为了一些其他的目的。但是,这些技术从原理上看,却对安全测试造成了一定的影响。
1. 负载均衡,目的是为了减轻服务器的负载,增强了用户的体验。但是,对于负载均衡的架构,如果我们对其进行安全测试的话,是不太便利的(具体原因可以参考之前的笔记)。
2. CDN,目的是为了提高用户访问速度。但是,对于CDN,如果我们对其进行安全测试的话,也是不太便利的(具体原因可以参考之前的笔记)。
因此,我们要收集这些信息,以便于对其进行相应的绕过处理。
10. 案例
10.1 参考资料
常见端口&协议&攻击方法:https://liuyixiang.com/post/100290.html
常见端口渗透总结:
https://cn-sec.com/archives/161610.html
常见端口扫描工具:
1. Masscan: 端口扫描、应用协议(速度快)
2. Wafw00f:Web应用防护防火墙识别
3. Nmap:端口扫描,应用协议,防火墙识别
4. lbd:负载均衡,广域网负载均衡,应用层负载均衡
上述工具源码&下载地址:
1. Masscan:https://github.com/robertdavidgraham/masscan
2. Wafw00f:https://github.com/EnableSecurity/wafw00f
3. kali linux上自带Nmap,Masscan,lbd等项目
4. 超级ping:ping.chinaz.com
行业术语:
1. 旁注:同服务器下面的不同WEB应用查询技术(一台服务器下面还有没有其他的网站)(对单个ip进行扫描)
2. C段:同网段下面的不同服务器IP下的WEB应用查询技术(对多个ip进行扫描)
3. 旁注查询网站:https://www.webscan.cc/
10.2 查询IP地址&备案信息
我们在这里查询:www.xiaodi8.com的IP地址及备案信息
查询网站如下:
https://site.ip138.com/xiaodi8.com/whois.htm
10.3 使用nmap进行端口扫描
查询www.xiaodi8.com下所有开设的端口,采用SYN扫描
nmap www.xiaodi8.com -Pn --osscan-limit -sV
参数:
-sV: 指定让Nmap进行服务版本扫描
--osscan-limit: 限制Nmap只对确定的主机的进行OS探测(至少需确知该主机分别有一个open和closed的端口)
-Pn:不进行ping扫描,直接进行端口扫描。(可以绕过对方防火墙设置禁止ICMP Echo请求)
nmap的常用参数:https://blog.csdn.net/java_java_cl/article/details/106276444
10.4 使用masscan进行端口扫描
查询47.75.212.155下指定端口开设的服务:
masscan -p80,21,3306,8888,8080,1433,135 47.75.212.155
查询47.75.212.155下所有开设的服务:
masscan -p1-65535 47.75.212.155
10.5 旁注手段的一些思路/使用旁注网站进行扫描
假设171.40.78.83这台机器下有三个站点:
1. www.123.com
2. www.456.com
3. www.999.com
假设www.123.com是你的目标,但是针对这个站点你并没有什么安全测试的头绪。
这时,你可以把目标聚焦在www.456.com和www.999.com。如果你发现了这两个站点存在漏洞,那么你就可以利用这个漏洞,来攻破这台机器。从而可以安全测试www.123.com。
我们可以利用旁注查询网站来进行扫描www.xiaodi8.com
通过上述内容,我们可以发现:
在这个ip地址下,存在两个站点:
1. www.xiaodi8.com
2. xiaodi8.com
10.6 C段手段的一些思路/使用C段(masscan)进行扫描
假设:
171.40.78.83这台机器下搭建了www.123.com,但是针对这个站点,你并没有什么头绪。
此时,你可以考虑扫描171.40.78.1-171.40.78.255这些机器(跟171.40.78.83属于同一网段)上的所有服务,尝试从这些服务入手。如果你攻破了跟目标机器属于同一网段的机器,那么你就可以利用这台机器尝试对目标进行渗透。
接下来尝试使用masscan进行C段扫描(80、21、3306....端口):
.0代表在子网掩码24位下的这一网段的所有机器
masscan -p80,21,3306,8888,8080 47.75.212.0/24
查询到ip地址后,我们可以通过ip反查域名,来查看跟目标处于同一网段下的站点(机器)的信息。
10.7 CDN服务简单介绍&使用超级ping来判断该站点是否部署了CDN
CDN:内容分发网络,目的是为了将节点的内容缓存到其他节点当中去,以此来提高全国各地乃至给境外用户的访问速度。
例如:源站在北京,部署了CDN,将内容缓存到了国内的其他节点当中。
此时,一个南京的用户去访问www.example.com,此时CDN就会将离南京最近的节点当中的缓存数据给此用户,提高访问速度。
此时,一个北京的用户去访问www.example.com,此时CDN就会将离北京最近的节点当中的缓存数据给此用户,提高访问速度。
此时,一个新疆的用户去访问www.example.com,此时CDN就会将离新疆最近的节点当中的缓存数据给此用户,提高访问速度。
这个CDN对安全测试有着一定的影响,由于节点的存在,所进行安全测试的对象往往是节点而不是源站。
我们可以使用超级ping,来查看某一站点是否采用了cdn。
我们查看:www.baidu.com和www.xiaodi8.com这两个站点是否开启了cdn?
结果不难发现:www.baidu.com 开启了cdn,而www.xiaodi8.com则没有。
多个站点同时ping www.xiaodi8.com,发现IP归属地都是一个地方,此时代表没有开启cdn。
多个站点同时ping www.baidu.com,发现IP归属地都是不同地方,此时代表开启了cdn。
10.8 看图识别WAF&wafw00f识别
看图识别waf参考资料:https://www.cnblogs.com/charon1937/p/13799467.html
使用wafw00f来查看某站点是否存在WAF防火墙?
wafw00f原理:通过给目标站点发送数据包,通过数据包所返回的参数来判定是否存在waf。
10.9 负载均衡识别&lbd
我们使用lbd,来查看www.xiaodi8.com是否存在负载均衡?
lbd www.xiaodi8.com
我们使用lbd,来查看www.baidu.com是否存在负载均衡?
lbd www.baidu.com
负载均衡识别参考资料:https://blog.csdn.net/weixin_43876557/article/details/106398691
11. CDN知识-工作原理及阻碍
11.1 前置知识-用户访问域名的过程
1. 传统访问:用户访问域名->解析服务器ip->访问目标主机
2. 普通CDN: 用户访问域名->CDN节点(缓存)->真实服务器IP->访问目标主机
11.2 阻碍
在CDN这样的情况下,用户访问(安全测试)机器很有可能是CDN节点而非源主机。
12. CDN配置-域名&区域&类型(需要备案)
创建CDN总共有三个要素:
1. 域名
支持域名(www.example.com)和泛域名(*.example.com)。二者区别:只对这一个/这一类域名加速。
2. 业务类型(加速的资源)
可以对视频进行加速、文件、图像、也可以对全站进行加速。
如果对视频进行加速的话,那么我们访问视频的时候,访问的很有可能就是CDN节点。但是,当我们访问图像的时候,就不是了。
3. 加速区域
可以选择:国内和全球和全球仅国外。
如果在国内加速,节点都是国内的(国内用户可以享受加速)。如果在全球加速,节点都是国外和国内的(所有节点均可以享受加速)。如果在全球仅国外加速,节点仅仅是国外的(国外用户可以享受加速)。
3. 源站信息
你的真实服务器ip。
13. CDN绕过-靠谱十余种技战法
13.0 参考资料
绕过CDN方法汇总:https://zhuanlan.zhihu.com/p/33440472
https://www.cnblogs.com/blacksunny/p/5771827.html
通过域名寻找ip: https://get-site-ip.com/
这个网站可以根据域名寻找到ip地址,这个ip地址很大程度上都是真实ip,当然也有例外,需要辩证看待。(不推荐的方法,但是可以作为验证手段)
FuckCDN:https://github.com/boy-hack/w8fuckcdn
13.1 CDN绕过-基于子域名
如果某一台服务器存在两个域名:www.123.com和test.123.com。且只对www.123.com提供了加速(只对子域名www进行加速)。
那么,我们可以对test.123.com进行下手(没有CDN)。
为什么这样可以实现绕过?因为子域名test.123.com很有可能跟主站www.123.com处于同一台机器上(一般子域名极有可能跟主站保持同一ip)。
当然,如果子域名跟主站不是同一台机器(不是同一ip),那么这种方法就失效了。我们可以设置泛域名:*.123.com 来防止基于子域名的CDN绕过。
假设CDN设置了www.sp910.com进行加速。那么我们访问sp910.com其实是没有加速的。除非设置泛域名。
13.1 CDN绕过案例-基于子域名
1. 我们使用超级ping来测试www.sp910.com是否开启了CDN?开启了
2. 再次查看sp910.com是否开启了CDN?结果发现没有,那么这个ip地址就是源站ip。
13.2 CDN绕过-利用网站漏洞-遗留文件(最可靠的方法,但是需要漏洞)
首先说一下遗留文件:如果某一个站点配置了CDN,上面是基于PHP搭建的应用。那么,我们可以通过浏览器去访问phpinfo文件,这个文件中存有该站点php相关的配置信息,包括自身的ip地址(默认是内网)。如果没有内网地址,那么就会将外网地址(真实的源站ip)泄露出去。但是,这种方式仅仅适用于该站点没有内网ip的情况下。
可以通过ssrf漏洞来探测源站的真实ip。(不一定非得是ssrf漏洞,只要该漏洞满足源站主动去请求数据,就可以测试)
假设有一个ssrf漏洞的php脚本,该脚本部署到了服务器A上,该脚本的目的:将远程服务器B的资源加载到这个服务器A中(web页面上)。在这个过程中,实际上是该服务器A主动请求远程服务器B的资源。假设服务器A部署了CDN服务,那么我们可以通过服务器A的ssrf漏洞,自己配置一个远程服务器B,让A请求B的资源,此时在B当中就会有A请求资源的记录(日志),我们可以通过记录来找到服务器A(源站)的ip地址。
上述两个过程都是基于反向连接的原理来进行的。
正向连接:我主动请求一个网站的资源,获得该网站的ip地址。(主动请求)(ping或请求网站 你自己请求的 所以CDN节点)
反向连接:我通过某种手段,让该网站的真实ip地址主动泄露给我。(被动获取)(对方自己的服务器去请求你设置的资源,所以真实ip)
13.3 CDN绕过-历史DNS记录
比如:某网站去年没有对域名进行CDN加速,当用户访问该域名时,就会留下DNS记录(源站)。近年,该网站开通了CDN加速,如果我们可以从历史DNS记录中找到该网站的真实ip(源站ip),就可以进行CDN绕过。
13.4 CDN绕过-社会工程学
你可以通过非技术手段,得到CDN服务商控制面板的账号和密码(站长本人从某平台开通CDN的账号和密码(CDN平台的账号和密码)),这样的话也可以实现CDN绕过。
13.5 CDN绕过-Mx记录和邮件
很多站点都有发送邮件sendmail的功能,如Rss邮件订阅等,而且一般的邮件系统很多都是在内部,没有经过CDN的解析,可在邮件源码里包含服务器的真实ip。(参考:https://zhuanlan.zhihu.com/p/33440472)
其实就是利用反向连接的原理,想办法让对方的邮件服务器给你发送邮件(数据)(找回密码,让对方的邮件服务器给你发送验证码等),你就可以在数据包中获得该服务器的真实ip。
13.6 CDN绕过-国外请求
如果CDN配置的是仅中国内地加速,那么当使用国外ip访问的时候,访问的就是真实(源站)的ip地址。有些站长开通CDN的时候并没有选择对一些偏远的国外地区(非洲)进行加速,因此我们可以利用这一点,通过偏远的国外地区的ip来请求这个网站,进一步获取源站ip。
13.6 CDN绕过案例-国外请求
模拟国外请求的网站ipip:https://www.ipip.net/
cdn查询:https://tools.ipip.net/cdn.html
1. 我们使用国内ip测试一下www.xuexila.com是否开启了CDN?
2. 发现已开启CDN,那么我们使用偏远的国外地区的ip请求一下?发现真实ip。代表:CDN加速并没有在国外的偏远地区。
13.7 CDN绕过-扫描探测(最耗时的方法,不一定正确,可以用来证明IP地址是否正确)
通过某个软件扫描全网的ip地址,设置关键词,推测ip地址范围,绕过CDN,获取某个域名的ip(不一定是真实的)。
我们可以通过FuckCDN这样的脚本,来实现CDN的绕过。
13.8 CDN绕过-网络空间引擎搜索法
我们可以利用类似fofa这样的网络空间搜索平台,来搜索某站点一些小文件的历史痕迹。如果某站点没有对小文件(图片、JS文件等)进行CDN加速的话,我们可以通过历史痕迹来找到源站ip。
13.9 判断源站ip的方法
我们可以通过网站的备案信息来推测源站的ip。(社会工程学)
假设,某一个站点开启了CDN,你获得了两个ip,一个是上海的一个是北京的。
但是,这个站点在北京备的案。因此,这个网站很大概率源站ip就是北京。(不是一定)
14. CDN绑定-HOSTS绑定指向访问
当我们获得了真实ip之后,我们就可以修改windows下的hosts文件(linux下的/etc/hosts文件),使其每次访问站点时,访问的都是源站。
格式: 真实ip 该ip对应的域名
那么,我们之后访问域名的时候,访问的都是真实ip,也就是源站。
15. APP/小程序打点-内在信息收集
内在信息提取指的就是:通过将程序进行反编译,从源代码中寻找相关的信息。(IP地址、域名、关键字、图片、xml配置文件等)
我们可以使用自动化的内在提取工具:AppInfoScanner
也可以手动的使用内在提取工具:IDEA
16. APP打点-外在信息收集
外在信息收集指的就是:使用抓包/封包软件从网络上截取/获取某个软件的信息流,将抓来的数据包进行分析,得到我们想要的信息。
因此,要想对APP/小程序进行完善的信息收集,内在和外在信息收集都要搞。
APP 安卓信息打点入手:
1. 外在-抓包封包-资产安全测试
1.1 外在-功能逻辑的测试
1.2 资源提取-ICON、MD5、Hash-黑暗引擎搜索相关资产
2. 内在-反编译-JAVA代码-代码审计
2.1 内在-反编译-资源提取-黑暗引擎搜索相关资产。
17. APP打点-案例
17.0 参考资料
内在提取工具AppInfoScanner:https://github.com/kelvinBen/AppInfoScanner
安卓修改大师:https://www.apkeditor.cn/
17.1 APP-外在抓包-Fd&茶杯&Burp
这个抓包之前演示过,这里不再赘述。
17.2 APP-外在抓包-封包监听工具
这个封包之前演示过,这里不再赘述。
17.3 APP-内在提取-AppInfoScanner分析
我们在之后的APP章节,再进行讲解。
17.4 APP-内在搜索-反编译载入IDEA-安卓修改大师
我们在之后的APP章节,再进行讲解。
17.5 APP-资源提取-安装包&资源文件
我们可以使用资源提取工具,来提取这个应用涉及到的文字,图片,APK安装包等。
将提取之后的APK安装包可以交给查壳工具来判断这个应用是否有壳。
我们也可以将提取的资源交给类似于fofa这样的网络空间安全引擎,来查看这个资源所关联的资产信息。
17.6 APP-框架使用-Xposed&JustTrustMe&Frida
很多APP都带有壳,带有壳的APP无法进行反编译和抓包。我们需要将APP脱壳之后,才可以进行反编译。
壳可以理解为保护层,开发者为了防止某些人员对这个APP进行逆向破解而设置的。
我们可以使用查壳工具,来查看APP是否带有壳。
Xposed框架的作用就是用来对带壳的应用进行脱壳,以便于进行反编译/逆向工作。
关于Xposed的演示,这里先不说明。
18. 项目/红队工具篇
18.1 网络空间四大引擎
- Fofa:https://fofa.info/
- 更方便的fofa:https://github.com/wgpsec/fofa_viewer
- fofa_viewer支持对fofa搜索出来的信息进行提取,方便进行批量化安全测试,强力推荐!
- Quake:https://quake.360.net/quake/#/index
- Shodan:https://www.shodan.io/
- Zoomeye:https://www.zoomeye.org/
- 常见的资产探测工具(黑暗引擎集成项目):
- SeeBug:https://www.seebug.org/(通过该平台可以知道最新提交的漏洞和网络安全的paper)
18.2 自动化信息搜集项目
- ARL灯塔:https://github.com/TophantTechnology/ARL
- Suize水泽(推荐!):https://github.com/0x727/shuiZe_0x727
- Kunyu坤舆(基于Zoomeye引擎和SeeBug):https://github.com/knownsec/Kunyu?tab=readme-ov-file
18.3 单点功能信息收集项目
- 企查
- 企查查
- 水泽
- ENScan_GO:https://github.com/wgpsec/ENScan_GO
- 子域名
- OneForAll:https://github.com/shmilylty/OneForAll
- 指纹识别
- Finger
更多单点功能信息收集工具,我们可以通过棱角进一步的查看和使用。
致谢
https://www.bilibili.com/video/BV1pQ4y1s7kH/?spm_id_from=333.1007.top_right_bar_window_custom_collection.content.click
免责声明
本博客中的内容仅供学习之用,不用于商业用途,也不可以用于任何非法用途,否则后果自负,本人不承担任何责任!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!