微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

没有查询字符串选项的页面上的查询字符串

如何解决没有查询字符串选项的页面上的查询字符串

我有一个不使用查询字符串的页面。 前任。 https://testsite.com/defalut.aspx

我们的网络管理员运行漏洞扫描,并表示某些页面存在问题。 这是破坏它的 URL 前任。 https://testsite.com/default.aspx?>>>>=1

我知道他使用的软件在测试过程中添加了这个查询字符串,但是如何在没有检查查询字符串的页面上排除这样的查询字符串?

我认为因为没有检查页面可以毫无问题地加载的查询字符串。

我使用的是 Visual Studio 2019 C#、IIS 10。

报告结果

Using the GET HTTP method,nessus found that :
+ The following resources may be vulnerable to sql injection (on        
parameters names) :

> /default.aspx?'%2Bconvert(int,convert(varchar%2C0x7b5
d))%2B'=1
-------- request --------
GET /default.aspx?'%2Bconvert(int,convert(varchar%2C0x7b5d))%2B'=1
HTTP/1.1
Host: testsite.com
Accept-Charset: iso-8859-1,utf-8;q=0.9,*;q=0.1
Accept-Language: en
Connection: Close
Cookie: ASP.NET_SessionId=f1lv3mbn4qodbzm44wjhlhizxswe3
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1;
Trident/4.0)
Pragma: no-cache
Accept: image/gif,image/x-xbitmap,image/jpeg,image/pjpeg,image/png,*/*
------------------------
-------- output --------
<html>
<head>
<title>ORA-12520: TNS:listener Could not find available handler for requ
 ested type of server</title>
 <Meta name="viewport" content="width=device-width" />
<style>
------------------------

谢谢

解决方法

我认为您需要更多信息。

如果来自所示请求的响应有一些暗示可能存在漏洞的细节,例如响应中出现的某些查询字符串可能暗示 XSS 等,渗透测试将标记一个问题。

扫描结果将提供有关为什么该请求会揭示潜在漏洞的更多信息 - 请向您的网络管理员询问完整报告的访问权限,因为这将使您能够确定是否存在需要解决的潜在问题,或者这是一个误报。我的猜测是您使用的框架反映了页面链接中的查询字符串,但这是一个真实的猜测。

根据我们的聊天和问题更新进行一些扩展。对于注入攻击和 XSS 等漏洞,主要防御措施是将输入列入黑名单、将输入列入白名单并消除不受信任的数据。

黑名单通常是最后的手段——无论你能阻止什么模式,都可能有办法绕过它。

如果可能,白名单可有效防止恶意数据通过您的应用程序进入,但仅靠其本身可能还不够。如果您网站上的任何内容来自持久数据,是否还有其他恶意数据进入的方式?是否有任何其他应用程序可以更新数据?谁有权直接执行sql?社会工程学是一种真正的威胁,有访问权限的人可能会被诱骗做危险的事情。

中和不受信任的数据意味着不同的事情,具体取决于威胁。对于 sql 注入,不可信的输入通过使用准备好的语句中和 - 永远不要将用户输入连接到语句中。

对于 XSS 中和通常意味着转义任何可能被恶意使用的数据。这通常是在页面上输出数据时而不是在输入时,因为适当的转义形式取决于包含数据的页面内容中的位置 - 是在文本块中,还是在 href 属性中,还是在页面上的脚本。

在您的情况下,由于您从不期望请求参数,您可能可以采用一种非常简单的方法。白名单(通过查询拒绝任何请求)或中和输入(通过剥离任何查询)。如果您的应用程序服务器前面有一个像 Apache httpd 这样的网络服务器,我认为可以使用 MOD_REWRITE 来完成,否则我认为 asp.net 具有类似的请求重写功能。

是列入白名单还是无效化只会影响用户体验,可能无关紧要 - 实际上,实际用户不太可能坐在屏幕前发送潜在的恶意请求。大多数公共网站都充斥着类似于渗透测试的自动攻击尝试。

听起来您的某些页面内容确实依赖于数据库中的数据,因此尽管上述内容可以解决您的渗透测试警告,但值得考虑转义输出以确保真正安全。我假设 asp.net 有一些内置函数来支持这一点。

我也有点担心错误消息是否被转储到页面标题中,就像这种情况一样 - 详细的错误信息本身就是一个漏洞,因为它可以为攻击者提供有关您网站的大量有用信息实施,以及对不同攻击尝试效果的有用反馈。

阅读更多信息的最佳地点是 OWASP website

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?