首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【云+社区年度征文】常见漏洞测试思路总结与报告合规化

【云+社区年度征文】常见漏洞测试思路总结与报告合规化

原创
作者头像
天钧
修改2020-12-04 16:30:18
修改2020-12-04 16:30:18
8820
举报
文章被收录于专栏:渗透云笔记渗透云笔记

前言

最近一直在挖洞,效果还行,感谢墨渊安全的师傅们的漏洞报告,让我学习到了更多的姿势,以预备未来的学习

很早就有一个想法,总结一套渗透测试的常见测试思路与手法,能给自己的知识进行梳理,也好避免忘记一些手法,本文档的内容取自《WEB安全防护指南基础篇》一书,看完后受益很大。

本文中的修复建议部分取自;https://github.com/Echocipher/Pentest-Wiki

本文只做总结

XSS攻击

标准挖掘思路

1. 漏洞挖掘,寻找输入点

2. 寻找输出点

3. 确定测试数据输出位置

4. 输入简单的跨站代码进行测试

修复建议:

1. 在表单提交或者url参数传递前,对需要的参数进行过滤。

2. 将重要的cookie标记为http only, 这样的话Javascript 中的document.cookie语句就不能获取到cookie了。

3. 表单数据规定值的类型,例如:年龄应为只能为int、name只能为字母数字组合。

4. 对数据进行Html Encode 处理。

5. 过滤或移除特殊的Html标签, 例如: <script>, <iframe> , < for <, > for >, " for。

6. 过滤JavaScript 事件的标签。例如 "onclick=", "onfocus" 等等。

CSRF

漏洞条件

1. 用户处于登录状态

2. 伪造的链接与正常应用请求链接一致

3. 后台并未对用户也业务开展合法性做校验

修复建议

1、 通过token或者session来判断当前用户身份

2、 验证用户请求合法性

3、 添加验证码

SSRF攻击

漏洞挖掘思路

1. 图片加载与下载功能

2. 本地处理功能

3. 各类辅助功能

4. 图片文章收藏功能

修复建议1

1.用户请求的合法性

2.服务器行为合规性

修复建议2

1. 白名单,限制内网IP

2. 对返回内容进行识别

3. 禁用一些不必要协议

4. 统一错误信息

SQL注入攻击

常见测试手法

1. 判断时间延迟

2. 判断页面返回

3. 猜测业务是否与数据库交互

4. 用户注册是否有盲注

5. 数据库是否开启报错请求

修复建议

修复建议:

1. 通过使用静态和动态测试,定期检查并发现应用程序中的SQL注入漏洞。

2. 通过正则规范用户输入,校验输入数据中是否包含SQL语句的保留字,如:SELECT,WHERE,EXEC,DROP等。或使用转义字符,来修复SQL注入漏洞,以便忽略掉一些特殊字符。

3. 通过使用参数化查询和对象关系映射(Object Relational Mappers,ORM),来避免和修复注入漏洞。此类查询通过指定参数的占位符,以便数据库始终将它们视为数据,而非SQL命令的一部分。

4. 通过对数据库强制执行最小权限原则,来减缓SQL注入漏洞的影响。籍此,应用程序的每一个软件组件都只能访问、并仅影响它所需要的资源。

5. 对访问数据库的Web应用程序采用Web应用防火墙(Web Application Firewall,WAF)。这有助于识别出针对SQL注入的各种尝试,进而防止此类尝试作用到应用程序上。

6. 避免网站显示SQL错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。

文件上传攻击

常见思路

1. 目标网站具有上传点

2. 上传点目标文件能够被服务器解析

3. 知道目标文件的存放路径与文件名称

4. 目标文件可以被用户访问

修复建议

1. 对上传的文件,返回数据包时隐藏上传文件的路径

2. 对文件格式限制,只允许某些格式上传。

3. 对文件格式进行校验,前端跟服务器都要进行校验(前端校验扩展名,服务器校验扩展名、Content_Type等),进行MIME文件类型安全检测,上传的文件大小限制。

4. 将上传目录防止到项目工程目录之外,当做静态资源文件路径,并且对文件的权限进行设定,禁止文件下的执行权限。

任意文件下载

未对用户查看或下载的文件做限制,恶意用户就能够查看或下载任意的文件进行限制

常见手法

1. 通过绝对路径对其文件进行下载

2. 运用../../../返回上一级

3. 参数如?file=,可以尝试

修复建议:

1. 过滤.(点),使用户在url中不能回溯上级目录。

2. 正则严格判断用户输入参数的格式,限定用户访问范围。

3. 将下载区独立出来,放在项目路径外,给每个下载资源固定的URL,而不是所有的下载资源都是统一的URL。

文件包含

包含类型

l 上传文件包含

l 日志文件包含

l 敏感文件包含

l 临时文件包含

l PHP封装协议包含

l 临时文件包含

常用的几种包含方式

l 同目录包含 file=.htaccess

l 目录遍历 ?file=../../../../../../../../../var/lib/locate.db

l 日志注入 ?file=../../../../../../../../../var/log/apache/error.log

l 利用 /proc/self/environ

修复建议:

1. php中可以使用open_basedir配置限制访问权限在指定区域。

2. 过滤 . (点) / (斜杠) \ (反斜杠)。

3. 禁止服务器远程文件包含

远程命令执行

测试思路

1. 判断敏感参数是否执行系统命令

修复建议:

1. 建议假定所有输入都是可疑的,尝试对所有输入提交可能执行命令的构造语句进行严格的检查或者控制外部输入,系统命令执行函数的参数不允许外部传递。

2. 不仅要验证数据的类型,还要验证其格式、长度、范围和内容。

3. 不要仅仅在客户端做数据的验证与过滤,关键的过滤步骤在服务端进行。

4. 对输出的数据也要检查,数据库里的值有可能会在一个大网站的多处都有输出,即使在输入做了编码等操作,在各处的输出点时也要进行安全检查。

5. 在发布应用程序之前测试所有已知的威胁。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • XSS攻击
    • CSRF
    • SSRF攻击
    • SQL注入攻击
      • 文件上传攻击
    • 文件包含
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档