本文写的是一篇如何通过针对性系统学习Web安全或者说如何能成为一名渗透测试工程师(有疑问或者错误的地方还望大家多多指正)。
相信大家每学习一样东西的时候都是存在一种很迷茫的心态(包括我自己),上网找视频找文章找资料学习得零零散散,最后只会浪费时间且只得到一身三脚猫功夫。只有成体系的去学习、让自己的知识由点变成面,这样才能变得更强(文末附上书籍和工具包,希望能够帮助大家查漏补缺自己的不足)!
Web 安全
主要包括 HTTP 协议、注入漏洞、XSS 漏洞、SSRF 漏洞、CSRF 漏洞、文件处理漏洞、访问控制漏洞、会话管理漏洞等。
中间件安全
主要包括 Apache、IIS、Tomcat、weblogic、websphere、Jboss 等。
操作系统安全
主要包括 Windows 操作系统、Linux 操作系统知识。
数据库安全
主要包括 Mssql数据库、Mysql数据库、Oracle数据库、Redis数据库知识。
1 Web安全
1.1 HTTP协议
http是一个简单的请求-响应协议,它通常运行在TCP之上。
它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。
请求和响应消息的头以ASCII码形式给出;而消息内容则具有一个类似MIME的格式。
学习要点:
-
请求方法:OPTIONS, PUT, DELETE,和TRACE 方法的基本概念
-
HTTP请求的基本方法和产生的请求结果
-
HTTP 状态码的规范
-
HTTP 状态码的作用
-
常见的 HTTP 状态码
-
HTTP 状态码 2**,3**,4**,5** 代表的含义
-
用计算机语言获取 HTTP 状态码的方法
-
GET 请求的标准格式
-
POST 请求提交表单,上传文件的方法
-
HEAD 请求与 GET 请求的区别
-
常见的 HTTP 响应头
-
HTTP 响应头的作用
-
HTTP 响应头的名称
-
HTTP 响应头的格式
-
URL 的基本概念
-
URL 的结构
-
URL 编码格式
1.2 注入漏洞
1.2.1 SQL注入
SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。
学习要点
-
SQL 注入漏洞原理
-
SQL 注入漏洞对于数据安全的影响
-
SQL 注入漏洞的方法
-
常见数据库的 SQL 查询语法
-
MSSQL,MYSQL,ORACLE 数据库的注入方法
-
SQL 注入漏洞的类型
-
SQL 注入漏洞修复和防范方法
-
一些 SQL 注入漏洞检测工具的使用方法
1.2.2 XML注入
XXE漏洞全称XML External Entity Injection即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站、发起dos攻击等危害。xxe漏洞触发的点往往是可以上传xml文件的位置,没有对上传的xml文件进行过滤,导致可上传恶意xml文件。
学习要点
-
XML 注入漏洞产生的原因
-
XML 注入漏洞的利用方式
-
如何修复 XML 注入漏洞
1.2.3 代码注入
1.2.3.1远程文件包含
即服务器通过 PHP 的特性(函数)去包含任意文件时,由于要包含的这个文件来源过滤不严格,从而可以去包含一个恶意文件,攻击者就可以远程构造一个特定的恶意文件达到攻击目的。
学习要点
-
远程文件包含漏洞所用到的函数
-
远程文件包含漏洞的利用方式
-
远程文件包含漏洞代码审计方法
-
修复远程文件包含漏洞的方法
1.2.3.2本地文件包含
文件包含漏洞的产生原因是 PHP 语言在通过引入文件时,引用的文件名,用户可控,由于传入的文件名没有经过合理的校验,或者校验被绕过,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。当被包含的文件在服务器本地时,就形成的本地文件包含漏洞。了解 PHP 脚本语言本地文件包含漏洞形成的原因,通过代码审计可以找到漏洞,并且会修复该漏洞。
学习要点
-
什么是本地文件包含漏洞
-
本地文件包含漏洞产生的原因
-
本地文件包含漏洞利用的方式
-
PHP 语言中的封装协议
-
本地文件包含漏洞修复方法
1.2.4 命令执行
命令执行漏洞是指应用有时需要调用一些执行系统命令的函数,如:system()、exec()、shell_exec()、eval()、passthru(),代码未对用户可控参数做过滤,当用户能控制这些函数中的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击。
学习要点