本文来自公众号:悬剑武器库,不错的公众号欢迎关注!
本次写的是一篇如何通过针对性系统学习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(),代码未对用户可控参数做过滤,当用户能控制这些函数中的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击。
学习要点
- 什么是命令注入漏洞
- 命令注入漏洞对系统安全产生的危害
- 脚本语言中可以执行系统命令的函数
- 第三方组件存在的代码执行漏洞如 struts2,weblogic等
- 命令注入漏洞的修复方法
1.3 跨站脚本漏洞(XSS)
1.3.1 存储型XSS
攻击者事先将恶意代码上传或储存到漏洞服务器中,只要受害者浏览包含此恶意代码的页面就会执行恶意代码。这就意味着只要访问了这个页面的访客,都有可能会执行这段恶意脚本,因此储存型XSS的危害会更大。因为存储型XSS的代码存在于网页的代码中,可以说是永久型的。
学习要点
- 存储式 XSS 漏洞对安全的影响
- 存储式 XSS 漏洞的特征和检测方法
- 存储式 XSS 漏洞的危害
- 修复存储式 XSS 漏洞的方式
- 常用 WEB 漏洞扫描工具对存储式 XSS 漏洞扫描方法
1.3.2反射型XSS
反射型 XSS 也被称为非持久性 XSS。当用户访问一个带有 XSS 代码的 URL 请求时,服务器端接收数据后处理,然后把带有 XSS 代码的数据发送到浏览器,浏览器解析这段带有 XSS 代码的数据后,最终造成 XSS 漏洞。这个过程就像一次反射,故称为反射型 XSS 漏洞。
学习要点
- 反射式 XSS 漏洞与存储式 XSS 漏洞的区别
- 反射式 XSS 漏洞的触发形式
- 反射式 XSS 漏洞利用的方式
- 反射式 XSS 漏洞检测和修复方法
1.3.3DOM型XSS
DOM—based XSS漏洞是基于文档对象模型Document Objeet Model,DOM)的一种漏洞。
学习要点
- DOM 式 XSS 漏洞的触发形式
- DOM 式 XSS 漏洞的检测方法
- DOM 式 XSS 漏洞的修复方法
1.4 请求伪造漏洞
1.4.1 服务器请求伪造SSRF
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF是要目标网站的内部系统。(因为他是从内部系统访问的,所有可以通过它攻击外网无法访问的内部系统,也就是把目标网站当中间人)。
学习要点
- 什么是 SSRF 漏洞
- 利用 SSRF 漏洞进行端口探测的方法
- SSRF 漏洞的检测方法
- SSRF 漏洞的修复方法
1.4.2 跨站请求伪造CSRF
跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。
学习要点
- CSRF 漏洞产生的原因
- CSRF 漏洞的原理
- CSRF 漏洞与 XSS 漏洞的区别
- CSRF 漏洞的挖掘和修复方
1.5 文件处理漏洞
1.5.1 任意文件上传
文件上传包括了上传头像,上传相册,上传附件,添加新闻图片,自定义主题背景,新闻投稿等等,开发者由于对安全意识不足,或者编写代码时对上传文件的合法校验存在缺陷,导致上传漏洞的产生或Web容器漏洞、CGI、配置不当等等
学习要点
任意文件上传漏洞产生的原因
服务端语言对上传文件类型限制方法
任意文件上传漏洞的危害
上传漏洞的检测思路和修复方法
1.5.2 任意文件下载
许多网站开放下载文件功能,由于下载功能代码对下载文件类型、目录未做限制或限制不当,导致攻击者可下载服务器任意文件。
学习要点
- 什么是文件下载漏洞
- 通过文件下载漏洞读取服务端文件的方法
- 能够通过代码审计和测试找到文件下载漏洞
- 修复文件下载漏洞的方法
1.6 访问控制漏洞
1.6.1 水平越权
水平越权访问是一种“基于数据的访问控制”设计缺陷引起的漏洞。由于服务器端在接收到请求数据进行操作时没有判断数据的所属人/所属部门而导致的越权数据访问漏洞。
学习要点
- 水平越权漏洞的基本概念
- 水平越权漏洞的形式
- 水平越权漏洞对网站安全的影响
- 水平越权漏洞的测试和修复方法
1.6.2 垂直越权
垂直越权是一种“基于URL的访问控制”设计缺陷引起的漏洞,又叫做权限提升攻击。由于后台应用没有做权限控制,或仅仅在菜单、按钮上做了权限控制,导致恶意用户只要猜测其他管理页面的URL或者敏感的参数信息,就可以访问或控制其他角色拥有的数据或页面,达到权限提升的目的。
学习要点
- 垂直越权漏洞的基本概念
- 垂直越权漏洞的种类和形式
- 对网站安全的影响
- 越权漏洞的测试方法和修复
1.6.3 未授权访问
未授权访问漏洞可以理解为需要安全配置或权限认证的地址、授权页面存在缺陷导致其他用户可以直接访问从而引发重要权限可被操作、数据库或网站目录等敏感信息泄露。
学习要点
- 如何去挖掘未授权访问
- 未授权访问的危害
- 未授权访问的修复方法
1.6.4 目录遍历
目录遍历漏洞原理比较简单,就是程序在实现上没有充分过滤用户输入的../之类的目录跳转符,导致恶意用户可以通过提交目录跳转来遍历服务器上的任意文件。这里的目录跳转符可以是../,也可是../的ASCII编码或者是unicode编码等。
学习要点
- 目录遍历的成因以及概率
- 如何探索目录遍历
- 目录遍历的修复方法
1.7 会话管理漏洞
1.7.1 会话劫持
例如你Telnet到某台主机,这就是一次Telnet会话;你浏览某个网站,这就是一次HTTP会话。而会话劫持(Session Hijack),就是结合了嗅探以及欺骗技术在内的攻击手段。例如,在一次正常的会话过程当中,攻击者作为第三方参与到其中,他可以在正常数据包中插入恶意数据,也可以在双方的会话当中进行监听,甚至可以是代替某一方主机接管会话。
学习要点
- 什么是会话劫持漏洞
- 会话劫持漏洞的危害
- Session 机制
- HttpOnly 的设置方法
- 会话劫持漏洞防御方法
1.7.2 会话固定
会话固定攻击(session fixation attack)是利用应用系统在服务器的会话ID固定不变机制,借助他人用相同的会话ID获取认证和授权,然后利用该会话ID劫持他人的会话以成功冒充他人,造成会话固定攻击。
学习要点
- 什么是会话固定漏洞
- 会话固定漏洞的检测方法
- 会话固定漏洞的形成的原因
- 会话固定漏洞的风险
- 会话固定漏洞的防范方法
2 中间件安全
2.1 Apache
Apache 是世界使用排名第一的 Web 服务器软件,它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。Apache 自身的安全性是很高的,但是人为的错误设置会导 致 Apache 产生安全问题。
学习要点
- 当前 Apache 服务器的运行权限
- 控制配置文件和日志文件的权限,防止未授权访问
- 设置日志记录文件、记录内容、记录格式
- 禁止 Apache 服务器列表显示文件的方法
- 修改 Apache 服务器错误页面重定向的方法
- 设置 Web 目录的读写权限,脚本执行权限的方法
- Apache 服务器解析漏洞的利用方式
- Apache 服务器文件名解析漏洞的防御措施
- Apache 服务器日志审计方法
2.2.IIS
IIS是一种Web(网页)服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。
学习要点
- 身份验证功能,能够对访问用户进行控制
- 利用账号控制 web 目录的访问权限,防止跨目录访问
- 为每个站点设置单独的应用程序池和单独的用户的方法
- 取消上传目录的可执行脚本的权限的方法
- 启动或禁用日志记录,配置日志的记录选项操作
- IIS6,IIS7 的文件名解析漏洞
- IIS6 写权限的利用
- IIS6 存在的短文件名漏洞
- IIS 日志的审计方法
2.3 Tomcat
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。
学习要点
- Tomcat 服务器启动的权限
- Tomcat 服务器后台管理地址和修改管理账号密码的方法
- 隐藏 Tomcat 版本信息的方法
- 如何关闭不必要的接口和功能
- 如何禁止目录列表,防止文件名泄露
- Tomcat 服务器通过后台获取权限的方法
- Tomcat 样例目录 session 操纵漏洞
- Tomcat 的日志种类
- Tomcat 日志的审计方法
2.4 Weblogic
WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。
学习要点
- Weblogic 的启动权限
- 修改 Weblogic 的默认开放端口的方法
- 了解禁止 Weblogic 列表显示文件的方法
- Weblogic 后台获取权限的方法
- Weblogic 存在的 SSRF 漏洞
- 反序列化漏洞对 Weblogic 的影响
- Weblogic 日志的审计方法
2.5 Websphere
WebSphere 是 IBM 的软件平台。它包含了编写、运行和监视全天候的工业强度的随需应变 Web 应用程序和跨平台、跨产品解决方案所需要的整个中间件基础设施,如服务器、服务和工具。WebSphere 提供了可靠、灵活和健壮的软件。
学习要点
- Websphere 管理的使用
- Websphere 的安全配置
- 反序列化漏洞对 Websphere 的影响
- 子域: 漏洞利用与防范
- Websphere 的日志审计
2.6 Jboss
是一个基于J2EE的开放源代码的应用服务器。JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。
学习要点
- 设置 jmx-console/web-console 密码的方法
- 开启日志功能的方法
- 设置通讯协议,开启 HTTPS 访问
- 修改 Web 的访问端口
- 反序列化漏洞对 Jboss 的影响
- JMXInvokerServlet/jmx-console/web-console 漏洞利用与防范
- Jboss 日志审计的方法
3 操作系统安全
3.1 Windows安全
3.1.1 账户安全
账户和口令是登录系统的基础,也是众多黑客程序攻击和窃取的对象。因此,系统账户和口令的安全是非常重要的,也是可以通过合理设置来实现的。普通常常在安装系统后长期使用系统的默认设置,忽视了Windows系统默认设置的不安全性,而这些不安全性常常被攻击者利用,通过各种手段获得合法的账户,进一步破解口令。所以,首先需要保障账户和密码安全。
学习要点
- Windows 用户账户和组账户权限的分配
- Windows 用户空口令风险
- 多用户同时使用的安全配置
- 对用户登入事件进行审核方法
- 对远程登入账号的检查
3.1.2 文件系统安全
Windows系统提供的磁盘格式有FAT,FAT32以及NTFS。其中,FAT格式和FAT32格式没有考虑对安全性方面的更高需求,例如无法设置用户访问权限等。NTFS文件系统是Windows操作系统中的一种安全的文件系统。管理员或用户可以设置每个文件夹的访问权限,从而限制一些用户和用户组的访问,以保障数据的安全。
学习要点
- NTFS 文件权限种类
- 通过 ACL 控制列表,设置目录或者文件的用户访问权限
- 命令行下修改目录或者文件的访问权限的方法
3.1.3 日志分析
审核与日志是Windows系统中最基本的入侵监测方法。当有攻击者尝试对系统进行某些方式的攻击时,都会被安安全审核功能记录下来,写入到日志中。
一些Windows下的应用程序,如IIS(Internet信息服务器),也带有相关的审核日志功能,例如,IIS的FTP日志和WWW日志等。IIS每天生成一个日志文件,包含了该日志的一切记录,例如,试图通过网络登陆系统的IP地址等,文件名通常为ex(年份)(月份)(日期),如,ex100211,就是2010年2月11日产生的日志。
IIS的WWW日志在系统盘中%systemroot%System32logfilesw3svc1目录下,
FTP日志在%Systemroot%system32logfilesmsftosvc1目录下。
而系统日志,安全性日志和应用程序日志分别为%Systemroot%system32config文件夹下的3个文件。
学习要点
- Windows 系统日志的种类
- Windows 安全日志的登入类型
- 日志审计的方法
3.2 Linux安全
3.2.1 账户安全
合理分配用户账号以及用户权限。根据用户的业务需求配置其最小的用户权限。对于一些重要的文件应该设置合理的权限,避免没有经验的管理员执行误操作而造成巨大的损失。对于用户的密码应该设置复杂,长度至少大于8位。
学习要点
- Linux 系统中的账号和组
- 弱口令密码带来的风险
- 检查空口令的方法
- 检查系统中是否存在其它 id 为 0 的用户的方法
3.2.2 文件系统安全
学习要点
- Linux 文件系统的文件格式分类
- 如何检查系统中存在的 SUID 和 SGID 程序
- 检查系统中任何人都有写权限的目录的方法
- 修改目录和文件权限的方法
- 搜索文件内容的方法
学习要点
- Linux 系统的日志种类
- Linux 日志文件
- 使用常用的日志查看命令,进行日志审计的方法
4 数据库安全
4.1 Mysql
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
学习要点
- Mysql 在操作系统中运行的权限
- Mysql 账户的安全策略
- Mysql 远程访问的控制方法
- Mysql 数据库所在目录的权限控制
- Mysql 数据库常用函数
- Mysql 数据库权限提升的方法
4.2 Mssql
Mssql是指微软的SQLServer数据库服务器,它是一个数据库平台,提供数据库的从服务器到终端的完整的解决方案,其中数据库服务器部分,是一个数据库管理系统,用于建立、使用和维护数据库。
学习要点
- Mssql 数据库在操作系统中启动的权限
- Mssql 数据库中服务器角色和数据库角色
- Mssql 存在 SA 弱口令和空口令带来的危害
- Mssql 数据库执行系统命令或者操作系统文件的存储过程
- Mssql 提升权限的方法
4.3 Oracle
Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。
学习要点
- Oracle 数据库的账号管理与授权
- 为不同管理员分配不同的账号的方法
- 设置管理 public 角色的程序包执行权限
- 限制库文件的访问权限
- Oracle 执行系统命令的方法
4.4 Redis
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
学习要点
- Redis 数据库运行权限
- Redis 数据库的默认端口
- Redis 未授权访问的危害
- Redis 开启授权的方法
- 渗透测试的基本三要素
5 渗透测试在实战中和工作中是怎么实际运作
渗透测试,是为了证明网络防御按照预期计划正常运行而提供的一种机制。不妨假设,你的公司定期更新安全策略和程序,时时给系统打补丁,并采用了漏洞扫描器等工具,以确保所有补丁都已打上。
1.信息收集
- 信息收集的重要性
- 收集信息的内容
- 信息收集的常用工具
- 所收集信息的利用方法
2.漏洞发现
- 通过信息收集发现的漏洞
- 常用漏洞扫描工具
- 漏洞发现工具的使用方法
- 漏洞的验证与测试方法
3.漏洞利用
- 漏洞的原理
- 漏洞的类型
- 漏洞利用的方式
- 如何利用漏洞获取权限
最后祝大家都可以顺利的入门渗透测试,在金三银四的日子里顺利找到自己喜欢的岗位。
原文链接:https://zhuanlan.zhihu.com/p/114171881
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/17268