整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

蓝易云 - HTTP/HTTPS以及XSS攻击详解

TTP(Hypertext Transfer Protocol)和HTTPS(Hypertext Transfer Protocol Secure)是Web应用程序中常见的数据传输协议。HTTP是一种无状态的应用层协议,主要用于Web浏览器与服务器之间的通信。HTTPS则是在HTTP的基础上加入了SSL(Secure Sockets Layer)或TLS(Transport Layer Security)协议,以提供数据加密和安全通信。

云服务器,高防服务器就选蓝易云,头条搜索:蓝易云

云服务器,高防服务器就选蓝易云,头条搜索:蓝易云

HTTP和HTTPS的区别

HTTP的工作原理

HTTP协议是一个基于请求-响应模式的协议。客户端(通常是Web浏览器)向服务器发送请求,服务器处理请求并返回响应。HTTP请求和响应都由头部和可选的主体组成。

HTTP的特点:

  • 无状态性:每次请求都是独立的,服务器不会记录任何客户端信息。
  • 明文传输:数据以明文形式传输,容易被窃听和篡改。
  • 性能高:由于不涉及加密解密过程,HTTP的通信效率相对较高。

HTTPS的工作原理

HTTPS在HTTP的基础上加入了SSL/TLS协议,通过加密通信确保数据的安全性。SSL/TLS提供了三个主要功能:加密、数据完整性和身份验证。

HTTPS的特点:

  • 数据加密:通过对传输的数据进行加密,防止数据被窃听。
  • 身份验证:通过数字证书验证服务器的身份,确保数据传输到正确的服务器。
  • 数据完整性:通过消息认证码(MAC)确保数据在传输过程中未被篡改。

HTTP与HTTPS的对比

特性

HTTP

HTTPS

数据传输

明文传输

加密传输

安全性

容易被窃听和篡改

提供数据加密和身份验证

性能

较高

较低(因加密解密开销)

使用场景

不敏感数据传输

敏感数据传输(如支付信息)

XSS攻击(跨站脚本攻击)

XSS(Cross-Site Scripting)攻击是一种常见的Web安全漏洞,攻击者通过在受信任的网站上注入恶意脚本,使其在用户的浏览器上执行。XSS攻击的主要目标是窃取用户数据、劫持会话以及进行其他恶意操作。

XSS攻击的类型

反射型XSS攻击

反射型XSS攻击通过将恶意脚本嵌入到URL参数中,诱骗用户点击包含恶意脚本的链接。当用户点击链接时,恶意脚本被反射到服务器的响应中,并在用户浏览器中执行。

示例:

<a href="http://example.com?search=<script>alert('XSS')</script>">Click me</a>

存储型XSS攻击

存储型XSS攻击将恶意脚本存储在服务器端的数据存储中(如数据库),当用户访问包含该数据的页面时,恶意脚本被执行。此类攻击通常发生在用户输入内容的地方,如评论区或论坛帖子。

示例:

<input type="text" name="comment" value="<script>alert('XSS')</script>">

DOM-based XSS攻击

DOM-based XSS攻击利用网页的DOM结构,通过操作DOM元素触发恶意脚本。与反射型和存储型不同,DOM-based XSS攻击不依赖服务器端的响应,而是直接在客户端进行。

示例:

<script>
  var search = location.hash.substring(1);
  document.write("<div>" + search + "</div>");
</script>

防范XSS攻击的方法

输入验证和过滤

对用户输入的数据进行严格验证和过滤,确保只接受预期格式的输入。可以使用正则表达式或白名单来限制输入内容。

示例:

import re
def validate_input(user_input):
    if re.match("^[a-zA-Z0-9_]+$", user_input):
        return True
    return False

输出编码和转义

对输出到浏览器的数据进行编码和转义,防止恶意脚本在浏览器中执行。常用的方法包括HTML实体编码和JavaScript转义。

示例:

<!-- HTML实体编码 -->
<div>{{ user_input | escape }}</div>

使用内容安全策略(CSP)

内容安全策略(CSP)是一种Web安全策略,通过限制页面可以加载的资源类型,防止XSS攻击。可以通过设置HTTP头部或HTML meta标签来配置CSP。

示例:

<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self';">

思维导图

为了更好地理解HTTP、HTTPS和XSS攻击的概念,下面提供了一张思维导图:

以上内容详细介绍了HTTP和HTTPS的工作原理及其区别,以及XSS攻击的类型和防范方法。通过这些知识的理解和应用,可以有效提升Web应用的安全性,防范潜在的安全威胁。

SS,中文名称:跨站脚本攻击。听名字就很霸气,的确是,不但霸气,还很难学(好多程序员都不会,为啥?)。它还有一个孪生兄弟,名叫:SQL注入。这个听过没有?

为啥说SQL注入是它的孪生兄弟呢?这个就,小孩没娘说来话长了。话说,Web互联网刚起步的时候,就为这俩货诞生埋下了罪恶种子。XSS如果换个名字就更容易理解,有人把XSS叫作:HTML注入,是不是感觉和SQL注入的名字很像?

有人要问了,你说他们是孪生兄弟,不会是因为他们的名字很像吧?Of course not。说他们是孪生兄弟是因为他们俩在安全界,总是被相提并论,总是一起被拿出来研究,总是一起被黑客利用,总是...。

言归正传,当年小编第一次接触XSS的时候,不知其为何物。曾尝试用它弹出一个alert框,心中充满了困惑:弹个框出来,有个毛线用?于是就把它放一边,潜心研究SQL注入,因为SQL注入再赖,但也能实现让你绕过密码验证从而非法登录,是不是很厉害?但是学了很长时间,只学会了一个:' or 1=1# 。感觉自己不适合学习这些高级的技术,因为自己只会根据书本上的例子,写个测试Demo,离开书本,在实际运用中,无从下手。

痛定思痛,小编决定重新学习这方面的知识。从XSS开始,一步一个脚印,一步一个坑。

下边从一个简单的例子说明一下XSS到底是个啥东西?

首先:建一个PHP页面,下图是后台代码:


第二步:通过GET请求正常访问这个页面。链接参数param为:XSS测试。链接如下:

http://localhost:82/xxs-case1.php?param=XSS测试

结果如下图:

看到结果,是我们代码期望的结果,没问题。

下一步儿我来测试一下XSS。

第三步:发送带HTML代码的参数,看看效果。链接参数:

http://localhost:82/xxs-case1.php?param=<script>alert('XSS测试')</script>

页面没有按我们预想的那样,返回:<script>alert('XSS测试')</script>,而是把我们的参数当代码,执行了,然后弹出了一个alert框。


总结一下:

首先重点强调,XSS攻击跟后台用什么语言开发无关,这里用PHP演示学习,只是因为小编擅长PHP,不是因为PHP的漏洞多。

其次:XSS,形成的原因是:开发人员没有把数据和代码区分开来。就像是应用软件中的堆栈溢出一样,用户输入的数据,影响到了软件执行流程,最终导致漏洞的出现。

再次:如果有人问,XSS除了能弹出一个框外,还有啥用途?这个问题,我回答不了,我只能说:黑客的想象力有多大,XSS的危害就有多大。窃取cookie删帖,严重的可以盗取账户,非法修改你的密码。总之,越是复杂的应用场景,XSS越是能发挥它的潜力。


今天的分享就这些了,明天继续。看在我码了一千一百七十八个字的面子上,点个赞再走吧。

译:h4d35

预估稿费:120RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿

前言


本篇文章主要介绍了在一次漏洞悬赏项目中如何利用配置错误挖到一个认证绕过漏洞。

从JS文件中发现认证绕过漏洞


本文内容源自一个私有漏洞赏金计划。在这个漏洞计划中,接受的漏洞范围限于目标网站少数几个公开的功能。基于前期发现的问题(当我被邀请进这个计划时,其他人一共提交了5个漏洞),似乎很难再挖到新的漏洞。同时,在赏金详情中提到了这样一句话:

如果你成功进入管理页面,请立即报告,请勿在/admin中进行进一步的测试。

然而,目标网站中存在一个仅限于未认证和未经授权的用户访问的管理页面。当我们访问/login或/admin时会跳转到https://bountysite.com/admin/dashboard?redirect=/。

对登录页面进行暴力破解也许是一个可行方案,但是我并不喜欢这种方式。看一下网页源码,没什么有用的内容。于是我开始查看目标网站的结构。似乎目标网站的JS文件都放在少数几个文件夹中,如/lib、/js、/application等。

有意思!

祭出神器BurpSuite,使用Intruder跑一下看能否在上述文件夹中找到任何可访问的JS文件。将攻击点设置为https://bountysite.com/admin/dashboard/js/*attack*.js。注意,不要忘记.js扩展名,这样如果文件能够访问则返回200响应。确实有意思!因为我找到了一些可访问的JS文件,其中一个文件是/login.js。

访问这个JS文件https://bountysite.com/admin/dashboard/js/login.js,请求被重定向至管理页面:) 。但是,我并没有查看该文件的权限,只能看到部分接口信息。

但是我并没有就此止步。这看起来很奇怪,为什么我访问一个.js文件却被作为HTML加载了呢?经过一番探查,终于发现,我能够访问管理页面的原因在于*login*。是的,只要在请求路径/dashboard/后的字符串中含有*login*(除了'login',这只会使我回到登录页面),请求就会跳转到这个管理接口,但是却没有正确的授权。

我继续对这个受限的管理接口进行了进一步的测试。再一次查看了页面源码,试着搞清楚网站结构。在这个管理接口中,有其他一些JS文件能够帮助我理解管理员是如何执行操作的。一些管理操作需要一个有效的令牌。我试着使用从一个JS文件中泄露的令牌执行相关管理操作,然并卵。请求还是被重定向到了登录页面。我发现另外一个真实存在的路径中也部署了一些内容,那就是/dashboard/controllers/*.php。

再一次祭出BurpSuite,使用Intruder检查一下是否存在可以从此处访问的其他任何路径。第二次Intruder的结果是,我发现几乎不存在其他无需授权即可访问的路径。这是基于服务器返回的500或者200响应得出的结论。

回到我在上一步侦察中了解到的网站结构中,我发现这些路径是在/controllers中定义的,通过/dashboard/*here*/进行访问。但是直接访问这些路径会跳转到登录页面,似乎网站对Session检查得还挺严格。此时我又累又困,几乎都打算放弃了,但是我想最后再试一把。如果我利用与访问管理页面相同的方法去执行这些管理操作会怎么样呢?很有趣,高潮来了:) 我能够做到这一点。

通过访问/dashboard/photography/loginx,请求跳转到了Admin Photography页面,并且拥有完整的权限!

从这里开始,我能够执行和访问/dashboard/*路径下的所有操作和目录,这些地方充满了诸如SQL注入、XSS、文件上传、公开重定向等漏洞。但是,我没有继续深入测试,因为这些都不在赏金计划之内,根据计划要求,一旦突破管理授权限制,应立即报告问题。此外,根据管理页面显示的调试错误信息可知,我之所以能够访问到管理页面,是因为应用程序在/dashboard/controllers/*文件中存在错误配置。期望达到的效果是:只要请求链接中出现*login*,就重定向至主登录页面,然而,实际情况并不如人所愿。

后记


总之,这是有趣的一天!我拿到了这个漏洞赏金计划最大金额的奖励。