渗透测试基本流程
0-前言
毕业工作第二年,才明白渗透测试工程师与红队差别很大,一个是固定的漏洞排查,一个是穷尽方法的绕过。
虽然工作方式为定式,但要把具体的攻击手法转化为抽象的知识也比较困难,就像防御入侵一样,不知道随着ai的发展能不能批量的将攻击手法转化为抽象的知识,然后自动构建工具攻击或者防御。
1-基本流程
1>领取用例
2>默认通过
3>排查漏洞 == 常见漏洞排查 == 不符合
| 漏洞类型 | 内容 | 注意 |
|---|---|---|
| cors | origin | 回显存在对应字符 |
| csrf | referer | 存在且可访问 |
| 信息泄露 | 正则表达式匹配所有请求响应包(通常匹配url和响应体,包含js) | 正则的构造最好用贪婪 |
| 异常回显 | 暴露的异常java类 | java.xxx.xxx |
| 中间件 | 403禁止访问/异常回显的apache等中间件 | 403 |
| 业务覆盖 | 可操作理论不可操作的业务 | id覆盖即数据覆盖 |
| 重定向 | 登录登出 | 跳转页面 |
| 步骤跳跃 | 前端认证响应 | 第二步骤无需第一步骤参数 |
| 伪造ip | bp插件fakeIP | 日志查看异常ip |
| 后台泄露 | 嵌套爆破目录 | 401状态和403状态 |
| RCE | object参数的排查或者框架漏洞的排查 | 回显的中间件 |
| sql注入 | 闭合sql语句 | 两单引号双引号的变形 |
| 未授权 | 路径的爆破 | 端口、目录、接口爆破 |
| xss | 页面是否解析</>页面是否存在预览pdf | 能否直接页面注入反射 |
| 其他服务 | 排查端口开放情况 | 多个port |
| 越权 | 水平垂直越权 | 替换token且可访问 |
| 文件上传 | 可执行文件上传 | 返回路径/上传成功 |
| 其他漏洞类型 | 内容 | 注意 |
|---|---|---|
| 伪造用户名 | 修改识别的用户名 | 如果靠token确认user就算了 |
| 源代码泄露 | 暴露copy的源代码 | github的地址 |
| CRLF | %c4%8d%c4%8a或者%0d%0a | 回显请求体同理出现 |
| 逻辑问题 | 不能却能 | 脑袋清晰的时候测 |
4>缺陷发布
5>生成报告