渗透测试之Web安全
写在前面:
- 渗透测试包含但不限于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 应用把用户输入的内容带入到某个地方执行
渗透测试职业的后半部分应该是安全体系建设的能力,这才是价值的体现,要从实践中获取经验,从经验中抽象出事物的本质。
渗透测试之Web安全的更多相关文章
- 小白日记51:kali渗透测试之Web渗透-WebShell(中国菜刀、WeBaCoo、Weevely)
webshell 本质:<?php echo shell_exec($_GET['cmd']);?> windows平台 中国菜刀官网:胖客户端程序,国产中比较优秀的webshell,适用 ...
- 小白日记30:kali渗透测试之Web渗透-扫描工具-Skipfish
WEB渗透-skipfish Skipfish是一个命令行模式,以C语言编写的积极的Web应用程序的安全性侦察工具,没有代理模式. 它准备了一个互动为目标的网站的站点地图进行一个递归爬网和基于字典的探 ...
- 小白日记28:kali渗透测试之Web渗透-扫描工具-Nikto
扫描工具-Nikto #WEB渗透 靶机:metasploitable 靶场:DVWA[默认账号/密码:admin/password] #新手先将DVWA的安全性,调到最低,可容易发现漏洞 侦察[减少 ...
- 小白日记54:kali渗透测试之Web渗透-补充概念(AJAX,WEB Service)
补充概念 AJAX(异步javascript和XML) Asynchronous javascript and xml 是一个概念,而非一种新的编程语言,是一组现有技术的组合 通过客户端脚本动态更新页 ...
- 小白日记52:kali渗透测试之Web渗透-HTTPS攻击(Openssl、sslscan、sslyze、检查SSL的网站)
HTTPS攻击 全站HTTPS正策划稿那位潮流趋势 如:百度.阿里 HTTPS的作用 CIA 解决的是信息传输过程中数据被篡改.窃取 [从中注入恶意代码,多为链路劫持] 加密:对称.非对称.单向 HT ...
- 小白日记50:kali渗透测试之Web渗透-CSRF
CSRF CSRF原理:经常与XSS混淆. 从信任的角度进行区分:XSS:利用用户对站点的信任:CSRF:利用站点对已经身份认证的信任(有一定的信任)[默认情况:站点不信任客户端] 结合社工在身份认证 ...
- 小白日记49:kali渗透测试之Web渗透-XSS(三)-存储型XSS、DOM型XSS、神器BEFF
存储型XSS与DOM型XSS [XSS原理] 存储型XSS 1.可长期存储于服务器端 2.每次用户访问都会被执行js脚本,攻击者只需侦听指定端口 #攻击利用方法大体等于反射型xss利用 ##多出现在留 ...
- 小白日记47:kali渗透测试之Web渗透-XSS(一)
XSS [推荐书籍:XSS跨站脚本攻击剖析与防御] xss表示Cross Site Scripting(跨站脚本攻击),它与SQL注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/ ...
- 小白日记46:kali渗透测试之Web渗透-SqlMap自动注入(四)-sqlmap参数详解- Enumeration,Brute force,UDF injection,File system,OS,Windows Registry,General,Miscellaneous
sqlmap自动注入 Enumeration[数据枚举] --privileges -U username[CU 当前账号] -D dvwa -T users -C user --columns [ ...
随机推荐
- CSS 实现元素较宽不能被完全展示时将其隐藏
首发于本人的博客 varnull.cn 遇到一个需求,需要实现的样式是固定宽度的容器里一排显示若干个标签,数量不定,每个标签的长度也不定.当到了某个标签不能被完全展示下时则不显示.大致效果如下,标签只 ...
- 对于页面适配,你应该使用px还是rem
css中的单位很多,%.px.em.rem,以及比较新的vw.vh等.每个单位都有特定的用途,比如当需要设置一个矩形的宽高比为16:9,并且随屏幕宽度自适应时,除了用%,其他单位是很难做到的.所以不存 ...
- Immer.js简析
开始 在函数式编程中,Immutable这个特性是相当重要的,但是在Javascript中很明显是没办法从语言层面提供支持,但是还有其他库(例如:Immutable.js)可以提供给开发者用上这样的特 ...
- safari坑之 video
博客地址: https://www.seyana.life/post/19 本来是打算给博客左上角的gif做个优化, 把gif换成webm,以video的形式自动播放,能从180k降到50k, 现在浏 ...
- VMWare12pro安装Centos 6.9教程
VMWare下Centos 6.9安装教程,记录如下 1.新建虚拟机 (1)点击文件-->新建虚拟机 (2)选择 自定义(高级)-->下一步 (3)选择Workstation 12.0-- ...
- 整合Kafka+Flink 实例(第二部分 设计思路)
前 言 拖了蛮久了,一直说要接着上一部分写设计思路以及代码,因为自己技术底子薄弱,加上人又懒,所以一直没能继续,今天补上设计思路及部分代码,后面有时间我会再补充一些应用性的功能,的确有些忙,希 ...
- 在centos7使用docker下搭建elasticsearch集群
一 .docker的安装 https://www.cnblogs.com/ghostdot/p/12410242.html 二.创建相关映射文件 cd /home/ mkdir node cd nod ...
- npm install、npm install --save与npm install --save-dev、npm install -g区别
npm install X: 会把X包安装到node_modules目录中 不会修改package.json 之后运行npm install命令时,不会自动安装X npm install X –sav ...
- vue2.0中eventBus实现兄弟组件通讯
我们知道,在vue中父子组件的通讯是通过props和自定义事件搞定的,简单那的非父子组件通讯用bus(一个空的Vue实例),针对中大型的项目会选择vuex,然而小项目的话,便捷的解决方案就是event ...
- Java原来还可以这么学:如何搞定面试中必考的集合类
原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者. 系列文章介绍 本文是<五分钟学Java>系列文章的一篇 本系列文章主要围绕Java程序员必须掌握的核心技能,结合我个人三年 ...