Webgoat渗透环境-General

# OWASP靶机–webgoat环境(General练习)

提示:本文记录学习webgoat渗透环境过程,首先要下载OWASP系统,参考前面的文章进行下载和安装。在浏览器中访问OWASP的ip地址进行访问


前言

WebGoat是OWASP组织研制出的用于进行web漏洞实验的Java靶场程序,用来说明web应用中存在的安全漏洞。WebGoat运行在带有java虚拟机的平台之上,当前提供的训练课程有30多个,其中包括:跨站点脚本攻击(XSS)、访问控制、线程安全、操作隐藏字段、操纵参数、弱会话cookie、SQL盲注、数字型SQL注入、字符串型SQL注入、web服务、Open Authentication失效、危险的HTML注释等等。WebGoat提供了一系列web安全学习的教程,某些课程也给出了视频演示,指导用户利用这些漏洞进行攻击。


提示:以下是本篇文章正文内容,下面案例可供参考

一、HTTP基础知识

HTTP(Hyper Text Transfer Protocol)超文本传输协议,用于万维网(www)服务器的传输超文本到本地浏览器的传输协议。

Http请求报文由请求行,请求报头,请求正文组成
在这里插入图片描述
请求消息报头说明了客户端的基本信息,以及如何与客户端进行交互,消息报头由多行组成,每行以key:value的形式体现
每行末尾包括一个回车换行符(%0a%0d),消息报头末尾以两个回车换行符(%0a%0d)作为结束。下面为消息报头中的字段,如下图所示
在这里插入图片描述
HTTP响应报文由状态行,响应报文和响应正文组成
如图所示:
在这里插入图片描述
请求响应报头说明了服务端的基本信息、客户端如何处理返回的消息等,消息报头由多行组成,每行以key:value的形式体现,每行末尾包括一个回车换行符(%0a%0d),消息报头末尾以两个回车换行符(%0a%0d)作为结束。
报文字段如下图所示:
在这里插入图片描述

二、HTTP练习

1.HTTP响应

简介:本节主要目的是为了了解浏览器和服务器之间的数据传输,在输入框中输入任意字符,之后点击提交,就可以通过。

举例:在输入框中输入chinese,点击go提交按钮。
在这里插入图片描述
服务器返回的页面将chinese倒置输出为esenihc。
在这里插入图片描述

2.HTTP拆分

什么是HTTP拆分?

首先让我们设想一下某个具备多种语言选项的页面。该页面的默认语言为英语,但其中同时具备一个下拉菜单,允许我们在选定其中对应的其它语 种后,整个页面的语言也同时发生切换。比方说根据初始页面的配置,302重新指向的结果为http://www.abc.com /index.php?lang=en。但对于来自德国的用户而言,当然希望页面内容以德语呈现,这时他们就可以从下拉菜单的备用语言中进行选择。这使得 302重新指向将被发往服务器上的德语页面——http://www.abc.com/index.php?lang=german。用户的浏览器会遵循重新指向的引导,并将德语页面正常呈现出来。

内容大体如下:
HTTP/1.1 302 Moved Temporarily
Location: http://www.abc.com/index.php?lang=en
或者是:
HTTP/1.1 302 Moved Temporarily
Location: http://www.abc.com/index.php?lang=german

大家可能已经发现了,惟一产生变化的只有lang参数的值。也就是说,这个值是由用户所控制,我们可以将该值设置为任何想要的内容

总结:攻击者控制参数并发送一个将产生两次响应的请求;这两次响应都由攻击者组织,并以服务器为目标。首个响应旨在回应将页面转化,第二个响应用来构造响应报文。CR/LF(即回车换行符)是响应之间的分界符。所以只要在第一个请求参数后面添加CR/LF( %0d%0a ),那么第二 轮响应即会启动,且根据HTTP协议的规定这是完全正常的

HTTP拆分过程

1.判断是否存在HTTP拆分漏洞

题目如下,在输入框中输入chinese
在这里插入图片描述

使用Burp Suit开启代理拦截http请求报文,如下所示
在这里插入图片描述
将报文发送到repeater对该http报文进行响应测试,点击Go
在这里插入图片描述
可以看到,返回的http响应报文中,状态行为302 Moved Temporarily是重定向。location(重定向字段)也存在我们在输入框中的chinese,判断存在http拆分漏洞

2.构造playload进行HTTP拆分攻击

自定义HTTP头将其转换为URL编码进行攻击。使用在线编码工具http://www.jsons.cn/urlencode/进行URL编码

1.构造简单HTML标签

china
content-length:0

HTTP/1.1 200 OK
Content-Type: application/x-www-form-urlencoded
Content-length: 47
< html>yzt12345< /html>

URL编码:

china%0Acontent-length%3A%200%0A%0AHTTP%2F1.1%20200%20OK%0AContent-Type%3A%20application%2Fx-www-form-urlencoded%0AContent-length%3A%2047%0A%3Chtml%3Eyzt12345%3C%2Fhtml%3E

使用URL编码将HTTP响应报头进行编码转化,如下图:
在这里插入图片描述
将转换后的URL填入输入框中,点击SEARCH进行提交,观察是否会重定向新的页面显示yzt12345
在这里插入图片描述
页面跳转显示yzt12345的字符串,HTTP拆分攻击成功,如下图所示:
在这里插入图片描述
2.XSS攻击(跨站脚本)


构造xss将浏览器的cookie进行弹窗显示
en
Content-Length: 0

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 31
<html><script>alert(document.cookie)</script></html>

URL编码后:

en%0AContent-Length%3A%200%0A%0AHTTP%2F1.1%20200%20OK%0AContent-Type%3A%20text%2Fhtml%0AContent-Length%3A%2031%0A%3Chtml%3E%3Cscript%3Ealert(document.cookie)%3C%2Fscript%3E%3C%2Fhtml%3E%0A

在这里插入图片描述
将URL编码粘贴到输入框中进行提交,如下图显示本机浏览器的cookie值。
在这里插入图片描述
在这里插入图片描述
3.Cache Poisoning(缓存中毒)


Web缓存投毒的目的是发送导致有害响应的请求,将该响应将保存在缓存服务中并提供给其他用户 在构造的请求中加入Last-modify字段,并设置一个将来的值(如2022年5月2日).意思是服务器告诉浏览器,这个网页最后一次修改是在2022年5月2日. 如果浏览器不清除缓存,下一次请求这个页面会加上if-modify-since字段,值是2022年5月2日.浏览器会询问服务器这个网页在2022年5月2日之后是否修改?服务器会比对最后一次修改时间和传过来的时间,发现传过来的时间较新,就会回送304即Not Modified,表示这个网页没有被修改过。浏览器接收到响应会从本地缓存读取网页,当然是之前注入的错误网页.如果浏览器不清除缓存,再也别想读取到正确的网页信息了.这就是HTTP的Cache Poisoning(缓存毒化)
en
Content-Length: 0

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 31
last-Modified: Mon, 27 Oct 2025 14:50:18 GMT
<html><script>alert(document.cookie)</script></html>

URL编码:

en%0AContent-Length%3A%200%0A%0AHTTP%2F1.1%20200%20OK%0AContent-Type%3A%20text%2Fhtml%0AContent-Length%3A%2031%0Alast-Modified%3A%20Mon%2C%2027%20Oct%202025%2014%3A50%3A18%20GMT%0A%3Chtml%3E%3Cscript%3Ealert(document.cookie)%3C%2Fscript%3E%3C%2Fhtml%3E%0A

如下图所示,弹窗浏览器的cookie值
在这里插入图片描述
CR/LF的URL字符编码:CR = %0d = /r;LF = %0a = /n

HTTP响应拆分攻击的应对措施:

◆响应拆分攻击:使用服务器端验证机制并禁止用户在任何与响应头有关的输入请求中使用回车换行符(即CR/LF)。
◆XSS攻击:过滤转义。引入白名单、黑名单过滤机制
◆CSRF攻击:使用AntiCsrf语言符号,使攻击者无法准确预测目标结构

关于HTTP响应拆分攻击详细讲解可参考一下链接:
https://blog.csdn.net/rainzuoshao/article/details/9088575

总结

本节主要对webgoat渗透环境中的GENERAL(HTTP)进行练习,通过简单的HTTP响应和HTTP拆分漏洞来使初学者了解浏览器和服务器的交互。对于HTTP拆分漏洞攻击,会设计到XSS和CSRF攻击,盗取用户cookie和造成缓存中毒导致信息泄露。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值