写在前面:视频地址
成功上岸360!0基础网络安全 入行 到 入yu、漏洞挖掘-外网渗透测试流程
目录
一、导读:
二、汇总:
三、知识导图
四、面试常见问题
五、渗透测试流程
1、简述:
2、寻找测试目标
3、信息收集
3、漏洞挖掘
4、漏洞利用获得webshell
一、导读:
探索技术的尖端——攻防武器实验室
"走一遍外网渗透测试流程"
我们算不算一家人
二、汇总:
工作总结 / SUMMARY
外网渗透测试流程 | 涉及实验 |
确定攻击目标 | 实验1-7 |
信息收集 | 实验8-12 |
漏洞挖掘 | 实验13 |
漏洞利用--->获取到webshell | 实验14 |
三、知识导图
四、面试常见问题
1、外网渗透测试的基本思路?
确定攻击目标--->信息收集--->漏洞挖掘--->漏洞利用--->获取到webshell
(每一项都展开来介绍一下)
2、自己平常是如何对漏洞进行挖掘的?
供应商--->开发厂商的官网--->案例
目标--->该目标的所有可供测试站点
复现已知漏洞--->确定漏洞站点特征--->寻找相同特征站点
代码审计
(每一项具体展开说说,并讲解一些经验+案例)
3、获取到网站权限的方法有哪些?
利用文件上传漏洞上传webshell、获取到管理员权限,再通过各种后台功能,在后台写入webshell、利用xpcmd生产webshell、数据库的压缩功能、通过数据库备份或修改功能被修改后缀的webshell文件、数据库命令执行、中间件漏洞等。
五、渗透测试流程
1、简述:
中华人民共和国网络安全法_百度百科 (baidu.com)
根据《中华人民共和国网络安全法》对网站进行渗透测试需要获得客户的授权,未授权的对一个网站进行渗透测试,属于违法行为。
一张流程图,带大家了解,什么是大家常常说的挖洞---即所谓的外网渗透测试
大体的流程看起来是不是特别的简单,只有简单四步,就能拿到一个网站的webshell(即管理者权限),但是每一步,都需要我们去了解详细的操作方法。
寻找目标、信息收集、漏洞挖掘、漏洞利用获得webshell这些步骤,我们都会在后面进行详细的讲解,本结课视频,带领大家来了解一下挖洞,即所谓的外网渗透测试的一个具体流程究竟是什么样的
确定目标--->信息收集--->漏洞挖掘--->漏洞利用--->获得webshell
2、寻找测试目标
一、寻找测试目标
黑盒测试----模拟黑客攻击的场景(也就是什么都不知道)
1、从产品的供应商入手:
供应商--->案例
通过寻找提供产品、开发等服务的这些厂商,然后在他们的官网去寻找相关的使用产品的案例,然后收集这些案例,对这些案例进行测试,在某一处寻找到漏洞,则其他产品也可能存在同样的漏洞,就可以作为漏洞poc进行跑了
实验1:
接下来,我们找几个服务厂商,我们就单纯的进去看一下他的产品怎么样,此处不做任何未授权的非法测试与攻击,强调说明如个人进行攻击与测试与本结课无关。
(注:此处只对功能进行一个简单的展示,并未进一步进行实际的测试与攻击)
可以在edusrc上查看有哪些开发厂商(edusrc一般教育、政府使用的产品和解决方案)
https://src.sjtu.edu.cn/rank/company/
然后去搜开发厂商的官网,就可以找到对应的产品案例
2、从单一的目标入手:
目标--->该目标的所有可供测试站点
1)同一单位
有时候,我们会对一个企业或某单位,进行一个授权的测试,此时,我们就需要收集这个企业或单位的更多资产目标(如网站、小程序、app等),为我们进行测试提供更大的测试范围
实验2:
确定目标--->锁定目标资产的攻击面
(注:此处只对功能进行一个简单的展示,并未进一步进行实际的测试与攻击)
我们随机确定一个目标,然后进行深度搜索,这一个目标单位的资产、信息等。
2)不同单位
实验3:
确定漏洞站点特征--->寻找相同特征站点
我们可以通过Ctrl+U查看存在漏洞站点的前端的源码,然后多找几条有用的特征,比如引用的一些路径等等,此处以引用相同的路径为例
然后使用FOFA等平台进行检索有相同特征的站点(需要注意的是,搜索的特征不同,找到的站点的差别就会有很大差异,通过此方法需要大量的测试)
——————————
3、从存在漏洞中间件入手:
1)寻找是否存在已知漏洞
当我们发现一个网站使用的中间件以后,可以查看此中间件是否存在漏洞
实验4:
通过使用扫描器,或者插件,可以看见使用的jquery的是1.8.3版本
(注:未使用扫描器,或其他危害产品安全的测试技术)
然后我们可以在网上、漏洞平台上去查找是否存在对应版本的漏洞
https://www.cnvd.org.cn/flaw/list?flag=true
https://avd.aliyun.com/search?q=jquery1.8.3
https://www.vulhub.org.cn/vulns?search_type=t_id&keyword=jquery1.8.3&cvss_floor=&cvss_ceil=&pubtime_floor=&pubtime_ceil=
2)通过已知版本漏洞,测试对应的版本
实验5:
接下来我们拿jQuery进行举例,
jQuery是JavaScript库,JavaScript常被利用进行xss,导致XSS跨站漏洞
通过找到对应版本的poc,对对应的版本进行批量测试
(注:此处只对功能进行一个简单的展示,并未进一步进行实际的测试与攻击)
可自行寻找到大量的对应版本进行测试
——————————
白盒测试---已知源代码及其逻辑架构的情况下进行漏洞的挖掘
3、代码审计
白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。 "白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
而网络安全中,白盒测试,其盒子内部的东西就相当于 完整代码+逻辑结构
通过对每一处代码的逻辑结构进行测试,来寻找所谓的程序缺陷、或绕过程序防护的方法等
1)前端代码
实验6:
我们随便找一个站点,有人说查看页面源代码是不是就是进行代码审计了,这里的源码属于客户端的源码,有的漏洞可能由客户端漏洞引起,如xss可能会传到客户端的相关函数进行弹窗。一般逻辑处理都是在后端进行,但是不排除前端会有过滤等处理。
(注:此处只对功能进行一个简单的展示,并未进一步进行实际的测试与攻击)
F12、Ctrl+Shift+I
(是可以动态调试的)
比说搜索一些可能触发漏洞的函数
Ctrl+U
(静态代码)
实验7:
此处拿upload-labs靶场为例,此时界面,我们上传会提示上传失败,这是属于一种黑盒测试,显示源码后,属于白盒测试,这里的源码是逻辑处理的代码。
通过分析代码可以发现,代码会过过滤上传的相关后缀,指定的后缀是无法上传成功的。
黑盒:
白盒:
这是一个很简单明了的代码,可以看出包含对上传文件的黑名单处理(array
数组中包含的黑名单列表),上传文件的处理(如注释所示)
https://blog.csdn.net/qq_53079406/article/details/125846616
未去空格,绕过黑名单
3、信息收集
1)基础信息收集
信息收集的目的--->扩大攻击面+获取可利用条件
通过收集如图所示信息+更多其他信息,从而完成对一个测试目标的完整拼图
在确定的测试的目标以后,对目标进行信息收集,其中包括一些常见的收集方法,比如说对目标的资产等相关信息进行一个收集,从而可以扩大攻击的层面(如网站、小程序、app等各种可以进行测试的资产)。
还有域名信息的一个收集,我们可以获取到需要测试站点的一个注册信息、邮件、端口服务等更多有用的信息
还有的时候,我们需要对站点的相关组件架构、第三方插件进行收集,寻找可以利用的突破点。
在进行信息收集的过程中,我们需要借助大量的工具进行测试,获取到最大的信息量,同时我们也会使用到一些综合信息搜集工具,如灯塔、水泽、Goby等
——————————
——————————
1)特定信息收集
实验8:
在进行测试的过程中,我们还需要了解到每个参数所代表的意义+逻辑的流程,从而能够完全理解整个业务逻辑
实际情况中
接下来,我们友好的拦截一个请求数据包,观看其数据包
(注:未进行任何测试与攻击)
——————————
——————————
2)基础信息收集
1、域名信息收集:
对于域名相关信息的收集,如URL的收集:为了锁定目标范围、……(知识导图上内容)
信息收集是在整个攻击测试的流程中,不断完善获取信息的重要一步,在每一次的进一步测试中,我们会获取到更多的有利于我们对目标的一个了解。
实验9:
御剑目录爆破工具,收集更多的URL,从而扩大攻击面
(注:此处只对功能进行一个简单的展示,并未进一步进行实际的测试与攻击)
找个企业src(本着为企业发展做贡献的,无直接恶意攻击与测试)
打开,并简单进行一个配置
输入目标URL
开始挖掘
——————————
——————————
2、资产信息收集:
对于资产信息的收集,如敏感信息:我们可以获取到一些可以利用的有利条件,……(如知识导图所示)。
实验10:
接下来,我们来举例一下代码泄露常用的平台,在Github等托管平台上,我们可以获取到很多的代码源程序,这些代码可能被网站拿被作为一部分的逻辑代码段。使用github我们也可能搜索到很多有用的信息,比如搜索很敏感的一些信息。
(注:此处只对功能进行一个简单的展示,并未进一步进行实际的测试与攻击)
Repositories存储库
Code代码
Commits提交
Lssues问题
Discussions讨论
Package包
Marketpalce市场
Topics主题
Wikis维基
Users用户
Language语言
大家可想而知,我们不仅可以在代码托管平台上搜索到敏感代码段,我们还有搜索到相关的一些比较敏感的数据,如学号、姓名等等
——————————
——————————
3、框架组件:
对于框架组件的收集,如服务器操作系统:通过我们获取到的网站操作系统类型,从而进使用特定的命令和针对性的漏洞检测,……(如知识导图所示)。
实验11:
通过一些常用的浏览器插件、检测工具,对于站点的框架、语言等进行一个检测
(注:此处只对功能进行一个简单的展示,并未进一步进行实际的测试与攻击)
Wappalyzer
Owasp penetration Testing Kit
——————————
——————————
4、综合信息收集:
在我们使用一些单一的信息收集工具、手工测试以后,我们需要使用到一些综合的信息收集工具,全方面的进行信息收集,同时可能会有一个自带的漏洞检测功能。
实验12:
接下来,我们来简单的演示一下(在信息收集篇章,我们会详细讲述,收集方法、工具使用等更多细节操作,此处我们就进行一个简单的模拟测试),灯塔资产收集工具,安装在kali虚拟机上,通过相关的设定后,我们就可以针对性的收集到一些资产的信息
(注:此处只对功能进行一个简单的展示,并未进一步进行实际的测试与攻击)
可以使用灯塔进行信息收集
3、漏洞挖掘
三、漏洞挖掘
在我们确定了目标的资产、并收集到了尽可能多的信息后,我们要对我们收集到的攻击面,进行漏洞的挖掘,需要可能存在的突破点
(在后面漏洞章节,我们会对每一项漏洞进行讲解,此处,我们只对外网渗透测试的一个流程进行讲解)
SQL注入漏洞
XXE漏洞漏洞
命令注入漏洞
远程代码执行漏洞
目录遍历漏洞
信息泄露漏洞
访问控制漏洞
身份认证漏洞
文件上传漏洞
文件解析漏洞
SSRF服务端请求伪造
业务逻辑漏洞
XSS跨站脚本漏洞
CSRF跨站请求伪造
CORS跨域资源共享漏洞
点击劫持漏洞
网络套接字WebSockets漏洞
在后面,我们会学习每种漏洞详细的原理、成因、适用条件、检测方法、利用手法等等
实验13:
此处以简单的BP练兵场的sql注入漏洞为例,来进行一个漏洞挖掘过程的讲解
Sql注入漏洞
针对性的对SQL注入漏洞,进行检测,无非就是先检测是否存在注入点
未经授权访问敏感数据
1、检索隐藏数据,在其中修改 SQL 查询以返回其他结果。
2、颠覆应用程序逻辑,在其中更改查询以干扰应用程序的逻辑。
3、UNION 攻击,在其中从不同的数据库表中检索数据。
4、检查数据库,在其中提取有关数据库版本和结构的信息。
5、盲 SQL 注入,控制的查询结果不会在应用程序的响应中返回
首先我们进入到学院--->学习路径--->sql注入漏洞--->进入实验室
这是一个根据过滤器来控制分类,然后进行数据的一个检索
筛选:
https://0a050005033f360282e6a17a00420055.web-security-academy.net/filter?category=Gifts
输入单引号报错,说明单引号被带入到了数据库语法中进行执行,所以是存在注入点的
注释后面逻辑:
把分类后面的内容注释调了,出现了新的产品,说明还有一个参数来控制产品是否是隐藏或公开
https://0a050005033f360282e6a17a00420055.web-security-academy.net/filter?category=Gifts'--
利用获取数据:
使用OR连接词,只要有一个成立,就返回所有数据,or后加上1=1是恒成立的
https://0a050005033f360282e6a17a00420055.web-security-academy.net/filter?category=Gifts'+or+1=1--
4、漏洞利用获得webshell
四、漏洞利用获得webshell
漏洞分低危、中危、高危、严重,因为根据危害程度的不同,可能获取到信息的危害性及数量、还有权限等等的不同,会导致漏洞的危害程度有所不同。
如常见的文件上传漏洞,通过文件上传漏洞,上一句话木马文件,并被解析执行,然后通过连接,获取到网站的控制权限
还有的方法如:获取到管理员权限,然后通过后台的功能,上传或写入或解压webshell代码文件、利用xpcmd生成webshell、数据库的压缩功能、数据库的备份或修改功能,是重命名的webshell文件重新变成webshell可执行后缀、数据库命令执行来写入、利用一些中间件漏洞等
实验14:
文件上传漏洞,通过文件的上传功能,上传木马代码文件,然后使用工具连接到木马代码文件,从而获取到网站的管理权限(即webshell)
通过将木马后门上传到对方的服务器上,并解析执行
然后再通过后门工具进行连接,从而实现一个对站点的管理权限
获得站点的webshell的方法还有很多,可以先通过获取到管理员权限得到更多执行权限,再写入、传入webshell代码文件。
访问控制漏洞(如未授权访问到管理员的一个操作页面,或者绕过权限的鉴别,从而拥有管理员的权限)
弱口令(管理员账号存在弱口令,则可以再进行更多的更高权限的功能点的测试)
密码重置(重置管理员的密码,或重置后直接跳转获取到更多的一个接口,从而拥有更多的测试条件)
还有更多方法都可以获取到网站的webshell,这里就不一一详讲解了