写在前面:
渗透测试包含但不限于 web 安全
渗透测试并不相当于 Web 渗透
Web 安全学习是入门渗透测试最容易的途径, 门槛最低
Web 安全入门:
基础入门
整体框架
SQL 注入
XSS 攻击
业务逻辑漏洞
代码审计
安全编程
如何学习(学习的路线):
Web 的基础知识(重要)
漏洞原理
SQL,XSS, 文件上传, CSRF,SSRF,XXE 等
编程能力(重要)
实战练习
实战练习是从头贯穿到尾的
下面从几个方面具体说明
一, 基础知识(杂 / 乱)
需要的基础知识包括但不限于以下几点:
编程基础 主要指脚本语言, 比如 PHP,Python
网络常识 计算机网络(大学教材), 计算机网络自顶向下的方法(外国著作)
服务器的基本使用 Linux/Windows(Linux 是重点) , 基本命令(鸟哥的 Linux 私房菜), 部署 Web 服务器
基础软件的使用 VMware, 数据库
计算机基础 (软 / 硬件) 软件部分主要指操作系统, 进程, 线程等, 硬件部分主要包括内存, CPU, 网卡
以上五点之中, 前三点很重要!
二, 编程语言
- PHP/JSP/ASPX
- Python
- html
- JavaScript
前期推荐学 PHP,Python.HTML 和 CSS 了解, 能够看懂并写简单的 HTML 代码. JavaScript 要重点掌握.
实际应用:
代码审计
安全开发
安全运维
三, 网络基础
OSI 七层参考模型
TCP/IP 模型
把握以下重点:
TCP 协议
IP 协议
HTTP 协议
DNS 协议
学会使用工具:
wireshark 主要分析基于 TCP/IP 协议底层的数据包
burpsuit 主要分析 HTTP 协议的数据包
nmap 端口扫描
OWASP 目录爆破
一定一定要知道原理, 不然这是一个脚本小子, 知识面的大小决定攻击面的大小, 原理很重要!
三, 服务器的基本使用
Linux/Windows
基础命令
环境搭建
推荐书籍: 鸟哥的 Linux 私房菜, 篇幅较长可以当工具书来查阅, 但是最好多翻一翻.
四, 整体框架
常见的 Web 漏洞:
SQL 注入
文件上传
文件包含
命令执行
- XSS
- CSRF
- SSRF
- XXE
中间件安全
业务逻辑漏洞
常见框架漏洞
以下为几个重点的:
1. SQL 注入(建议首先要掌握的漏洞)
掌握:
数据库的增删改查
了解:
关系型数据库 MySQL/MSSQL/Oracle
非关系型数据库 Redis/Memchche/MongoDB
工具:
SQLmap/NoSQLmap
SQLmap 支持 12 种关系型数据库的注入
NoSQLmap 支持非关系型数据库的注入
学完基础的之后:
联合注入
时间盲注
布尔盲注
报错盲注
命令执行
针对不同数据库的攻击技巧是不同的, 不能用工具一把梭. 细节就是和大佬之间的区别!
推荐书籍: SQL 注入攻击与防御(第二版) sqlmap 从入门到精通(简单看一下就行)
2. XSS(跨站脚本攻击)
反射型
存储型(重点)
DOM 型
作用:
cookie 窃取
键盘记录
网页截屏
网页挂马
XSS 蠕虫
钓鱼攻击
水坑攻击
经纬度定位
入门书籍: XSS 跨站脚本攻击剖析与防御(有几年了, 略老)
3. 业务逻辑漏洞(代码逻辑的问题)
身份认证安全
数据篡改
未授权访问
任意密码找回
验证码突破
接口调用安全
其他逻辑漏洞
4. 代码审计
检查源代码的安全缺陷, 源代码是否存在安全隐患或者编写不规范的地方.
如何进行代码审计(方法论):
审计环境的准备
学习审计代码的流程
牢记常见的危险函数以及特殊函数
细心 + 耐心 + 一点小运气
入门书籍:《代码审计: 企业级 Web 代码安全架构》
总结
Web 安全的本质
用户能控制输入的内容
服务端没有对用户输入的内容进行检查过滤
Web 应用把用户输入的内容带入到某个地方执行
渗透测试职业的后半部分应该是安全体系建设的能力, 这才是价值的体现, 要从实践中获取经验, 从经验中抽象出事物的本质.
来源: https://www.cnblogs.com/yytest/p/12631137.html