基于ASP.NET网站的安全漏洞和泄漏的检测算法外文翻译资料
2022-07-21 15:34:18
英语原文共 5 页,剩余内容已隐藏,支付完成后下载完整资料
基于ASP.NET网站的安全漏洞和泄漏的检测算法
Huyam AL-Amro and Eyas El-Qawasmeh
Information Systems Department
King Saud University, KSU
Riyadh, Saudi Arabia
huyamalamro@yahoo.com, eyasa@usa.net
摘要
用asp.net编写的网站可能包含网站所有者没有看到的安全漏洞。本文介绍了一种算法,其目的是实现安全漏洞检测。此算法是建议算法。建议算法执行扫描程序对所有网站/应用程序文件进行扫描。我们的扫描仪工具依赖于研究的源代码、应用程序的ASP.NET文件和后面的代码文件(Visual Basic VB和C C #)。编写此程序的目的是生成泄漏地方和安全漏洞类型的描述(通过提到的文件名描述其泄露所在的位置)。建议算法将帮助系统组织修复漏洞和改进整体安全。
关键词组成;ASP;ASP.NET;漏洞;泄漏;拒绝服务拒绝服务;威胁;安全性;JavaScript脚本;HTML;算法;SQL注入;跨站脚本XSS;劫持会话;Cookie中毒;iframe;
- 引言
目前许多组织和个人都会用网站开发许多实际生活中的应用,如支付账单,预定酒店,机票和其他许多相似的网站。这个接受用户输入的动态网页应用程序是在响应的基础上输入的网络应用程序,如许多网络应用程序是由ASP.NET框架开发的,会允许用户利用网站的弱点寻找安全漏洞注入自己的恶意代码或脚本。大多数程序员使用ASP.NET的Web应用程序构建动态网站的框架应用和网络服务[ 1 ],这是由于它有更好的语言支持及其独特的特点:事件驱动程序设计,丰富的服务器控件,方便和使用它的开发环境(视觉NET和Visual Web Developer)。例如,一常用的编程是从中收集用户数据(如用户名称),并在随后的数据上显示该数据用户访问期间访问的页面[ 2 ]。如果该输入控件不对恶意输入进行验证,黑客可以恶意输入或者将其注入并破坏数据库或窃取网站脚本文件。从这一点上,开发一个工具来测试网站/应用程序使用的ASP.NET的语言,特别是不存在专门的程序来检查的ASP.NET的网站来发现安全漏洞是非常有必要的。本文的建议算法是提高网站安全性的算法。所提出的算法包括许多步骤。我们能够通过实现这一算法的基本步骤来努力完成我们的全部工作。
- 漏洞类型
目前,有许多具有不同的复杂性、检测和恢复类型的漏洞。以下是本文将解决的主要类型。
1、SQL注入
SQL注入是一种攻击,可能出现在应用程序使用未被选中的用户输入有效时,黑客使用这种恶意输入和利用数据库中的敏感信息[ 3 ]来篡改数据库或者获取网站脚本文件。对于例如,如果我们有一个应用程序,需要输入字符串(SSN)的文本框,这是期待社会表格的NNN NN nnnn安全号码。之后,应用程序将执行一个相似SQL语句:
/ /使用动态SQL
SqlDataAdapter myCommand=newSqlDataAdapter('SELECT au lname, au_au id=”, SSN.Text ””,frame FROM authors WHERE,myConnection);
//使用存储过程
SqlDataAdaptermyCommand=newSqlDataAdapter('LoginStoredProcedurersquo;rsquo;rsquo; SSN.Text rsquo;rsquo;rsquo;rsquo;rsquo;, myConnection);
开发者希望用户输入像“172-32-9999”产生以下SQL语句:
SELECT au_lname, au_frame FROM authors WHERE au_id=#39; 172-32-9999#39;
但用户的恶意输入:
lsquo;;DROP DATABASE pubs--rsquo;
这将把数据库查询转换为:
SELECT au_lname, au_frame FROM authors WHERE au_id=”;DROP DATABASE pubs--rsquo;
在这种情况下,单引号启动恶意输入终止
正如在下面的语句:(字符标记)电流字符串字面值
SELECT au_ lname, au_ frame FROM authors WHERE au_id='
;(分号)字符告诉SQL,这是结束当前语句和另一个的开始:
;DROP DATABASE pubs
此代码的结果是删除“pubs”数据库。
最后,该--(双破折号)字符序列注释说,忽略了文本的其他[ 4 ]内容。
这个例子并不代表创建SQL注入的唯一案例;有许多形式的恶意输入都会创建这种类型的漏洞。例如,用户可以输入以下恶意输入:
lsquo;OR 1=1--
这将把数据库查询转换为:
SELECT au_ lname, au_ frame FROM authors WHERE au_id=' OR 1=1__
由于1 = 1总是评估为真,此查询将永远返回超过0行[5]。
- 跨站点脚本
跨站点脚本(#39;xss#39;)是一种最常见的应用层网络攻击。该攻击利用网络网站的漏洞,在该网站上显示与内容无关的数据,例如联合国提供的消毒数据[ 6 ] [ 7]等。跨站点脚本主要发生在浏览器数据有混合(HTML)代码(lt;脚本数据中嵌入的标记。该脚本可以混合JavaScript、VBScript、ActiveX控件、HTML或Flash等[ 8 ] [ 9 ])的动态网页中。“XSS”操作的客户端的目的主要是用一个网络应用程序的脚本来实现由恶意用户所需的方式执行。这是一般适用的地方应用程序需要输入的用户和显示相同的输入返回给用户通常作为响应相同的页面请求,如显示的搜索引擎在标题搜索词(“搜索结果为:search_术语”)[ 6 ] [ 7 ] [ 8 ]。利用“XSS”常用来实现
以下恶意结果[ 6 ]:
·识别盗窃
·访问敏感信息
·监视用户的网页浏览习惯
·改变浏览器功能
·Web应用的污损。
·拒绝服务
有2种主要类型的跨站点脚本:
1)存储跨站点脚本
- 反映跨站点脚本
- 存储跨站点脚本
存储(或持久的)跨站点脚本发生在当攻击者提供的数据被保存时服务器,然后显示在“正常”页面上返回给其他用户[ 15 ]。存储型XSS需要根据数据或者漏洞的类型特别放在应用程序中的某个地方(如数据库)和后来的反馈发送给用户,这可以通过论坛、博客等。攻击者可以发送lt;HTMLgt;或lt;JavaScriptgt; 的应用程序而不是正常的输入被存储在数据库,后来当受害者来到应用程序网站,他/她会下载设在那里的lt;HTML gt;或lt; JavaScript gt;。这里的应用程序做为黑客的作品[ 10 ]来攻击网站。例如,当用户来到购物网站,他想向网站管理员发送一个消息,他第一应该先登录到网站,然后寻找一个链接(如邮政信息链接,通常由主题名称和一个区域写留言)。攻击者可以利用这个设施注入他的恶意输入的XSS的。他将尝试通过简单脚本代码来检查网站的漏洞,然后他可以注入脚本:
lt;scriptgt; alert (document.cookie); lt;/scriptgt;
当网站管理员下载此消息时,他将收到一个小窗口包含cookie信息。黑客可以制作工艺脚本来窃取这个cookie信息到他的地盘。
- 反映跨站点脚本
反射(或非持久)的跨站点脚本通常发生在由网络客户端提供的数据在HTTP查询参数或HTML表单文件提交的时候,是由服务器端脚本未经使用消毒的要求[ 15 ] [ 11 ]立即生成一个页面的结果,并反映给用户。例如,如果我们有用户登录提示(用户身份、密码)和用户已提供了他的日志信息:
User-Id: Ahmed
Password:********
假定用户输入他的密码不正确,他可能有一个类似的消息(“对不起,无效日志”),但有时我们有一个类似的信息(“对不起,艾哈迈德,无效登录“),于是其中(用户名)发送和反射回输出就有了问题。如果没有在输入文本框中登录验证,攻击者可以利用这个注入他的恶意输入的XSS漏洞”代替user-id.攻击者可以制作一个电子邮件包含一个链接请求用户点击链接更新个人数据。这部分评论称为“网络钓鱼”,
攻击者发送几封电子邮件,希望有人点击在链接上,当受害者点击链接时,他会发出lt; JavaScript gt;申请并将其反射回来到受害者。攻击者可以抹去原始登录页面,并放置在同一个原始的受害人点击“提交”按钮,它会发送coolie信息给攻击者。
对XSS例子,假设我们有下面的ASP代码段,应用程序很容易受到XSS攻击:
lt;%Response.Write ('Your search on'#39; Request.Querystring('SearchString') 'returned following results:')%gt;
我们会把这个代码视为基础代码,下面的例子,我们只需要通过lt; JavaScript gt;代码作为“要查找的字符串的值”参数[ 8 ]。
·劫持会话
攻击者会以需要的cookie形式的劫持受害者的会话。这是可以通过创建另一个形式,并使其提交给攻击者网站。
lt;/formgt;lt;form name=#39;a#39; action=#39;attackersiteaddress#39;method=#39;post#39;gt;
lt;input type=hidden value=#39;lt;scripts document.cookie
lt;/scriptgt;#39;lt;/formgt;lt;scriptgt; a.submitU lt;/scriptsgt;
·Cookie中毒
攻击者可以破坏的价值,如果他检测应用程序是依赖于该Cookie值显示用户所做的具体操作“回应”。假设应用程序存储的值最后一次搜索完成时,用户以及在Cookie。攻击者在这里可以更新的值的最后搜索一个高能指着自己的网站如下:
lt;scriptgt; document.cookie.userlastsearch=#39;lt;A herf='attackersiteAddress'gt; You have won a random prize please click here to continue lt;/Agt;#39;lt;/scriptgt;
在那里,他可能会要求用户登录再次愚弄他与奖。攻击者可以用5美元,后者诱饵他请他为一些精彩的产品付50美元。这个金额可能不是主要目标,但信用卡号码。
·iframe
“lt; iframe gt;标签指定内联框架。内联帧是用来嵌入在当前的另一个文档HTML文件”[ 12 ]。攻击者可以通过显示用户界面来愚弄用户在高度和宽度上有100%个大小,看起来像一个应用站点通过写下以下恶意代码:
lt;iframe SRC='attacker site' height='100%' width=' 100%'gt;
从前面的例子,我们到达的主要易受交叉点应用的原因脚本攻击:
(1)没有输入验证控制的输入来到一个应用程序。
(2)没有消毒控制的输出应用程序[ 10 ]。
- 建议的方法un-cover泄漏
下面是该算法,该算法描述的泄漏。我们开发了这个算法,我们实现了基于java的检测。该算法由约12个步骤,其中每一步处理特定类型的泄漏。然而,由于空间限制,我们将列出只有2种类型的漏洞和讨论他们。他们是:SQL注入和跨站点脚本。
检查sql_注入(a1lowfiles [ ])
/ / a1lowfiles [ ]是一个数组包含了所有必要的文件从输入目录路径名和它的子目录和需要的检查。这些文件是类型:“ASPX”、“aspx。VB”、“aspx。CS”和“配置”。
/ /我们需要证实请求确认是存在的且有价值(真实)。
步骤0:检查是否“validatereguest”属性文件存在且有值(假),然后报告web.config泄漏。
/ /我们应该防止详细的错误显示向用户提供的信息可能成为黑客。
步骤1:检查“调试”属性是否在并有价值(真实),然后报告有web.config文件存在泄漏。
/ /如果“调试”属性是不存在的,这意味着它的值是默认情况下(真实)。
步骤2:查看“调试”属性是不存在在web.config文件然后报告有泄漏。
/ /我们应该提供最低限度的黑客通过设置“customErrors”属性”或“r
全文共9999字,剩余内容已隐藏,支付完成后下载完整资料
资料编号:[154948],资料为PDF文档或Word文档,PDF文档可免费转换为Word