小白私服~网络安全渗透测试详细步骤汇总~

渗透测试是一项在计算机系统上进行的授权模拟攻击,旨在对其安全性进行评估,是为了证明网络防御按照预期计划正常运行而提供的一种机制。渗透测试并没有一个标准的定义,但国外一些安全组织达成共识的通用说法是:渗透测试是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法。
渗透测试的过程包括对系统的任何弱点、技术缺陷或漏洞的主动分析,这个分析是从一个攻击者可能存在的位置来进行的,并且从这个位置有条件主动利用安全漏洞。渗透测试人员会在不同的位置(比如从内网、从外网等位置)利用各种手段对某个特定网络进行测试,以期发现和挖掘系统中存在的漏洞,然后输出渗透测试报告,并提交给网络所有者。
渗透测试的方法多种多样,包括使用扫描工具来扫描目标网络,发现潜在的漏洞和开放的端口;进行社会工程学攻击,如采用钓鱼邮件、假冒电话或伪造身份等方式来诱骗人们透露敏感信息;利用系统或应用程序中已知的漏洞来获取未授权的访问权限;尝试破解系统的密码以获取管理员或用户的账户信息;以及进行漏洞扫描来发现潜在漏洞等。
系统渗透测试的主要目标是发现系统中存在的安全漏洞和隐患,为系统加固和修复提供依据。通过模拟真实的攻击场景,渗透测试能够评估系统的安全性,并提供有针对性的安全建议,帮助组织提高系统的安全防御能力。
需要注意的是,系统渗透测试是一项需要专业技能和经验的工作,必须由专业的安全团队或机构来进行。同时,在进行渗透测试时,必须遵守相关的法律法规和道德准则,确保测试的合法性和合规性。
系统渗透测试的过程通常包括以下几个步骤:

  1. 确定测试目标和范围:明确测试的对象(如特定的网络、服务器、应用程序等)以及测试的具体范围。
  2. 信息收集:使用各种手段(如主动扫描、开放搜索等)来收集目标系统的信息,包括IP地址、域名、开放端口、应用服务等。
  3. 漏洞探测:利用已知的系统漏洞、应用漏洞、配置错误等,尝试对目标系统进行攻击,并探测其安全状况。
  4. 漏洞验证:将发现的潜在漏洞进行验证,确认其是否真实存在并可以被利用。
  5. 渗透攻击:通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全。
  6. 报告编写:将测试过程、发现的问题以及修复建议编写成详细的测试报告,提交给相关人员或组织。
一、明确目标
​1.确定范围:测试目标的范畴、ip、网站域名、内外网、检测帐户。
2.确定标准:能渗入到何种程度,所花费的时间、能不能改动提交、能不能漏洞利用。
3.确定要求:web应用的漏洞、业务逻辑漏洞、工作人员管理权限管理漏洞。
二、安全渗透测试要求
1、XSS跨站脚本漏洞
系统程序没有对用户提交的变量中的代码进行过滤或转换,在用户输入页面可插入 JavaScript、 Active等恶意脚本。 
2、SQL注入漏洞
系统的应用服务器端对SQL语句中使用的特殊字符“;”、“--”和“and”、“or”等未做过滤,并且允许其向数据库系统提交。
3、明文传输漏洞
对系统用户口令等机密信息的保护不足,攻击者可以利用攻击工具,从网络上窃取合法用户的口令数据,从而登录系统执行非法操作。
4、越权访问漏洞 
目前存在着两种越权操作类型:横向越权操作和纵向越权操作。前者指的是攻击者尝试访问与他拥有相同权限的用户的资源;而后者指的是一个低级别攻击者尝试访问高级别用户的资源。
5、明文存储
对系统用户口令等机密信息的存储保护不足,导致攻击者可以获取系统的访问权限。
6、敏感信息泄露漏洞
系统暴露系统内部信息,如网站绝对路径、网页源代码、SQL语句、中间件版本和程序异常等信息。
7、后台泄露漏洞
后台地址过于简单地址泄露或者默认后台,为攻击者攻击系统提供便利。攻击者可以通过弱口令或默认用户密码等方式进入后台,对系统造成危害。
8、会话重放攻击
不断恶意或欺诈性地重复一个有效的数据包,重放攻击。攻击者可以拦截并重复发该数据到服务端,服务器端未对用户提交的数据包重放进行有效限制。如:可以抓取HTTP包固定账号破解密码、固定密码破解账号和重放提交投票数据包。9、
9、中间件漏洞
使用不安全的http方法和IIS文件枚举漏洞
10、设计缺陷/逻辑错误
程序都是通过逻辑实现各种丰富多彩的功能的,要实现这些功能,必须掌握大量的技巧并进行周密的安排。但是,有很多情况这些功能逻辑存在缺陷,比如程序员的安全意识,比如考虑问题不周全等。即使是最简单的web应用程序,每个阶段都会执行大量的逻辑操作。如:可以重复建立用户名相同的用户;不同浏览器中未验证会话有效性。
11、不安全的cookie
cookies中包含有用户名或者密码等敏感信息,攻击者截取到cookies后可为攻击提供便利,若获取到用户密码可直接登录到系统中。
12、SSRF漏洞
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。
13、SSL3.0漏洞
SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。SSL常会爆出一些漏洞,如:心脏滴血漏洞等。
14、CSRF(跨站请求伪造)
跨站请求伪造(Cross-Site Request Forgery,CSRF)是一种使已登录用户在不知情的情况下执行某种动作的攻击。因为攻击者看不到伪造请求的响应结果,所以CSRF攻击主要用来执行动作,而非窃取用户数据。当受害者是一个普通用户时,CSRF可以实现在其不知情的情况下转移用户资金、发送邮件等操作;但是如果受害者是一个具有管理员权限的用户时CSRF则可能威胁到整个Web系统的安全。
15、命令执行漏洞
当应用需要调用一些外部程序去处理内容的情况下,就会用到一些执行系统命令的函数。如PHP中的system、exec、shell_exec等,当用户可以控制命令执行函数中的参数时,将可以注入恶意系统命令到正常命令中,造成命令执行攻击;另一种是由于漏洞而造成的命令执行(如:struts2、weblogic命令执行)
16、上传漏洞
系统对上传的文件类型没有进行验证,在应用系统的运营过程中,不可避免地要对网站的某些页面或者内容进行更新,这时便需要使用到网站的文件上传的功能。如果不对被上传的文件进行限制或者限制被绕过,该功能便有可能会被利用于上传可执行文件、脚本到服务器上,进而进一步导致服务器沦陷。
17、任意文件包含
任意文件包含,系统对传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入,导致恶意攻击者可以利用该缺陷读取服务器上指定文件
18、任意文件下载
任意文件下载,系统提供文件下载功能,但未对下载文件名进行限制,可下载任意文件。
19、目录遍历
目录遍历漏洞会将站点的目录暴露在攻击者眼前,攻击者可以从这些目录得知当前站点的信息,如开发语言、站点结构和数据库文件等信息。
20、溢出攻击漏洞
系统的客户端和服务器端对输入数据的字符长度未做检查,提交超长数据后,服务器端会出现异常错误,可能导致缓冲区溢出或拒绝服务攻击等安全问题。
21、XML实体注入
XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。当允许引用外部实体时,通过构造恶意内容,可导致读取任意文件、执行系统命令、探测内网端口、攻击内网网站等危害。
22、检测存在风险的无关服务和端口
检测存在风险的无关服务和端口,为攻击者攻击提供便利
23、登录功能验证码漏洞
不断恶意或欺诈性地重复一个有效的数据包,重放攻击攻击者可以拦截并重复发该数据到服务端,服务器端未对用户提交的数据包重放进行有效限制,造成会话重放攻击。如:
固定账号破解密码、固定密码破解账号。验证码机制可以有效的解决会话重放攻击,但是验证码机制存在漏洞,会话重放攻击漏洞就仍然存在。
24、系统默认口令/弱口令
应用系统存在默认口令/弱口令。
三、渗透测试具体流程细分
1、系统域名、IP、端口
系统域名信息查询:信息可用于后续渗透操作。
系统IP信息查询:确认系统域名对应IP,确认IP是否真实,确认通信是否正常。
服务端口信息查询:NMap扫描,确认是否开放服务端口。
发现:一共开放两个外网端口,8075为web访问端口,3380为windows远程登陆端口,嘿嘿嘿,试一下。
发现:是Windows Server 2003系统,OK,到此为止。
2、指纹识别方式
其实就是网站的信息。比如通过可以访问的资源,如网站首页,查看源代码,分析代码信息:
看看是否存在文件遍历的漏洞(如图片路径,再通过…/遍历文件)
是否使用了存在漏洞的框架(如果没有现成的就自己挖)
漏洞扫描方式
1、服务主机扫描
Nessus
经典主机漏扫工具,看看有没有CVE漏洞:
2、网站Web扫描
AWVS(Acunetix | Website Security Scanner)扫描器

**PS:web扫描器可能会对网站构成伤害,小心谨慎使用。
渗透测试
1、密码弱口令漏洞
漏洞描述
目标网站管理入口(或数据库等组件的外部连接)使用了容易被猜测的简单字符口令、或者是默认系统账号口令。
渗透测试
① 如果不存在验证码,则直接使用相对应的弱口令字典使用burpsuite 进行爆破
② 如果存在验证码,则看验证码是否存在绕过、以及看验证码是否容易识别
风险评级:高风险
安全建议
① 默认口令以及修改口令都应保证复杂度,比如:大小写字母与数字或特殊字符的组合,口令长度不小于8位等
② 定期检查和更换网站管理口令
2、文件下载(目录浏览)漏洞
文件漏洞描述
一些网站由于业务需求,可能提供文件查看或下载的功能,如果对用户查看或下载的文件不做限制,则恶意用户就能够查看或下载任意的文件,可以是源代码文件、敏感文件等。
渗透测试
① 查找可能存在文件包含的漏洞点,比如js,css等页面代码路径
② 看看有没有文件上传访问的功能
③ 采用…/来测试能否夸目录访问文件
风险评级:高风险
安全建议
① 采用白名单机制限制服务器目录的访问,以及可以访问的文件类型(小心被绕过)
② 过滤【./】等特殊字符
③ 采用文件流的访问返回上传文件(如用户头像),不要通过真实的网站路径。
示例: tomcat:默认关闭路径浏览的功能:
listings false
3、服务任意文件上传漏洞
漏洞描述
目标网站允许用户向网站直接上传文件,但未对所上传文件的类型和内容进行严格的过滤。
渗透测试
① 收集网站信息,判断使用的语言(PHP,ASP,JSP)
② 过滤规则绕过方法:文件上传绕过技巧
风险评级:高风险
安全建议
① 对上传文件做有效文件类型判断,采用白名单控制的方法,开放只允许上传的文件型式;
② 文件类型判断,应对上传文件的后缀、文件头、图片类的预览图等做检测来判断文件类型,同时注意重命名(Md5加密)上传文件的文件名避免攻击者利用WEB服务的缺陷构造畸形文件名实现攻击目的;
③ 禁止上传目录有执行权限;
④ 使用随机数改写文件名和文件路径,使得用户不能轻易访问自己上传的文件。
4、命令注入漏洞
漏洞描述
目标网站未对用户输入的字符进行特殊字符过滤或合法性校验,允许用户输入特殊语句,导致各种调用系统命令的web应用,会被攻击者通过命令拼接、绕过黑名单等方式,在服务端运行恶意的系统命令。
渗透测试
风险评级:高风险
安全建议
① 拒绝使用拼接语句的方式进行参数传递;
② 尽量使用白名单的方式(首选方式);
③ 过滤危险方法、特殊字符,如:【|】【&】【;】【'】【"】等
5、SQL注入漏洞
漏洞描述
目标网站未对用户输入的字符进行特殊字符过滤或合法性校验,允许用户输入特殊语句查询后台数据库相关信息
渗透测试
① 手动测试:判断是否存在SQL注入,判断是字符型还是数字型,是否需要盲注
② 工具测试:使用sqlmap等工具进行辅助测试。
http://192.168.1.70:8075/modules/order/OrderInfo uni||on sel||ect database(),version(),user(),4#
可以看到结果:
风险评级:高风险
安全建议
① 防范SQL注入攻击的最佳方式就是将查询的逻辑与其数据分隔,如Java的预处理,PHP的PDO
② 拒绝使用拼接SQL的方式
6、跨站脚本漏洞
漏洞描述
当应用程序的网页中包含不受信任的、未经恰当验证或转义的数据时,或者使用可以创建 HTML或JavaScript 的浏览器 API 更新现有的网页时,就会出现 XSS 缺陷。XSS 让攻击者能够在受害者的浏览器中执行脚本,并劫持用户会话、破坏网站或将用户重定向到恶意站点。
三种XSS漏洞:
① 存储型:用户输入的信息被持久化,并能够在页面显示的功能,都可能存在存储型XSS,例如用户留言、个人信息修改等。
② 反射型:URL参数需要在页面显示的功能都可能存在反射型跨站脚本攻击,例如站内搜索、查询功能。
③ DOM型:涉及DOM对象的页面程序,包括:document.URL、document.location、document.referrer、window.location等
渗透测试
存储型,反射型,DOM型
风险评级:高风险
安全建议
① 不信任用户提交的任何内容,对用户输入的内容,在后台都需要进行长度检查,并且对【<】【>】【“】【'】【&】等字符做过滤
② 任何内容返回到页面显示之前都必须加以html编码,即将【<】【>】【”】【'】【&】进行转义。
7、跨站请求伪造漏洞
漏洞描述
CSRF,全称为Cross-Site Request Forgery,跨站请求伪造,是一种网络攻击方式,它可以在用户毫不知情的情况下,以用户的名义伪造请求发送给被攻击站点,从而在未授权的情况下进行权限保护内的操作,如修改密码,转账等。
渗透测试
风险评级:中风险(如果相关业务极其重要,则为高风险)
安全建议
① 使用一次性令牌:用户登录后产生随机token并赋值给页面中的某个Hidden标签,提交表单时候,同时提交这个Hidden标签并验证,验证后重新产生新的token,并赋值给hidden标签;
② 适当场景添加验证码输入:每次的用户提交都需要用户在表单中填写一个图片上的随机字符串;
③ 请求头Referer效验,url请求是否前部匹配Http(s)😕/ServerHost
④ 关键信息输入确认提交信息的用户身份是否合法,比如修改密码一定要提供原密码输入
⑤ 用户自身可以通过在浏览其它站点前登出站点或者在浏览器会话结束后清理浏览器的cookie;
8、内部后台地址暴露
漏洞描述
一些仅被内部访问的地址,对外部暴露了,如:管理员登陆页面;系统监控页面;API接口描述页面等,这些会导致信息泄露,后台登陆等地址还可能被爆破。
渗透测试
① 通过常用的地址进行探测,如login.html,manager.html,api.html等;
② 可以借用burpsuite和常规页面地址字典,进行扫描探测
风险评级:中风险
安全建议
① 禁止外网访问后台地址
② 使用非常规路径(如对md5加密)
9、信息泄露漏洞
漏洞描述
① 备份信息泄露:目标网站未及时删除编辑器或者人员在编辑文件时,产生的临时文件,或者相关备份信息未及时删除导致信息泄露。
② 测试页面信息泄露:测试界面未及时删除,导致测试界面暴露,被他人访问。
③ 源码信息泄露:目标网站文件访问控制设置不当,WEB服务器开启源码下载功能,允许用户访问网站源码。
④ 错误信息泄露:目标网站WEB程序和服务器未屏蔽错误信息回显,页面含有CGI处理错误的代码级别的详细信息,例如SQL语句执行错误原因,PHP的错误行数等。
⑤ 接口信息泄露:目标网站接口访问控制不严,导致网站内部敏感信息泄露。
渗透测试
① 备份信息泄露、测试页面信息泄露、源码信息泄露,测试方法:使用字典,爆破相关目录,看是否存在相关敏感文件
② 错误信息泄露,测试方法:发送畸形的数据报文、非正常的报文进行探测,看是否对错误参数处理妥当。
③ 接口信息泄露漏洞,测试方法:使用爬虫或者扫描器爬取获取接口相关信息,看目标网站对接口权限是否合理
风险评级:一般为中风险,如果源码大量泄漏或大量客户敏感信息泄露。
安全建议
① 备份信息泄露漏洞:删除相关备份信息,做好权限控制
② 测试页面信息泄露漏洞:删除相关测试界面,做好权限控制
③ 源码信息泄露漏洞:做好权限控制
④ 错误信息泄露漏洞:将错误信息对用户透明化,在CGI处理错误后可以返回友好的提示语以及返回码。但是不可以提示用户出错的代码级别的详细原因
⑤ 接口信息泄露漏洞:对接口访问权限严格控制
10、失效的身份认证
漏洞描述
通常,通过错误使用应用程序的身份认证和会话管理功能,攻击者能够破译密码、密钥或会话令牌, 或者利用其它开发缺陷来暂时性或永久性冒充其他用户的身份。
渗透测试
① 在登陆前后观察,前端提交信息中,随机变化的数据,总有与当前已登陆用户进行绑定的会话唯一标识,常见如cookie
② 一般现在网站没有那种简单可破解的标识,但是如果是跨站认证,单点登录场景中,可能为了开发方便而简化了身份认证
风险评级:高风险
安全建议
① 使用强身份识别,不使用简单弱加密方式进行身份识别;
② 服务器端使用安全的会话管理器,在登录后生成高度复杂的新随机会话ID。会话ID不能在URL中,可以安全地存储,在登出、闲置超时后使其失效。
11、失效的访问控制
漏洞描述
未对通过身份验证的用户实施恰当的访问控制。攻击者可以利用这些缺陷访问未经授权的功能或数据,例如:访问其他用户的帐户、查看敏感文件、修改其他用户的数据、更改访问权限等。
渗透测试
① 登入后,通过burpsuite 抓取相关url 链接,获取到url 链接之后,在另一个浏览器打开相关链接,看能够通过另一个未登入的浏览器直接访问该功能点。
② 使用A用户登陆,然后在另一个浏览器使用B用户登陆,使用B访问A独有的功能,看能否访问。
风险评级:高风险
安全建议
① 除公有资源外,默认情况下拒绝访问非本人所有的私有资源;
② 对API和控制器的访问进行速率限制,以最大限度地降低自动化攻击工具的危害;
③ 当用户注销后,服务器上的Cookie,JWT等令牌应失效;
④ 对每一个业务请求,都进行权限校验。
12、安全配置错误
漏洞描述
应用程序缺少适当的安全加固,或者云服务的权限配置错误。
① 应用程序启用或安装了不必要的功能(例如:不必要的端口、服务、网页、帐户或权限)。
② 默认帐户的密码仍然可用且没有更改。
③ 错误处理机制向用户披露堆栈跟踪或其他大量错误信息。
④ 对于更新的系统,禁用或不安全地配置最新的安全功能。
⑤ 应用程序服务器、应用程序框架(如:Struts、Spring、ASP.NET)、库文件、数据库等没有进行相关安全配置。
渗透测试
先对应用指纹等进行信息搜集,然后针对搜集的信息,看相关应用默认配置是否有更改,是否有加固过;端口开放情况,是否开放了多余的端口;
风险评级:中风险
安全建议
搭建最小化平台,该平台不包含任何不必要的功能、组件、文档和示例。移除或不安装不适用的功能和框架。在所有环境中按照标准的加固流程进行正确安全配置。
13、使用含有已知漏洞的组件
漏洞描述
使用了不再支持或者过时的组件。这包括:OS、Web服务器、应用程序服务器、数据库管理系统(DBMS)、应用程序、API和所有的组件、运行环境和库。
渗透测试
① 根据前期信息搜集的信息,查看相关组件的版本,看是否使用了不在支持或者过时的组件。一般来说,信息搜集,可通过http返回头、相关错误信息、应用指纹、端口探测(Nmap)等手段搜集。
② Nmap等工具也可以用于获取操作系统版本信息
③ 通过CVE,CNVD等平台可以获取当前组件版本是否存在漏洞
风险评级:按照存在漏洞的组件的安全风险值判定当前风险。
安全建议
① 移除不使用的依赖、不需要的功能、组件、文件和文档;
② 仅从官方渠道安全的获取组件(尽量保证是最新版本),并使用签名机制来降低组件被篡改或加入恶意漏洞的风险;
③ 监控那些不再维护或者不发布安全补丁的库和组件。如果不能打补丁,可以考虑部署虚拟补丁来监控、检测或保护。
本文主要基于渗透测试场景,阐述渗透测试中的一些技巧和方法,文中仅仅选取了部分漏洞作为演示,该测试中实际包含的漏洞步骤超过10多个,有需要者可以按照本文中的步骤去慢慢挖掘。
系统安全是软件系统质量模型中的重要指标之一,网络漏洞和普通缺陷的区别在于普通的缺陷一般造成的是功能的失效,从而导致用户使用存在困难或者用户无法使用,而网络安全漏洞则可能是在用户无感知的情况下,被有心人进行利用,从而导致用户数据,公司机密等重要信息的泄露,或者服务器或个人设备整个被转成肉鸡,为攻击者的攻击提供便利和掩护。网络安全漏洞不需要多,一个就行,因此系统在研发开始就需要将网络安全引入,目前国内安全形式严峻,各行业都在注重安全防控,现在流行的称谓是安全左移,网络安全要做到100%,甚至300%才可以。
有不对的地方,欢迎指正,共同学习,进步。
  • 16
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值