《Kali渗透基础》15. WEB 渗透

本文详细介绍了KaliLinux中涉及的WEB技术,包括HTTP协议、AJAX、WEBService及其安全问题,同时列举了各类扫描工具如Nikto、Skipfish、OWASP-ZAP等,以及针对SSL/TLS和拒绝服务攻击的防御手段。


本系列侧重方法论,各工具只是实现目标的载体。
命令与工具只做简单介绍,其使用另见《安全工具录》。

本文以 kali-linux-2023.2-vmware-amd64 为例。

1:WEB 技术

静态 WEB

  • 无交互

动态 WEB

  • 应用程序
  • 数据库
  • 每人看到的内容不同
  • 根据用户输入返回不同结果

1.1:WEB 攻击面

  • Network
  • OS
  • Web Server
  • App Server
  • web Application
  • Database
  • Browser

1.2:HTTP 协议基础

明文传输

  • 无内建的机密性安全机制
  • 嗅探或代理截断可查看全部明文信息
  • https 只能提高传输层安全

无状态

  • 每一次客户端和服务器端的通信都是独立的过程
  • WEB应用需要跟踪客户端会话(多步通信)
  • 若不使用 Cookie 技术,客户端每次请求都要重新身份验证
  • Session 用于跟踪用户行为轨迹
  • Session ID 本质上是 Cookie
  • Session 与 Cookie 提高用户体验,但增加了攻击向量

重要的 Header

  • Set-Cookie
    服务器发给客户端的信息(有被窃取的风险)
  • Content-Length
    响应 body 部分的字节长度
  • Location
    重定向到另一个页面(可识别身份认证后允许访问的页面)
  • Cookie
    客户端发回给服务器证明用户状态的信息
  • Referrer
    发起请求之前用户位于的页面(基于此头的安全限制容易被绕过)

状态码

  • 服务端响应的状态码表示响应的结果类型(5 大类,数十个具体响应码)
  • 1xx:服务器响应的信息,通常表示服务器还有后续处理,很少出现
  • 2xx:客户端请求被服务器成功接受并处理后返回的响应结果
  • 3xx:重定向,通常在身份认证成功后重定向到一个安全页面
  • 4xx:表示客户端请求错误
    • 401:需要身份验证
    • 403:拒绝访问
    • 404:目标未发现
  • 5xx:服务器内部错误

1.3:AJAX

AJAX(Asynchronous JavaScript and XML),用于在 Web 页面中进行异步数据交换。它允许在不刷新整个页面的情况下与服务器进行数据交互,更新部分页面内容。

  • 是一组技术的组合,而非一种新的编程语言
  • 通过客户端脚本动态更新页面部分内容,而非整个页面
  • 降低带宽使用,提高速度
  • 后台异步访问

现在 Web 开发倾向使用更先进的技术,如 SPA(单页面应用)框架(React、Vue 和 Angular)。

AJAX 的安全问题

  • 多种技术混合,增加了攻击面,每个参数都可能形成独立的攻击过程
  • AJAX 引擎是个全功能的脚本解释器,访问恶意站点后果严重,虽然浏览器有沙箱和 SOP,但可被绕过
  • 暴露应用程序逻辑

AJAX 对渗透测试的挑战

  • 异步请求数量多且隐蔽
  • 触发 AJAX 请求的条件无规律
  • 手动和截断代理爬网可能产生大量遗漏

1.4:WEB Service

WEB Service,这里指各种 API,面向服务的架构(service oriented architecture),便于不同系统集成共享数据和功能。

  • 适合不想暴露数据模型和程序逻辑而访问数据的场景
  • 无页面

两种类型的 WEB Service

  • SOAP(Simple Object Access Protocol)
    • 传统的 Web service 开发方法,xml 是唯一的数据交换格式
    • 要求安全性的应用更多采用此类型
  • RESTful(Representational State Transfer architecture)
    • 目前更多采用的轻量 web service
    • JSON 是首选数据交换格式

WEB Service 安全考虑

  • 使用 APl key 或 session token 实现身份认证
  • 身份认证由服务器完成,而非客户端
  • API key、用户名、Session token 永远不要通过 URL 发送
  • RESTful 默认不提供任何安全机制,需要使用 SSL/TLS 保护传输数据安全
  • SOAP 提供强于 HTTPS 的 wS-security 机制
  • RESTful 应只允许身份认证用户使用 PUT、DELETE 方法
  • 使用随机 token 防止 CSRF 攻击
  • 对用户提交参数进行过滤,建议布署基于严格白名单的方法
  • 报错信息消毒

2:扫描工具

2.1:HTTrack

HTTrack(HTTrack Website Copier)用于将整个网站以及其内容下载到本地,以便在离线情况下浏览。

  • 某些情况下可以减少与目标系统的交互

可以直接使用命令 httrack 进行交互式操作。

在这里插入图片描述

2.2:Nikto

Nikto,Perl 语言开发的开源 web 安全扫描器。

  • 可交互
  • 扫描服务器软件版本
  • 搜索存在安全隐患的文件
  • 服务器配置漏洞
  • WEB Application 层面的安全隐患
  • 避免 404 误判(很多服务器不遵守 RFC 标准,对于不存在的对象返回200响应码)

部分命令:

查看插件
nikto -list-plugins

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值