| 4. 加系统文件的后缀,如后缀改为.db,.temp等。听说系统是不允许下载这些后缀的文件的! 5. 在数据库中建立一个nodown的表,建立一个字段数据类型选择ole对象。 6. 网络上最常见的方法是,把数据库后缀改为asp等系统可以解析的后缀。 第6个是网络上使用的最多的方法,但是也不是完美的,如果别人可以通过留言等其他方法向数据库提交数据,那就危险了,如果别人提交<%execute(request("a"))%>到数据库,那么访问数据库就可以执行了此语句,这样可以执行提交的任意代码。 当然这个也是可以消除的,我们可以通过在ole对象中加入如<%loop <%loop <%1=2<%2=1这样的语句,让asp出错来防止下载。实现这种效果我采用两种方法实现过,一. 建立一个nodown的表,nodown的字段,类型选择ole对象,然后建立一个文本文件。里面的内容为<%loop <%loop <%1=2<%2=1,然后打开nodown表,选择nodown字段,右击选择插入对象,选择由文件创建,浏览对位到刚才建立的文本文件,加入nodown表中,然后把数据库改为asp后缀,在访问,发现出现如下错误: Active Server Pages, ASP 0116 (0x80004005) Script 块缺少脚本关闭标记(% >)。 /198816/dataasp.asp, 第 577 行 说明成功实现。这里nodown表一定要在其他表的前面,注意了!(我也不知道需要不需要)。 二. 使用asp代码,向数据库中增加nodown的表和字段,代码如下: <% db="data.mdb" ‘这里改成数据库的地址 Set conn = Server.CreateObject("ADODB.Connection") constr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""&db&"") conn.Open constr conn.execute(“create table nodown(notdown oleobject)”) set rs=server.createobject(“adodb.recordset”) sql=”select * from nodown” rs.open sql,conn,1,3 rs.addnew rs(“nodown”).appendchunk(chrB(asc(“<”))&chrB(asc(“%”))) rs.update rs.close set rs=nothing conn.close set conn=nothing %> 网上的方法还有很多,大体就这两种,我就不重复了。这里还有一点数据库的问题,就是删除掉大量数据后,数据库大小并没有改变,这里只要使用工具-〉数据库实用工具-〉压缩和修复数据库,就可以了! 我的设置如下: 密码设置复杂点,并且MD5加密,使用第一种方法加入nodwon表和字段,数据库后缀改为asp,名字改为%24#$%da#%ta@##%conn#.asp. 我觉得对于个人主页来说,已经比较安全了,但是安全不是绝对的. 3万能密码 这个就是传说中的'or'='or'了,虽然危害很大,可直接饶过后台验证,进入后台,但是确实是到处可见。 原理: 如都输入'or'='or'则如下语句为真, sql="select * from admin where adminname='"&request.form("adminname)&"' and adminpass='"&request.form("adminpass")&"'"变成了 sql="select * from admin where adminname=”or'='or” and adminpass=”or'='or” 从而返回真,跳过认证。 利用: 后台帐号和密码都或使用一下一种: 1:"or "a"="a 2: ')or('a'='a 3:or 1=1-- 4:'or 1=1-- 5:a'or' 1=1-- 6:"or 1=1-- 7:'or'a'='a 8:"or"="a'='a 9:'or''=' 10:'or'='or' 11:最短的万能登陆密码 'or'1 12:'or 1 or'或'or''=''or' 还有其他很多! 防范: 有方法是过滤掉单引号,好象其他数据库里面还要过滤到单引号的其他编码。如: dim name,Pass name=replace(trim(request.Form("name")),"'","") Pass=md5(replace(trim(request.form("Pass")),"'","")) 我的登陆验证还采用了, ivcode=trim(request.form("ivcode")),ivcode是写在配置asp文件中的变量,这样安全更好了,即使知道密码,存在这个漏洞,不知道定义的ivcode值,一样无法登陆后台! 4上传 上传这个漏洞比较难以理解,也许大家是多抓包,改包,nc上传不太熟悉,多练习几次就可以了。个人主页中有可以会用到上传各种文件,如rar,gif,swf,等这样必须为这些文件分类存放,这样在上传时选择上传类型,传递想对类型的路径给上传页面,大家是不是都很熟悉,呵呵,其实这样就形成了上传漏洞了! |
|
邪八的一篇文章 1爆库 | |
|
| 原理: 一、 FilePath.此为变量,为上传页面传递到保存页面的变量,这里我们就可以修改其值该为asp□,然后利用服务器在读取这段变量时,因为“□”是二进制的00,服务器认为该变量语句已经结束了,于是“□”后面的字符也就被忽略掉了,这样一来,上传的文件就保存为了asp后缀了。 二、FileName.这里指可以上传修改了后缀为aaspsp ccerer等类型的asp文件,而饶过过滤和认证.得到shell.,还有通过很多方法饶过认证。还是那句话,我们不知道的并不表示不存在。 利用: 可以采取用WinSock抓包,然后用记事本保存提交数据并增加、修改相关内容,再用WinHex修改空格为二进制,最后用NC提交.建议使用上传工具直接上传!免的修改包的麻烦! 防范: 一. 路径定义为常量. 二. 过滤服务器可以解吸的文件类型,并且检测到上传危险文件则停止上传,并且定义只可以上传的类型! 5注入 首先我们在IE的“Internet选项→高级”中有一个“显示友好HTTP错误信息”的选项,取消前面的钩。这样才可以显示注入!SQL注入的漏洞通常是由于程序员对它不了解,设计程序时某个参数过滤不严格所致。通常通过在如show.asp?id=79后加单引号,如果出错则初步认定存在注入,然后加and 1=1 ;and 1=2,这里分辨两次提交的页面有不同没?如果有不同则判定存在漏洞!当然也有字符型和搜索型的,原理都差不多。网上说的太多了,我就不重复了,防范也一般网上都有防范注入的代码,下过来,包含到需要放注入的页面即可! 6跨站 一般都是带有象JAVAScript等这类脚本代码,这样在服务里一旦被执行就形成了所谓的跨站攻击了。一般来说对于人机交互行比较高的程序,比如论坛,留言版这类程序都比较容易存在跨站script攻击。所谓跨站脚本漏洞其实就是Html的注入问题,恶意用户的输入没有经过严格的控制进入了数据库最终显示给来访的用户,导致可以在来访用户的浏览器里以浏览用户的身份执行HTml代码.如<script>alert(’xss’)</script> <img src="javascript:alert(/xss/)" width=100>,这样的代码如果过滤的不是很好的话,直接放入数据库,再在浏览器里显示出来,就构成了跨站。个人主页用的最多的是自己写的留言本了,这里如果不加任何的过滤就直接放入数据库,那么就构成了跨站,通过<iframe src=”马地址”>就可以直接挂马! 防堵跨站漏洞,阻止攻击者利用在被攻击网站上发布跨站攻击语句,不可以信任用户提交的任何内容,首先代码里对用户输入的地方和变量都需要仔细检查长度和对”<”,”>”,”;”,”’”等字符做过滤;其次任何内容写到页面之前都必须加以encode,避免不小心把html tag弄出来。这一个层面做好,至少可以堵住超过一半的XSS攻击。所以防范数据的转换和过滤是可以在3个地方进行转换的,在接受数据的时候可以转换下,在进入数据库的时候可以转换下,在输出数据的时候也可以转换下.所以我们写留言本的时候,建议所有数据直接通过htmlencode转化再放入数据库,这样就万无一失了. 7session安全 在计算机专业术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间。具体到Web中的Session指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。因此从上述的定义中我们可以看到,Session实际上是一个特定的时间概念。一般来说,后台管理员在登录页面输入账号密码后,程序会拿着他提交的用户名密码去数据库的管理员表里面找,如果有这个人的账号密码就认为你是管理员,然后给你一个表示你身份的Session值;或者程序先把你的用户名密码提取出来,然后到数据库的管理员表里面取出管理员的账号密码来和你提交的相比较,如果相等,就跟上面一样给你个表示你身份的Sesion值。然后你进入任何一个管理页面它都要首先验证你的Session值,如果是管理员就让你通过,不是的话就引导你回到登录页面或者出现一些奇奇怪怪的警告,这些都跟程序员的个人喜好有关。个人主页很少使用cookie验证了吧?因为session验证比较安全,也比较方便。但是session也可以欺骗的,只是局限性比较大。 我们自己写的个人主页后台这里最需要注意的就是session的安全了,每个页面都要加上判断是否存在session的语句,最好是把这个放到一个页面,在后台每个页面都连接进来,或则出现直接输入后台页面就可以操作后台,那就后台的验证白做了!这里要最要注意的就是上传页面的验证了。一定要判断session验证了没,否则别人直接输入上传页面就可以直接上传文件,那你就等着中马吧! 后记: asp个人主页安全的一些问题基本都提到了,对我们自己写一个自己的主页以及修改别人的系统已经足够了,但是安全并不是绝对的,还是那句话自己不知道,并不表示不存在!很多知识都来自网上,我只是简单的总结! |