目标URL存在跨站漏洞

🚖漏洞复现

记录学习中遇到的问题

该页面存在反射型XSS

在这里插入图片描述

payload

city=null&account=null&password=null&dataValue="><script>alert`6538`</script>

验证

在这里插入图片描述
在这里插入图片描述

🚖漏洞描述

跨站脚本攻击(也称为XSS)指利用网站漏洞从用户那里恶意盗取信息。用户在浏览网站、使用即时通讯软件、甚至在阅读电子邮件时,通常会点击其中的链接。攻击者通过在链接中插入恶意代码,就能够盗取用户信息或在终端用户系统上执行恶意代码。

成功的跨站脚本攻击所带来的主要问题包括:

帐号劫持 - 攻击者可以在会话cookie过期之前劫持用户的会话,并以访问ULR用户的权限执行操作,如发布数据库查询并查看结果。

恶意脚本执行 - 用户可能在不知情的情况下执行攻击者注入到动态生成页面中的JavaScript、VBScript、ActiveX、HTML甚至Flash内容。

蠕虫传播 -通过Ajax应用,跨站脚本可以以类似于病毒的方式传播。跨站脚本负载可以自动将其自身注入到页面中,并通过更多的跨站脚本轻易的重新注入同一主机,而所有这些都无需手动刷新页面。因此,跨站脚本可以使用复杂的HTTP方式发送多个请求,并以用户不可视的方式自我传播。

信息窃取 - 攻击者可以通过重新定向和伪造站点将用户连接到攻击者所选择的恶意服务器并获得用户所输入的任何信息。

拒绝服务 - 通常攻击者通过在包含有跨站脚本漏洞的站点上使用畸形的显示请求,就可以导致主机站点反复的自我查询,出现拒绝服务的情况。

浏览器重新定向 -在某些使用帧的站点上,用户可能在实际上已经被重新定向到恶意站点的情况下误导为仍处在原始站点上,因为浏览权地址栏中的URL仍保持不变。这是由于没有重新定向整个页面,而只是执行JavaScript的帧。

控制用户设置 - 攻击者可以恶意更改用户设置。

本漏洞属于Web应用安全常见漏洞。

🚖解决方法

推荐措施包括实施安全编程技术确保正确过滤用户提供的数据,并编码所有用户提供的数据以防以可执行的格式向终端用户发送注入的脚本。

🚖对于开发

可通过仔细验证所有输入和正确编码所有输出来防范跨站脚本攻击。可使用标准的ASP.NET验证控件或直接在代码中实施验证,要尽可能使用严格的模版。

输出编码要确保在将内容发送给客户端之前对任何可脚本化的内容都进行了正确的HTML编码。可通过HttpUtility.HtmlEncode函数实现,如以下Label控件示例所示:

Label2.Text = HttpUtility.HtmlEncode(input)

要考虑用户输入通过应用可能用到的所有路径。例如,如果数据是由用户输入的,存储在数据库中,然后再重新显示,就必须要确保在每次检索的时候都能正确编码。如果必须允许自由格式文本输入(如在消息板中),而又希望允许使用一些HTML格式,则可以通过仅明确允许很小的安全标签列表来安全的处理这种情况,如下所示:

C#示例:

StringBuilder sb = new StringBuilder(HttpUtility.HtmlEncode(htmlInputTxt.Text));
sb.Replace("&lt;b&gt;", "<b>");
sb.Replace("&lt;/b&gt;", "</b>");
sb.Replace("&lt;i&gt;", "<i>");
sb.Replace("&lt;/i&gt;", "</i>");
Response.Write(sb.ToString());
        

VB.NET示例:

Dim sb As StringBuilder = New StringBuilder( _
HttpUtility.HtmlEncode(input));
sb.Replace("&lt;b&gt;", "<b>");
sb.Replace("&lt;/b&gt;", "</b>");
sb.Replace("&lt;i&gt;", "<i>");
sb.Replace("&lt;/i&gt;", "</i>");
Response.Write(sb.ToString());

Java示例:

public static String HTMLEncode(String aText){
     final StringBuilder result = new StringBuilder();
     final StringCharacterIterator iterator = new StringCharacterIterator(aText);
     char character =  iterator.current();
     while (character != CharacterIterator.DONE ){
       if (character == '<') {
         result.append("&lt;");
       }
       else if (character == '>') {
         result.append("&gt;");
       }
       else if (character == '&') {
         result.append("&amp;");
      }
       else if (character == '\"') {
         result.append("&quot;");
       }
       else {
         //the char is not a special one
         //add it to the result as is
         result.append(character);
       }
       character = iterator.next();
     }
     return result.toString();
  }

以下建议可帮助构建能够抵御跨站脚本攻击的web应用。

定义允许的内容。确保web应用对所有输入参数(cookies、头、查询字符串、表单、隐藏字段等)验证严格定义的预期结果。

检查POST和GET请求的响应,确保返回内容是预期的且有效。

通过编码用户提供的数据从用户输入中删除冲突字符、括号、单双引号。这可以防范以可执行的方式向终端用户发送注入的脚本。

在可能的时候将所有客户端提供的数据仅限于字母数字的数据。使用这种过滤方案时,如果用户输入了<script>alert( 'aaa') </script>,就会被减少为scriptalert( 'aaa')script。如果必须使用非字母数字字符,在HTTP响应中使用之前将其编码为HTML实体,这样就无法将其用于修改HTML文档的结构。

使用双重用户认证机制而不是单重认证。

在修改或使用脚本之前确认其来源。

在自己的代码中使用时不要明确的信任任何来自他人的脚本,无论是从web下载还是来自熟人。

大多数服务器端脚本语言都提供了内嵌方式将输入变量的值转换为正确的不可解释HTML。应使用这种方式在将输入显示给客户端之前过滤所有输入。

PHP: string htmlspecialchars (string string [, int quote_style])

ASP / ASP.NET: Server.HTMLEncode (strHTML String)

🚖对于安全操作

服务器端编码指的是首先通过编码函数发送所有的动态内容,使用所选择字符集中的代码替换Scripting标签,这可以帮助防范跨站脚本攻击。服务器端编码的缺点是可能耗费资源,对一些web服务器的性能产生负面影响。

如果必须允许站点用户使用HTML标签,如允许用户使用的格式化标签的公告栏,则应限制可使用的标签。创建可接受标签的列表,如粗体字、斜体字或下划线,并仅允许使用这些,拒绝任何其他标签。以下是一些可帮助检测跨站脚本的正则表达式。

简单跨站脚本攻击的正则表达式:

/((\%3C)|<)((\%2F)|\/)*[a-z0-9\%]+((\%3E)|>)/ix

应如下将上述正则表达式添加到新的Snort规则:

alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"NIICross-Site Scripting attempt"; flow:to_server,established;pcre:"/((\%3C)|<)((\%2F)|\/)*[a-z0-9\%]+((\%3E)|>)/i";classtype:Web-application-attack; sid:9000; rev:5;)

跨站脚本攻击的偏执行正则表达式:

/((\%3C)|<)[^\n]+((\%3E)|>)/I

这条特征仅仅查找起始的HTML标签及其对等的16进制,之后的一个或多个字符为非换行符,再之后为结尾标签或其对等的16进制。这可能导致一些误报,具体取决于Web应用和Web服务器的架构。但这种方式可以确保捕获任何攻击,甚至远程类似的跨站脚本攻击。对于公众方面,可以加强教育程序,帮助用户防范可用于帐号劫持和其他形式身份窃取的在线欺诈,如网络钓鱼。

🚖对于质量保证

修复跨站脚本漏洞最终要求基于代码的修复。“对于开发”和“对于安全操作”部分所述步骤可为开发人员提供修复这些问题所需的信息。以下步骤概括了如何对应用程序手动测试跨站脚本。

1️⃣ 在浏览器中打开任意Web站点,查找可接受用户输入的位置,如搜索表单或某些登录页面。在搜索框中输入test并发送给Web服务器。

2️⃣寻找返回类似于Your search for 'test' did not find any items或Invalid login test页面的WEB服务器。如果结果页面中出现了test,请继续。

3️⃣如果要测试跨站脚本,在之前使用的同一搜索或登录框中输入<script>alert('hello')</script>字符串并发送给Web服务器。

4️⃣如果服务器所响应的弹出框显示hello,则站点受跨站脚本影响。

5️⃣ 即使步骤4失败,站点没有返回这条信息,仍可能存在风险。在浏览器中点击“查看源码”选项,查看Web页面的实际HTML代码。现在查找发送给服务器的

<script>alert('hello')</script>

文本,则Web服务器受跨站脚本的影响。

  • 13
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
### 回答1: vulfocus是一款用于漏洞复现和漏洞管理的工具。在复现vulfocus跨站脚本漏洞时,首先需要安装和配置vulfocus工具。然后,我们可以通过以下步骤进行漏洞的复现: 1. 打开vulfocus的Web界面,登录到系统中。 2. 在漏洞列表中,选择跨站脚本漏洞XSS漏洞)进行复现。 3. 在目标列表中选择一个目标进行测试。可以选择一个虚拟机,或者一个虚拟环境中的网站。 4. 点击“开始测试”按钮,vulfocus将开始对目标进行扫描和测试。 5. 在扫描结果中,寻找可能存在跨站脚本漏洞URL。 6. 点击URL链接,可以进入漏洞细节页面,查看漏洞的详细信息。 7. 根据漏洞的描述和建议,尝试利用该漏洞进行跨站脚本攻击。 8. 可以通过修改URL参数、输入恶意脚本等方式触发漏洞。 9. 观察攻击结果,确认是否成功执行跨站脚本攻击。 10. 根据漏洞复现的结果,可以采取相应的修复措施来修复漏洞。 以上是基本的vulfocus跨站脚本漏洞复现的步骤。需要注意的是,在进行漏洞复现时,应遵守相关法律法规,只在授权的目标上进行测试,并且避免对真实环境造成任何损害。漏洞复现仅用于学习和研究目的。 ### 回答2: vulfocus是一款漏洞扫描工具,其中包含了很多常见的网络安全漏洞。其中之一就是跨站脚本(XSS漏洞。为了复现vulfocus中的跨站脚本漏洞,可以按照以下步骤进行: 1. 下载并安装vulfocus:根据vulfocus的官方网站提供的安装说明,下载并安装vulfocus。 2. 配置目标网站:在vulfocus的配置文件中,指定一个目标网站进行漏洞扫描。确保目标网站允许测试环境中的XSS漏洞。 3. 开始漏洞扫描:使用vulfocus的命令行工具或者图形界面,开始对目标网站进行漏洞扫描。 4. 等待扫描结果:vulfocus会自动扫描目标网站中的各种漏洞,并生成报告。 5. 查看XSS漏洞复现:在扫描报告中,找到XSS漏洞相关的信息。 6. 复现XSS漏洞:使用漏洞扫描报告中提供的漏洞细节和示例,复现XSS漏洞。例如,可以使用一个带有恶意脚本的URL,然后在目标网站上执行该URL。这样就可以看到XSS漏洞造成的影响,如弹出恶意弹窗、窃取用户信息等。 需要注意的是,复现漏洞时务必遵守法律法规和道德规范,只在由授权的环境中进行漏洞测试,以避免对真实的网站和用户造成伤害。 ### 回答3: Vulfocus是一款常用于漏洞复现和安全测试的工具。其中的跨站脚本(XSS漏洞是一种常见的网络安全问题,通过该漏洞攻击者可以在受害者的浏览器中注入恶意代码,对用户进行钓鱼、窃取和篡改数据等恶意行为。 要复现Vulfocus中的跨站脚本漏洞,可以按照以下步骤进行: 1. 安装和配置Vulfocus:首先,在支持Docker的操作系统中安装Docker,然后从GitHub上获取Vulfocus的源代码并进行配置。 2. 寻找漏洞目标:使用Vulfocus可以扫描和寻找可能存在跨站脚本漏洞目标网站。可以通过修改配置文件或使用命令行参数来设置目标网站。 3. 执行漏洞检测:使用Vulfocus可以执行一系列的漏洞检测模块,其中就包括了跨站脚本漏洞检测。 4. 复现漏洞:如果Vulfocus发现了目标网站存在跨站脚本漏洞,可以通过点击相关的复现按钮来尝试复现漏洞。在复现漏洞时,Vulfocus通常会使用一些已知的攻击向量,如代码注入、HTML标签注入等。 需要注意的是,在进行漏洞复现时,应严格遵守法律和伦理规范,只在合法授权的环境中进行测试,避免对他人的系统和数据造成损害。 总之,通过Vulfocus可以方便地进行跨站脚本漏洞的复现和测试,帮助安全人员及时发现和修复漏洞,提高网络安全性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李白你好

年轻人,少吐槽,多搬砖

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值