[转]安全知识3:ASP网站漏洞

news/2024/5/15 22:56:59/文章来源:https://blog.csdn.net/ty_soft/article/details/7279000
以下内容转自

ASP网站漏洞解析及黑客入侵防范方法

如何更好的达到防范黑客攻击,本人提一下个人意见!第一,免费程序不要真的就免费用,既然你可以共享原码,那么攻击者一样可以分析代码。如果在细节上注意防范,那样你站点的安全性就大大的提高了。即使出现了SQL Injection这样的漏洞,攻击者也不可能马上拿下你的站点。

 由于ASP的方便易用,越来越多的网站后台程序都使用ASP脚本语言。但是,由于ASP本身存在一些安全漏洞,稍不小心就会给黑客提供可乘之机。事实上,安全不仅是网管的事,编程人员也必须在某些安全细节上注意,养成良好的安全习惯,否则会给自己的网站带来巨大的安全隐患。目前,大多数网站上的ASP程序有这样那样的安全漏洞,但如果编写程序的时候注意一点的话,还是可以避免的。
1、用户名与口令被破解
攻击原理:用户名与口令,往往是黑客们最感兴趣的东西,如果被通过某种方式看到源代码,后果是严重的。
防范技巧:涉及用户名与口令的程序最好封装在服务器端,尽量少在ASP文件里出现,涉及与数据库连接的用户名与口令应给予最小的权限。出现次数多的用户名与口令可以写在一个位置比较隐蔽的包含文件中。如果涉及与数据库连接,在理想状态下只给它以执行存储过程的权限,千万不要直接给予该用户修改、插入、删除记录的权限。
2、验证被绕过
攻击原理:现在需要经过验证的ASP程序大多是在页面头部加一个判断语句,但这还不够,有可能被黑客绕过验证直接进入。
防范技巧:需要经过验证的ASP页面,可跟踪上一个页面的文件名,只有从上一页面转进来的会话才能读取这个页面。
3、inc文件泄露问题
攻击原理:当存在ASP的主页正在制作且没有进行最后调试完成以前,可以被某些搜索引擎机动追加为搜索对象。如果这时候有人利用搜索引擎对这些网页进行查找,会得到有关文件的定位,并能在浏览器中查看到数据库地点和结构的细节,并以此揭示完整的源代码。
防范技巧:程序员应该在网页发布前对它进行彻底的调试;安全专家则需要加固ASP文件以便外部的用户不能看到它们。首先对.inc文件内容进行加密,其次也可以使用.asp文件代替.inc文件使用户无法从浏览器直接观看文件的源代码。inc文件的文件名不要使用系统默认的或者有特殊含义容易被用户猜测到的名称,尽量使用无规则的英文字母。
4、自动备份被下载
攻击原理:在有些编辑ASP程序的工具中,当创建或者修改一个ASP文件时,编辑器自动创建一个备份文件,比如:UltraEdit就会备份一个.bak文件,如你创建或者修改了some.asp,编辑器会自动生成一个叫 some.asp.bak文件,如果你没有删除这个bak文件,攻击者可以直接下载some.asp.bak文件,这样some.asp的源程序就会被下载。
防范技巧:上传程序之前要仔细检查,删除不必要的文档。对以BAK为后缀的文件要特别小心。
5、特殊字符
攻击原理:输入框是黑客利用的一个目标,他们可以通过输入脚本语言等对用户客户端造成损坏;如果该输入框涉及数据查询,他们会利用特殊查询语句,得到更多的数据库数据,甚至表的全部。因此必须对输入框进行过滤。但如果为了提高效率仅在客户端进行输入合法性检查,仍有可能被绕过。
防范技巧:在处理类似留言板、 BBS等输入框的ASP程序中,最好屏蔽掉HTML、JavaScript、VBScript语句,如无特殊要求,可以限定只允许输入字母与数字,屏蔽掉特殊字符。同时对输入字符的长度进行限制。而且不但要在客户端进行输入合法性检查,同时要在服务器端程序中进行类似检查。

6、数据库下载漏洞
攻击原理:在用Access做后台数据库时,如果有人通过各种方法知道或者猜到了服务器的Access数据库的路径和数据库名称,那么他也能够下载这个Access数据库文件,这是非常危险的。
防范技巧:
(1)为你的数据库文件名称起个复杂的非常规的名字,并把它放在几层目录下。所谓 “非常规”,打个比方说,比如有个数据库要保存的是有关书籍的信息,可不要给它起个“book.mdb”的名字,而要起个怪怪的名称,比如d34ksfslf.mdb,并把它放在如./kdslf/i44/studi/的几层目录下,这样黑客要想通过猜的方式得到你的Access数据库文件就难上加难了。
(2)不要把数据库名写在程序中。有些人喜欢把DSN写在程序中,比如:

<%
  DBPath 
= Server.MapPath(“cmddb.mdb”)
  conn.Open “driver
={Microsoft Access Driver (*.mdb)};dbq=” & DBPath 
%
>

 假如万一给人拿到了源程序,你的Access数据库的名字就一览无余了。因此建议你在ODBC里设置数据源,再在程序中这样写:

<%conn.open“shujiyuan”%>

 (3)使用Access来为数据库文件编码及加密。首先在“工具→安全→加密/解密数据库”中选取数据库(如:employer.mdb),然后按确定,接着会出现“数据库加密后另存为”的窗口,可存为:“employer1.mdb”。
要注意的是,以上的动作并不是对数据库设置密码,而只是对数据库文件加以编码,目的是为了防止他人使用别的工具来查看数据库文件的内容。
接下来我们为数据库加密,首先打开经过编码了的 employer1.mdb,在打开时,选择“独占”方式。然后选取功能表的“工具→安全→设置数据库密码”,接着输入密码即可。这样即使他人得到了 employer1.mdb文件,没有密码他也是无法看到 employer1.mdb中的内容。

7、防范远程注入攻击
这类攻击在以前应该是比较常见的攻击方式,比如POST攻击,攻击者可以随便的改变要提交的数据值已达到攻击目的.又如:COOKIES 的伪造,这一点更值得引起程序编写者或站长的注意,不要使用COOKIES来做为用户验证的方式,否则你和把钥匙留给贼是同一个道理.

  比如:

<%
   
If trim(Request. cookies ("uname"))="fqy" and Request.cookies("upwd"=”fqy#e3i5.com” then 
  ……..more……… 
    
End if 
%
>

  我想各位站长或者是喜好写程序的朋友千万别出这类错误,真的是不可饶恕.伪造COOKIES 都多少年了,你还用这样的就不能怪别人跑你的密码.涉及到用户密码或者是用户登陆时,你最好使用session 它才是最安全的.如果要使用COOKIES就在你的COOKIES上多加一个信息,SessionID,它的随机值是64位的,要猜解它,不可能.例:

<%
  
if not (rs.BOF or rs.eof) then 
  login
="true" 
  Session(
"username"&sessionID) = Username 
  Session(
"password"& sessionID) = Password 
  ‘Response.cookies(“username”)
= Username 
  ‘Response.cookies(“Password”)
= Password
%
>

  下面我们来谈谈如何防范远程注入攻击,一般的攻击都是将单表提交文件拖到本地,将Form ACTION=”chk.asp” 指向你服务器中处理数据的文件即可.如果你全部的数据过滤都在单表页上,那么恭喜你,你将已经被脚本攻击了.

  怎么才能制止这样的远程攻击?好办,请看代码如下:

<% 
  server_v1
=Cstr(Request.ServerVariables("HTTP_REFERER")) 
  server_v2
=Cstr(Request.ServerVariables("SERVER_NAME")) 
  
if mid(server_v1,8,len(server_v2))<>server_v2 then 
     response.write 
"<br><br><center>" 
     response.write 
" " 
     response.write 
"你提交的路径有误,禁止从站点外部提交数据请不要乱改参数!" 
     response.
end 
  
end if 
%
>

个人感觉上面的代码过滤不是很好,有一些外部提交竟然还能堂堂正正的进来,于是再写一个.

这个是过滤效果很好,建议使用.

<%
if instr(request.servervariables("http_referer"),"http://"&request.servervariables("host") )<1 then 
   response.write 
"处理 URL 时服务器上出错。
如果您是在用任何手段攻击服务器,那你应该庆幸,你的所有操作已经被服务器记录,我们会第一时间通知公安局与国家安全部门来调查你的IP. " 
  response.end 
end if
%
>

  本以为这样就万事大吉了,在表格页上加一些限制,比如maxlength啦,等等..但天公就是那么不作美,你越怕什么他越来什么.你别忘了,攻击者可以突破sql注入攻击时输入框长度的限制.写一个SOCKET程序改变HTTP_REFERER?我不会。网上发表了这样一篇文章:

  ------------len.reg-----------------
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\扩展(&E)]
@="C:\Documents and Settings\Administrator\桌面\len.htm"
"contexts"=dword:00000004
-----------end----------------------
-----------len.htm------------------

----------end-----------------------

  用法:先把len.reg导入注册表(注意文件路径)
然后把len.htm拷到注册表中指定的地方.

  打开网页,光标放在要改变长度的输入框上点右键,看多了一个叫扩展的选项了吧

  单击搞定! 后记:同样的也就可以对付那些限制输入内容的脚本了.

  怎么办?我们的限制被饶过了,所有的努力都白费了?不,举起你de键盘,说不。让我们继续回到脚本字符的过滤吧,他们所进行的注入无非就是进行脚本攻击。我们把所有的精力全都用到ACTION以后的页面吧,在chk.asp页中,我们将非法的字符全部过滤掉,结果如何?我们只在前面虚晃一枪,叫他们去改注册表吧,当他们改完才会发现,他们所做的都是那么的徒劳。

 8、ASP木马
  已经讲到这里了,再提醒各位论坛站长一句,小心你们的文件上传:为什么论坛程序被攻破后主机也随之被攻击者占据。原因就在……对!ASP木马!一个绝对可恶的东西。病毒么?非也.把个文件随便放到你论坛的程序中,您老找去吧。不吐血才怪哦。如何才能防止ASP木马被上传到服务器呢?方法很简单,如果你的论坛支持文件上传,请设定好你要上传的文件格式,我不赞成使用可更改的文件格式,直接从程序上锁定,只有图象文件格式,和压缩文件就完全可以,多给自己留点方便也就多给攻击者留点方便。怎么判断格式,我这里收集了一个,也改出了一个,大家可以看一下:

'判断文件类型是否合格 
Private Function CheckFileExt (fileEXT) 
   
dim Forumupload
   Forumupload
="gif,jpg,bmp,jpeg" 
   Forumupload
=split(Forumupload,","
   
for i=0 to ubound(Forumupload)
      
if lcase(fileEXT)=lcase(trim(Forumupload(i))) then 
       CheckFileExt
=true 
       
exit Function 
     
else 
       CheckFileExt
=false
      
end if 
   
next 
End Function

'验证文件内容的合法性
set MyFile = server.CreateObject ("Scripting.FileSystemObject"
set MyText = MyFile.OpenTextFile (sFile, 1' 读取文本文件 
sTextAll = lcase(MyText.ReadAll): MyText.close 
'判断用户文件中的危险操作 
sStr ="8 .getfolder .createfolder .deletefolder .createdirectory  
  .deletedirectory" 
sStr = sStr & " .saveas wscript.shell script.encode" 
sNoString 
= split(sStr," "
for i = 1 to sNoString(0
   
if instr(sTextAll, sNoString(i)) <> 0 then 
     sFile 
= Upl.Path & sFileSave: fs.DeleteFile sFile 
     Response.write 
"<center><br><big>"& sFileSave &"文件中含有与操作目录等有关的命令"&
  
"<br><font color=red>"& mid(sNoString(i),2&"</font>,为了安全原因,<b>不能上传。<b>"&_"</big></center></html>" 
     Response.
end 
  
end if 
next

  把他们加到你的上传程序里做一次验证,那么你的上传程序安全性将会大大提高.

  什么?你还不放心?拿出杀手锏,请你的虚拟主机服务商来帮忙吧。登陆到服务器,将PROG ID 中的"shell.application"项和"shell.application.1"项改名或删除。再将”WSCRIPT.SHELL”项和” WSCRIPT.SHELL.1”这两项都要改名或删除。呵呵,我可以大胆的说,国内可能近半以上的虚拟主机都没改过。只能庆幸你们的用户很合作,否则……我删,我删,我删删删……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_872450.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker部署Flask网站

最近练练手&#xff0c;防止忘了&#xff0c;在docker上部署了下Flask网站。先单步进行&#xff0c;后面可以通过docker compose直接部署。 1. docker运行mysql&#xff0c;数据持久化到宿主机本地硬盘 docker run --name mysql-flask -d -p 3306:3306 -v /home/mysql/conf:/…

微信公众平台开发详解——由浅入深(微网站、LBS云、Api接口调用、服务号高级接口)

微信公众平台开发详解——由浅入深&#xff08;微网站、LBS云、Api接口调用、服务号高级接口&#xff09; 分享一套微信公众平台官方代码教程&#xff0c;由易到难&#xff0c;深入浅出的讲解微信公众平台各种常见功能的开发。 课程内容包括&#xff1a; Api接口调用 lbs应用…

网站性能

一、不同角度的网站性能 普通用户认为的网站性能 网站性能对于普通用户来说&#xff0c;最直接的体现就是响应时间。用户在浏览器上直观感受到的网站响应速度&#xff0c;即从客户端发送请求&#xff0c;到服务器返回响应内容的时间。 做为网站开发人员来说&#xff0c;网站性能…

网站埋点(百度统计)

网站埋点&#xff0c;看数据分析&#xff0c;可以直接用百度统计&#xff0c;功能非常全&#xff0c;自己重新开发一个的话&#xff0c;费时费力&#xff0c;没必要。 https://tongji.baidu.com/web/welcome/basic demo演示 使用教程 1、注册登录 2、登录后新增你的网站 …

CTF Crypto/MISC 在线工具网站

2020.4.2 增加了新佛曰的网站 2020.4.6 添加了Linux系统调用网站 2020.5.25 增加了base58的编码网站&#xff0c;跳舞小人密码&#xff0c;alphabet minimoys密码网站&#xff0c;JS混淆解密网站 在线解码 Unicode&#xff08;HTML&#xff09;编码解码&#xff1a;http://www…

houseoforange_hitcon_2016(House of orange, unsorted bin attack,FSOP)

目录 题目分析利用原理house of orangeFSOP 漏洞利用Exp 题目分析 只有添加&#xff0c;显示&#xff0c;编辑三个功能&#xff0c;没有删除 添加函数&#xff0c;最多只能添加四次&#xff0c;每次添加会依次执行malloc(0x10),malloc(name_size),calloc(8),name_size最大为8 H…

javabean+servlet+JSP页面做购物网站 (附效果图+源码)

一个简单的jsp购物网站 概要需求用到的技术效果图登录页登陆结果购物页消费记录页管理用户信息和商品信息数据库格式 踩过的坑jdbc进行数据库操作java动作指令结合jsp脚本jdbc操作数据库查某个变量源码 概要 复习一下学校里学的javabean&#xff0c;写了个简单的购物网站&…

用asp.net写的一个购物网站

文章目录 一、数据库设计二、登录注册三、功能说明以及运行1.首页2.商品分类3.热门零食4.推荐零食5.商品详情页6.我的购物车7.立即购买8.提交订单 总结 一、数据库设计 二、登录注册 1.登录界面 2.注册界面 首先先在数据库表users中插入几条数据&#xff0c;表示这是已经注册…

用前端写的一个网站

文章目录 一、网站首页1.导航栏2.轮播图3.网格系统 二、热门人物三、热门推荐四、国产动漫五、热血日漫六、个人资料设置七、注册登录总结 一、网站首页 1.导航栏 采用了bootstrap导航条组建。用超链接实现跳转。并同时使该网页对应的导航条处于被选中的状态。当鼠标悬停放在该…

基于ASP.Net写的一个购物网站

网站运行录像 在这里 链接&#xff1a;https://pan.baidu.com/s/1NaFNKnQ3UEorasadRf7EIA 提取码&#xff1a;1i6v 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 可以下载观看。 本网站前端利用了如下技术&a…

springboot实现基本购物网站

本项目部分页面来自天天生鲜项目(原项目使用django编写),本项目中所用到的框架: spring boot mybatis jpa bootstrap redis freemaker 实现注册及登录界面: 用户名需满足:非空&#xff0c;长度2-20位. 密码需满足:为6-20位字母、数字的组合. 卖家与买家信息使用不同的数据…

HTML+CSS简单应用实例——购物网站的制作(一)

HTMLCSS简单应用实例——购物网站的制作&#xff08;一&#xff09; 这是一个用CSS、HTML、JS制作的简单的购物网站&#xff0c;这篇文章是主页&#xff0c;在后面文章中依次有登录页、商品页、客服页面等。有很多不足之处&#xff0c;希望大家能给我指出来。 先看一下效果图…

HTML+CSS简单应用实例——购物网站的制作(二)注册页面

HTMLCSS简单应用实例——购物网站的制作&#xff08;二&#xff09;注册页面 接上一篇文章&#xff0c;本片文章是注册页面。 下面是效果图&#xff1a; 分析&#xff1a;上方欢迎注册是DIV,下面是表单&#xff0c;点击登录按钮会出现注册成功提示。下方为脚本&#xff0c;同…

HTML+CSS简单应用实例——购物网站的制作(三)

HTMLCSS简单应用实例——购物网站的制作&#xff08;三&#xff09; 本页面是商品页面。 下面是效果图&#xff1a; 分析&#xff1a;上方大牌女装为DIV&#xff0c;下面是一个滚动图&#xff0c;年度爆款限时五折是table&#xff0c;今日热门活动也是一个大table&#xff…

HTML+CSS简单应用实例——购物网站的制作(四)

HTMLCSS简单应用实例——购物网站的制作&#xff08;四&#xff09; 本页面是第二个商品页面&#xff0c;做了个限时抢购的页面。 下面是效果图&#xff1a; 分析&#xff1a;上方限时抢购和12点准时开抢是两个DIV&#xff0c;下面每个商品是一个单独的DIV,总体是一个大的D…

HTML+CSS简单应用实例——购物网站的制作(五)

HTMLCSS简单应用实例——购物网站的制作&#xff08;五&#xff09; 本页面是第三个商品页面。 下面是效果图&#xff1a; 分析&#xff1a;上方淘淘超市是一个DIV&#xff0c;下面超值套装每个商品是一个DIV&#xff0c;美容护肤是一个大表格。下面是脚本。 具体代码&…

HTML+CSS简单应用实例——购物网站的制作(六)

HTMLCSS简单应用实例——购物网站的制作&#xff08;六&#xff09; 本页面是一个反馈问卷页面。 效果图&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>淘淘网问卷</title><s…

HTML+CSS简单应用实例——购物网站的制作(七)

HTMLCSS简单应用实例——购物网站的制作&#xff08;七&#xff09; 本页面是客服页面。 效果图&#xff1a; 分析&#xff1a;上方是一个DIV&#xff0c;下面是两个表格&#xff0c;表格里有列表。 具体代码&#xff1a; <!DOCTYPE html> <html><head>&…

专访AJAX发明人:AJAX并不适合所有网站

他从未想到AJAX可以获得这么大的成功&#xff0c;但他也表示并非所有的网站都适合用AJAX技术。 新浪科技讯 2007年3月2日&#xff0c;中国互联网协会与Google(谷歌)公司联合主办“Internet 互联网世纪论坛”&#xff0c;AJAX技术的发明人Jesse James Garrett在会议期间接受新浪…

一步步构建大型网站架构

之前我简单向大家介绍了各个知名大型网站的架构&#xff0c; 亿万用户网站MySpace的成功秘密 、 Flickr架构 、 YouTube网站架构 、 PlentyOfFish 网站架构学习 、 WikiPedia技术架构学习笔记 。这几个都很典型&#xff0c;我们可以从中获取很多有关网站架构方面的知…