当前位置:   article > 正文

【网络安全】Web渗透测试(全流程)

web渗透测试

1 信息收集

1.1 域名、IP、端口
  • 域名信息查询:信息可用于后续渗透

  • IP信息查询:确认域名对应IP,确认IP是否真实,确认通信是否正常

  • 端口信息查询:NMap扫描,确认开放端口

如果不会用Nmap,看这里:NMAP 基础教程(功能介绍,安装,使用)

发现:一共开放两个端口,80为web访问端口,3389为windows远程登陆端口,嘿嘿嘿,试一下

发现:是Windows Server 2003系统,OK,到此为止。

1.2 指纹识别

指纹?其实就是网站的信息。比如通过可以访问的资源,如网站首页,查看源代码:

  • 看看是否存在文件遍历的漏洞(如图片路径,再通过…/遍历文件)
  • 是否使用了存在漏洞的框架(如果没有现成的就自己挖)

2 漏洞扫描

2.1 主机扫描
  • Nessus

如果不会用Nessus,看这里:【工具-Nessus】Nessus的安装与使用

经典主机漏扫工具,看看有没有CVE漏洞:

2.2 Web扫描
  • AWVS(Acunetix | Website Security Scanner)扫描器

如果不会用AWVS,看这里:【工具-AWVS】AWVS安装与使用

PS:扫描器可能会对网站构成伤害,小心谨慎使用。

3 渗透测试

涉及工具的学习:

DVWA:【工具-BurpSuite】BurpSuite专业版 安装和使用

Burp Suite:【工具-DVWA】DVWA的安装和使用

3.1 弱口令漏洞
  • 漏洞描述

目标网站管理入口(或数据库等组件的外部连接)使用了容易被猜测的简单字符口令、或者是默认系统账号口令。

  • 渗透测试
  1. 如果不存在验证码,则直接使用相对应的弱口令字典使用burpsuite 进行爆破
  2. 如果存在验证码,则看验证码是否存在绕过、以及看验证码是否容易识别

示例:DVWA渗透系列一:Brute ForceDVWA渗透系列六:Insecure CAPTCHA

  • 风险评级:高风险
  • 安全建议
  1. 默认口令以及修改口令都应保证复杂度,比如:大小写字母与数字或特殊字符的组合,口令长度不小于8位等
  2. 定期检查和更换网站管理口令
3.2 文件下载(目录浏览)漏洞
  • 漏洞描述

一些网站由于业务需求,可能提供文件查看或下载的功能,如果对用户查看或下载的文件不做限制,则恶意用户就能够查看或下载任意的文件,可以是源代码文件、敏感文件等。

  • 渗透测试
  1. 查找可能存在文件包含的漏洞点,比如js,css等页面代码路径
  2. 看看有没有文件上传访问的功能
  3. 采用…/来测试能否夸目录访问文件

示例:DVWA渗透系列四:File Inclusion

  • 风险评级:高风险
  • 安全建议
  1. 采用白名单机制限制服务器目录的访问,以及可以访问的文件类型(小心被绕过)
  2. 过滤【./】等特殊字符
  3. 采用文件流的访问返回上传文件(如用户头像),不要通过真实的网站路径。

示例:tomcat,默认关闭路径浏览的功能:

<param-name>listings</param-name>
<param-value>false</param-value>
  • 1
  • 2
3.3 任意文件上传漏洞
  • 漏洞描述

目标网站允许用户向网站直接上传文件,但未对所上传文件的类型和内容进行严格的过滤。

  • 渗透测试
  1. 收集网站信息,判断使用的语言(PHP,ASP,JSP)
  2. 过滤规则绕过方法:文件上传绕过技巧
  • 风险评级:高风险
  • 安全建议
  1. 对上传文件做有效文件类型判断,采用白名单控制的方法,开放只允许上传的文件型式;
  2. 文件类型判断,应对上传文件的后缀、文件头、图片类的预览图等做检测来判断文件类型,同时注意重命名(Md5加密)上传文件的文件名避免攻击者利用WEB服务的缺陷构造畸形文件名实现攻击目的;
  3. 禁止上传目录有执行权限;
  4. 使用随机数改写文件名和文件路径,使得用户不能轻易访问自己上传的文件。
3.4 命令注入漏洞
  • 漏洞描述

目标网站未对用户输入的字符进行特殊字符过滤或合法性校验,允许用户输入特殊语句,导致各种调用系统命令的web应用,会被攻击者通过命令拼接、绕过黑名单等方式,在服务端运行恶意的系统命令。

  • 渗透测试

示例:DVWA渗透系列二:Command Injection

  • 风险评级:高风险
  • 安全建议
  1. 拒绝使用拼接语句的方式进行参数传递;
  2. 尽量使用白名单的方式(首选方式);
  3. 过滤危险方法、特殊字符,如:【|】【&】【;】【'】【"】等
3.5 SQL注入漏洞
  • 漏洞描述

目标网站未对用户输入的字符进行特殊字符过滤或合法性校验,允许用户输入特殊语句查询后台数据库相关信息

  • 渗透测试
  1. 手动测试,判断是否存在SQL注入,判断是字符型还是数字型,是否需要盲注
  2. 工具测试,使用sqlmap等工具进行辅助测试

示例:DVWA渗透系列七:SQL InjectionDVWA渗透系列八:SQL Injection(Blind)

  • 风险评级:高风险
  • 安全建议
  1. 防范SQL注入攻击的最佳方式就是将查询的逻辑与其数据分隔,如Java的预处理,PHP的PDO
  2. 拒绝使用拼接SQL的方式
3.6 跨站脚本漏洞
  • 漏洞描述

当应用程序的网页中包含不受信任的、未经恰当验证或转义的数据时,或者使用可以创建 HTML或JavaScript 的浏览器 API 更新现有的网页时,就会出现 XSS 缺陷。XSS 让攻击者能够在受害者的浏览器中执行脚本,并劫持用户会话、破坏网站或将用户重定向到恶意站点。

三种XSS漏洞:

  1. 存储型:用户输入的信息被持久化,并能够在页面显示的功能,都可能存在存储型XSS,例如用户留言、个人信息修改等。
  2. 反射型:URL参数需要在页面显示的功能都可能存在反射型跨站脚本攻击,例如站内搜索、查询功能。
  3. DOM型:涉及DOM对象的页面程序,包括:document.URL、document.location、document.referrer、window.location等
  • 渗透测试

示例:

  1. 存储型:DVWA渗透系列十二:XSS(Stored)
  2. 反射型:DVWA渗透系列十一:XSS(Reflect)
  3. DOM型:DVWA渗透系列十:XSS(DOM)
  • 风险评级:高风险
  • 安全建议
  1. 不信任用户提交的任何内容,对用户输入的内容,在后台都需要进行长度检查,并且对【<】【>】【"】【'】【&】等字符做过滤
  2. 任何内容返回到页面显示之前都必须加以html编码,即将【<】【>】【"】【'】【&】进行转义。
3.7 跨站请求伪造漏洞
  • 漏洞描述

CSRF,全称为Cross-Site Request Forgery,跨站请求伪造,是一种网络攻击方式,它可以在用户毫不知情的情况下,以用户的名义伪造请求发送给被攻击站点,从而在未授权的情况下进行权限保护内的操作,如修改密码,转账等。

  • 渗透测试

示例:DVWA渗透系列三:CSRF

  • 风险评级:中风险(如果相关业务极其重要,则为高风险)
  • 安全建议
  1. 使用一次性令牌:用户登录后产生随机token并赋值给页面中的某个Hidden标签,提交表单时候,同时提交这个Hidden标签并验证,验证后重新产生新的token,并赋值给hidden标签;
  2. 适当场景添加验证码输入:每次的用户提交都需要用户在表单中填写一个图片上的随机字符串;
  3. 请求头Referer效验,url请求是否前部匹配Http(s)
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/628425
推荐阅读
相关标签