您的位置:网站首页 > asp源码 > 正文

Web源码安全审计之 ASP 篇asp源码

类别:asp源码 日期:2014-10-23 14:14:19 人气: 来源:

  0×01 ASP简介:

  ASP是一种服务器端脚本编写,可以用来创建和运行动态网页或Web应用程序。ASP网页可以包含HTML标记、普通文本、脚本命令以及COM组件等。利用ASP可以向网页中添加交互式内容(如在线表单),也可以创建使用HTML网页作为用户界面的web应用程序。

  0×02 ASP漏洞介绍:

  一.数据库径泄露 (DataBase Path Leak)

  概述:数据库径泄露主要表现在ASP+Access搭建的WEB中,当者提交%5c的时候,IIS会解析错误,导致输出了真实数据库径, %5c是\的十六进制代码,也就是\的另一种表示方法。

  漏洞原理:我们在提交数据的时候,IE会自动把%5c转换成/,从而得到同一地址。在asp类型网站中,都会用到一个数据库连接的文件,名字一般是conn.asp。

  漏洞代码:这里我用动力文章系统做案例,代码如下:

  equest方法获取的参数file没经过安全处理,被Execute方法执行了。

  漏洞利用:若某个应用程序不存在上传漏洞,那么者可以上传个正常图片格式的文件,文件中包换ASP脚本代码,这时候就可以用本地包含漏洞去执行图片中的ASP代码。如下图所示

  如果jpg里写入的ASP小马,那就可以轻松得到一个WebShell。

  漏洞修复:尽量系统指定执行文件,不要让客户端提交参数,实在需要动态改变参数,可以辅助一个匹配文件,若客户端提交的参数在文件中出现,则可以执行,否则不允许继续执行。

  八.径操控(Path Manipulation)

  概述:用户输入控制 file system 操作所用的径,借此者可以访问或修改其他受的系统资源。

  漏洞原理:当满足以下两个条件时,就会产生path manipulation 错误:

  1. 者能够指定某一 file system操作中所使用的径。

  2. 者可以通过指定特定资源来获取某种权限,而这种权限在一般情况下是不可能获得的。

  漏洞代码:下面以经典的Ewebeditor编辑器做分析,在编辑器文件管理处存在一个径操控漏洞,者可以指定径的读取范围,造成安全隐患。

  Then

  If CheckValidDir(Server.Mappath(sUploadDir & sDir)) = True Then

  sCurrDir = sUploadDir & sDir & /

  Else

  sDir =

  End If

  End If

  End Function

  %>

  若者想利用此漏洞需要满足2个条件,第一sStyleID这个值不能为空,并且是数据库中存在的ID号。第二 sDir 这个变量没有经过任何安全处理,带入到 sCurrDir 变量中,只是最后不需要输入“/”。

  漏洞利用:admin_uploadfile.asp?id=22&dir=../.. 执行后将跳转到2个上级目录下,者可以删除任意文件和文件夹。如下图所示

  漏洞修复:针对此漏洞用Replace函数过滤掉“..” 。

  九.表单提交(Spoofed Form Submit)

  概述:表单提交是当前Web应用中的重要内容,用户可以通过这种方式与服务器进行数据传递。在通常情况下,会在提交表单之前在服务器上进行表单数据的验证,这样可以节省服务器资源,但同时也为服务器带来了安全漏洞。

  漏洞原理:顾名思义Web程序只是在客户端用JavaScript验证了性,并没有在服务端验证数据的性。

  漏洞代码:下面以上传页面做为案例分析

  漏洞利用:者只需要禁用浏览器中的活动脚本和Javascript脚本就可以发动一次。禁用如下图所示:

  第二种方法制作个HTML页面,只需将JS脚本删除,再将Action值改成需要的目标网址即可。

  漏洞修复:客户端和服务端都要做验证,客户端做验证能提高用户体验,服务端再验证能数据安全。

  十.Http请求伪造(Spoofed HTTP Request)

  概述:一个比表单更高级和复杂的方式是HTTP请求。这给了者完全的控制权与灵活性,它进一步证明了不能盲目信任用户提交的任何数据。看到大多数浏览器会包含一个来源的URL值,你可能会试图使用Request.ServerVariables(“HTTP_REFERER”)变量去防止。确实,这可以用于对付利用标准浏览器发起的,但者是不会被这个小麻烦给挡住的。通过编辑HTTP请求的原始信息,者可以完全控制HTTP头部的值,GET和POST的数据,以及所有在HTTP请求的内容。

  漏洞原理:通过Request.ServerVariables 去验证数据来源的性,依旧不可靠,毕竟一切从Request获取的值都可以被伪造出来的。

  漏洞代码:下面以ASP中经典验证来源的代码做分析

  Serv_url then

  Response.Write 非法链接!

  Response.End

  End if

  %>

  上述代码中2个判断的值均来自客户端变量,判断思是目标地址和来源地址的域名是否一致,不一致则认为法访问,这段代码常用于防盗链模块中。

  漏洞利用:用法HTTP代理软件构造一个特定的数据包,在HTTP头加上Referer 。如下图所示

  漏洞修复:验证数据来源的真实性还是应该放在服务端,Request变量获取的值都是不可靠的。

  十一.代码注入(Code Injection)

  概述:许多现代编程语言都允许动态解析源代码指令。 如果程序员需要由用户提供的指令对数据操作,这种情况下可以应用这种功能。当然,我们更愿意利用底层语言构造,而不是通过执行代码来解析用户输入。 由用户提供的指令预期执行一些无害的操作,例如,对当前的用户对象进行简单计算或修改用户对象的状态,等等。然而,如果程序员不够细心,用户指定的操作范围可能会超出程序员最初的设想。

  漏洞原理:ASP应用程序中若存在Eval ,Execute ,ExecuteGlobal 函数使用时,要格外注意它们的使用,若从外部获取参数,没有经过安全处理 就会造成安全隐患。Eval() 计算表达式的值,并且返回一个结果,Execute() 执行一个或多个指定的语句。多个语句间用冒号(:)隔开 ,ExecuteGlobal() 在全局名字空间中执行一个或多个指定的语句。

  漏洞代码:

  上述代码用户提交parma的方法有GET,POST,COOKIE三种,者可以精心构造出ASP的小马提交就可以执行,安全隐患相当大,在源码审计的过程中要额外注意它们的使用。

  漏洞利用:

  若者给parma参数值等于VB里的Now()函数,就会把当前的时间输出出来,这里代码用Eval函数执行的,若是Execute 和 ExecuteGlobal函数则不会输出到网页中。

  漏洞修复:谨慎使用此三个函数,若需要动态执行,则只让用户输入和本地文件中匹配的字符,若不匹配则不可以执行。

  十二.XML中的XPATH注入(Xpath Injection)

  概述:Xml文档存储数据时,若查询数据不经过安全过滤也会和关系型数据库一样,产生注入漏洞,在这里我们总结成XPATH注入漏洞,在这里它更像是ACCESS数据库。

  漏洞原理: 如同Access数据库一样,XML文档只是保存数据用的,若程序对用户提交的数据没有经过安全处理,则会导致安全问题,在这里最常见的莫过于经典的万能密码。

  漏洞代码:

  Then

  Session(UserName) = asp163

  Response.Write(Welcome , Sysadmin)

  Else

  Response.Redirect(/admin/Login.asp)

  end if

  end function

  ConnectXml(../admin.xml)

  Call SelectXmlNodeText(Request(name),Request(pass))

  %>

  上述代码实现的是一个后台管理验证的功能,admin.xml文件位于站点根目录之外,无法用Http方式下载。程序对Request对象获取来的数据没有经过安全过滤,导致了经典万能密码绕过漏洞。

  漏洞利用:

  者提交Name和Pass都是“’or ’1′=’1”时候,XML查询节点就变成 “//root/row[name=or 1=1 and password=or 1=1]” OR语句 发挥了重大作用,只要一个条件就可以满足绕过的条件。

  漏洞修复:和SQL注射一样,需要对客户端提交过来的数据进行过滤,在本案例中可以过滤掉单引号即可。

  数据库径泄露主要表现在ASP+Access搭建的WEB中,当者提交%5c的时候,IIS会解析错误,导致输出了真实数据库径, %5c是\的十六进制代码,也就是\的另一种表示方法。

  AD:

  十三.SQL注射(SQL Injection)

  概述:目前没有对SQL注入技术的标准定义,微软中国技术中心从2个方面进行了描述:

  (1) 脚本注入式的

  (2) 恶意用户输入用来影响被执行的SQL脚本

  SQL注入利用的是SQL语法,这使得这种具有广泛性。理论上说,对于所有基于SQL语言标准的数据库软件包括SQL Server,Oracle,MySQL, ACCESS,DB2,Informix等以及与之连接的网络应用程序包括Active/Java Server Pages, PHP或Perl等都是有效的。当然各种软件有自身的特点,实际的代码可能不尽相同。

  漏洞原理: 通过客户端发送SQL语句,可以查询,更新,删除 数据库中的数据,此漏洞是ASP下最为流行的漏洞。者可以通过GET,POST,COOKIE,SERVER提交任意数据,若数据库是SQL Server数据库,则漏洞危害性更大。

  漏洞代码:

延伸内容:
关键词:asp源码
0
0
0
0
0
0
0
0
下一篇:没有资料

网友评论 ()条 查看

姓名: 验证码: 看不清楚,换一个

推荐文章更多

热门图文更多

最新文章更多

关于联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助

CopyRight 2002-2012 技术支持 源码吧 FXT All Rights Reserved

赞助合作: