《Web安全深度剖析》学习笔记(一)

Web安全简介

进行渗透测试有一个条件是必须的,就是攻击者的计算机与服务器必须能够正常通信,那么服务器与客户端是如何进行通信的呢?
依靠的是端口
(web默认运行在服务器的80端口之上)

深入HTTP请求流程

HTTP协议解析

互联网从传统的C/S架构(客户端/服务器架构)转变为更加方便快捷的B/S架构(即浏览器/服务器架构)

HTTP即超文本传输协议,是一种详细规定了浏览器和万维网服务器之间相互通信的规则,它是万维网交换信息的基础,它允许将HTML(超文本标记语言)文档从Web服务器传送到Web浏览器

URL(统一资源定位符)标准格式:
协议://服务器IP [:端口]/路径/[?查询]

  • 如何不借助浏览器而发起HTTP请求?
    比如Linux系统中的curl命令。(Windows没有自带curl.exe,需要自行下载),可以利用-I选项查看访问的URL返回的HTTP响应头
    在这里插入图片描述
    HTTP是一种无状态的协议,无状态是指Web浏览器与Web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务端发出请求,然后Web服务器返回响应(Response),连接就关闭了,在服务器端不保留连接的有关信息。

HTTP遵循请求(request)/应答(Response)模型

  1. HTTP请求与响应
    HTTP请求包括三部分:请求行、请求头、请求正文
    在这里插入图片描述

HTTP请求行第一行即为请求行,请求行由三部分组成,该行的第一部分说明了是POST请求;该行的第二行是一个/login.php ,用来说明该请求是该域名根目录下的login.php ,该行的最后一部分说明使用的是HTTP1.1版本。

第二行至空白为请求头,其中HOST代表请求的主机地址,User-Agent代表浏览器的标识。请求头由客户端自行设定

(2)HTTP响应
与HTTP请求对应,也是由三部分组成,分别是响应行,响应头和响应正文

HTTP响应的第一行为响应行,其中有HTTP版本(HTTP/1.1)、状态码(200)以及消息“OK”
第二行至末尾的空白行为响应头,由服务器向客户端发送
消息报头之后是响应正文,是服务器向客户端发送的HTML数据

  1. HTTP请求方法
    (1)GET
    用于获取请求页面的指定信息
    (2)HEAD
    HEAD除了服务器不能在响应里返回消息主体外,其他都与GET方法相同。(常用来测试超文本链接的有效性、可访问性和最近的改变
    (3)POST
    POST与GET类似,但是最大的区别是,GET方法没有请求内容,而POST是有请求内容的。
    POST请求最多用于向服务器发送大量的数据,GET虽然也能发送数据,但是有大小长度的限制,并且GET请求会将发送的数据显示在浏览器端,而POST不会,所以安全性相对更高一些。
    (4)PUT
    用于请求服务器把请求中的实体存储在请求资源下,如果请求资源已经在服务器中存在,那么将会用此请求中的数据替换原先的数据,作为指定资源的最新修改版。若指定资源不存在,将会创建这个资源,且数据为请求正文属于危险方法!!!!会为服务器建立文件
    举例:

    	PUT /input.txt
    	HOST: www.xxser.com
    	Content-Length:6
    	
    	123456
    

    这段PUT请求将会在主机根目录下创建input.txt,内容为123456(通常服务器都会关闭PUT方法)
    (5)DELETE
    用于请求源服务器删除请求的指定资源,服务器一般都会关闭此方法,因为客户端可以进行删除文件操作,属于危险方法之一。

  2. HTTP状态码
    状态码由三位数字组成,第一位数字定义了响应的类别,且只有以下五种:

  • 1xx:信息提示,表示请求已被成功接收,继续处理。范围为100-101
  • 2xx::成功,服务器成功地处理了请求。范围为200-206
  • 3xx:重定向,用于告诉浏览器客户端,它们的访问资源已被移动,并告诉客户端新的资源地址位置。范围为300-305
  • 4xx:客户端错误提示码,有时客户端会发送一些服务器无法处理的东西,比如格式错误的请求,或者最常见的是,请求一个不存在的URL。范围为400-415
  • 5xx:有时候客户端发送了一条 有效请求,但是Web服务器自身却出错了,可能是Web服务器运行出错了,或者网站都挂了。5xx就是用来描述服务器内部错误的,其范围为500-505.

常见状态码:
200:客户端请求成功,是最常见的状态
302:重定向
400:客户端请求有语法错误,不能被 服务器所理解
401:请求未经授权
403:服务器收到请求,但是拒绝提供服务
500:服务器内部错误
//404

  1. HTTP消息(又称为HTTP头)
    由四部分组成:请求头,响应头,普通头和实体头
    (1)请求头只出现在HTTP请求当中
    1⃣️Host
    Host主要用于指定被请求资源的Internet主机和端口,如:
    HOST:www.xxser.com:801
    2⃣️User-Agent
    允许客户端将它的操作系统、浏览器和其他属性告诉服务器,登陆一些网站时,很多时候都可以见到显示我们的浏览器、系统信息,这些都是此头的作用
    User-Agent:My privacy
    3⃣️Referer
    包含一个URL,表示当前访问URL的上一个URL。(即用户从什么地方来到本页面)
    4⃣️Cookie
    它是一段文本,常用来表示请求者身份等。(后面会详细讲述)
    5⃣️Range
    Range可以请求实体的部分内容,多线程下载一定会用到此请求
    6⃣️x-forward-for
    即XXF头,它代表请求端的IP,可以有多个,中间以逗号隔开。
    7⃣️Accept
    用于指定客户端接收哪些类型的信息,如
    Accept: text/html 表示客户端希望接收HTML文本

(2)响应头
1⃣️Server
服务器所使用的Web服务器名称(建议在服务器端修改此头的信息)
2⃣️Set-Cookie
向客户端设置Cookie,通过查看此头,可以清楚地看到服务器向客户端发送的Cookie信息。
3⃣️Last-Modified
资源的最后修改时间
4⃣️Location
服务器通过这个头告诉浏览器去访问哪个页面(通常配合302状态码使用)
(3)普通头
如:Date
(4)实体头
1⃣️Content-Type
2⃣️Content-Encoding
3⃣️Content-Length
指明实体正文的长度(以字节方式存储的十进制数字)

实验:
使用Telnet模拟一次HTTP请求
brew install telnet
telnet www.baidu.com 80
在这里插入图片描述
之后利用快捷键Ctrl+]来打开Telnet的回显,之后按一次回车,开始输入文本内容
在这里插入图片描述

之后连续按两次回车(两次回车表示提交请求,速度要快,否则会连接失败)在这里插入图片描述
HTTP协议与HTTPS协议的区别

  • HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议。
  • HTTP与HTTPS协议使用的是完全不同的连接方式,HTTP用80端口连接,HTTPS用443端口连接
  • HTTPS协议需要到CA申请证书(往往需要收费),而HTTP不需要
  • HTTP连接相对简单,是无状态的,而HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,所以HTTPS更加安全。
HTTP应用:黑帽SEO之搜索引擎劫持

SEO,即为 搜索引擎优化。简单的说,就是让网站的排名更高。黑帽SEO就是通过作弊的手段欺骗搜索引擎,获取非正常的排名,让网站更靠前,流量更大。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Web安全深度剖析》总结了当前流行的高危漏洞的形成原因、攻击手段及解决方案,并通过大量的示例代码复现漏洞原型,制作模拟环境,更好地帮助读者深入了解Web应用程序中存在的漏洞,防患于未然。 《Web安全深度剖析》从攻到防,从原理到实战,由浅入深、循序渐进地介绍了Web 安全体系。全书分4 篇共16 章,除介绍Web 安全的基础知识外,还介绍了Web 应用程序中最常见的安全漏洞、开源程序的攻击流程与防御,并着重分析了“拖库”事件时黑客所使用的攻击手段。此外,还介绍了渗透测试工程师其他的一些检测方式。 《Web安全深度剖析》最适合渗透测试人员、Web 开发人员、安全咨询顾问、测试人员、架构师、项目经理、设计等人员阅读,也可以作为信息安全等相关专业的教材。 第1篇 基础篇 第1章 Web安全简介 2 1.1 服务器是如何被入侵的 2 1.2 如何更好地学习Web安全 4 第2章 深入HTTP请求流程 6 2.1 HTTP协议解析 6 2.1.1 发起HTTP请求 6 2.1.2 HTTP协议详解 7 2.1.3 模拟HTTP请求 13 2.1.4 HTTP协议与HTTPS协议的区别 14 2.2 截取HTTP请求 15 2.2.1 Burp Suite Proxy 初体验 15 2.2.2 Fiddler 19 2.2.3 WinSock Expert 24 2.3 HTTP应用:黑帽SEO之搜索引擎劫持 24 2.4 小结 25 第3章 信息探测 26 3.1 Google Hack 26 3.1.1 搜集子域名 26 3.1.2 搜集Web信息 27 3.2 Nmap初体验 29 3.2.1 安装Nmap 29 3.2.2 探测主机信息 30 3.2.3 Nmap脚本引擎 32 3.3 DirBuster 33 3.4 指纹识别 35 3.5 小结 38 第4章 漏洞扫描 39 4.1 Burp Suite 39 4.1.1 Target 39 4.1.2 Spider 40 4.1.3 Scanner 42 4.1.4 Intruder 43 4.1.5 辅助模块 46 4.2 AWVS 49 4.2.1 WVS向导扫描 50 4.2.2 Web扫描服务 52 4.2.3 WVS小工具 53 4.3 AppScan 54 4.3.1 使用AppScan扫描 55 4.3.2 处理结果 58 4.3.3 AppScan辅助工具 58 4.4 小结 61 第2篇 原理篇 第5章 SQL注入漏洞 64 5.1 SQL注入原理 64 5.2 注入漏洞分类 66 5.2.1 数字型注入 66 5.2.2 字符型注入 67 5.2.3 SQL注入分类 68 5.3 常见数据库注入 69 5.3.1 SQL Server 69 5.3.2 MySQL 75 5.3.3 Oracle 84 5.4 注入工具 89 5.4.1 SQLMap 89 5.4.2 Pangolin 95 5.4.3 Havij 98 5.5 防止SQL注入 99 5.5.1 严格的数据类型 100 5.5.2 特殊字符转义 101 5.5.3 使用预编译语句 102 5.5.4 框架技术 103 5.5.5 存储过程 104 5.6 小结 105 第6章 上传漏洞 106 6.1 解析漏洞 106 6.1.1 IIS解析漏洞 106 6.1.2 Apache解析漏洞 109 6.1.3 PHP CGI解析漏洞 110 6.2 绕过上传漏洞 110 6.2.1 客户端检测 112 6.2.2 服务器端检测 115 6.3 文本编辑器上传漏洞 123 6.4 修复上传漏洞 127 6.5 小结 128 第7章 XSS跨站脚本漏洞 129 7.1 XSS原理解析 129 7.2 XSS类型 130 7.2.1 反射型XSS 130 7.2.2 存储型XSS 131 7.2.3 DOM XSS 132 7.3 检测XSS 133 7.3.1 手工检测XSS 134 7.3.2 全自动检测XSS 134 7.4 XSS高级利用 134 7.4.1 XSS会话劫持 135 7.4.2 XSS Framework 141 7.4.3 XSS GetShell 144 7.4.3 XSS蠕虫 149 7.5 修复XSS跨站漏洞 151 7.5.1 输入与输出 151 7.5.2 HttpOnly 158 7.6 小结 160 第8章 命令执行漏洞 161 8.1 OS命令执行漏洞示例 161 8.2 命令执行模型 162 8.2.1 PHP命令执行 163 8.2.2 Java命令执行 165 8.3 框架执行漏洞 166 8.3.1 Struts2代码执行漏洞 166 8.3.2 ThinkPHP命令执行漏洞 169 8.3 防范命令执行漏洞 169 第9章 文件包含漏洞 171 9.1 包含漏洞原理解析 171 9.1.1 PHP包含 171 9.1.2 JSP包含 180 9.2 安全编写包含 184 9.3 小结 184 第10章 其他漏洞 185 10.1 CSRF 185 10.1.1 CSRF攻击原理 185 10.1.2 CSRF攻击场景(GET) 186 10.1.3 CSRF攻击场景(POST) 188 10.1.4 浏览器Cookie机制 190 10.1.5 检测CSRF漏洞 193 10.1.6 预防跨站请求伪造 197 10.2 逻辑错误漏洞 199 10.2.1 挖掘逻辑漏洞 199 10.2.2 绕过授权验证 200 10.2.3 密码找回逻辑漏洞 204 10.2.4 支付逻辑漏洞 205 10.2.5 指定账户恶意攻击 209 10.3 代码注入 210 10.3.1 XML注入 211 10.3.2 XPath注入 212 10.3.3 JSON注入 215 10.3.4 HTTP Parameter Pollution 216 10.4 URL跳转与钓鱼 218 10.4.1 URL跳转 218 10.4.2 钓鱼 220 10.5 WebServer远程部署 224 10.5.1 Tomcat 224 10.5.2 JBoss 226 10.5.3 WebLogic 229 10.6 小结 233 第3篇 实战篇 第11章 实战入侵与防范 236 11.1 开源程序安全剖析 236 11.1.1 0day攻击 236 11.1.2 网站后台安全 238 11.1.3 MD5还安全吗 243 11.2 拖库 248 11.2.1 支持外连接 248 11.2.2 不支持外连接 253 11.3 小结 262 第4篇 综合篇 第12章 暴力破解测试 264 12.1 C/S架构破解 265 12.2 B/S架构破解 272 12.3 暴力破解案例 275 12.4 防止暴力破解 277 12.5 小结 278 第13章 旁注攻击 279 13.1 服务器端Web架构 279 13.2 IP逆向查询 280 13.3 SQL跨库查询 282 13.4 目录越权 283 13.5 构造注入点 284 13.6 CDN 286 13.7 小结 288 第14章 提权 290 14.1 溢出提权 290 14.2 第三方组件提权 294 14.2.1 信息搜集 294 14.2.2 数据库提权 296 14.2.3 FTP提权 302 14.2.4 PcAnywhere提权 312 14.3 虚拟主机提权 314 14.4 提权辅助 315 14.4.1 3389端口 315 14.4.2 端口转发 318 14.4.3 启动项提权 320 14.4.4 DLL劫持 321 14.4.5 添加后门 322 14.5 服务器防提权措施 324 14.6 小结 325 第15章 ARP欺骗攻击 326 15.1 ARP协议简介 326 15.1.1 ARP缓存表 326 15.1.2 局域网主机通信 327 15.1.3 ARP欺骗原理 328 15.2 ARP攻击 329 15.2.1 Cain 329 15.2.2 Ettercap 332 15.2.3 NetFuke 336 15.3 防御ARP攻击 339 15.4 小结 340 第16章 社会工程学 341 16.1 信息搜集 341 16.2 沟通 343 16.3 伪造 344 16.4 小结 345

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值