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

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

被折叠的 条评论
为什么被折叠?



