热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

没有注入点,如何拿站

邪八的一篇文章1爆库原理:%5c暴库法,它不是网页本身的漏洞,而是利用了iis解码方式中的一个特性,如果iis安全设置不周全,而网页设计者未考虑IIS错误,就

邪八的一篇文章

1爆库
原理:
"%5c"暴库法,它不是网页本身的漏洞,而是利用了iis解码方式中的一个特性,如果iis安全设置不周全,而网页设计者未考虑IIS错误,就会被人利用。 为何要用"%5c"?它实际上是"/"的十六进制代码,也就是"/"的另一种表示法。当我们把"/"换成十六进制写法"%5c"时,ie不会对此进行转换。地址中的"%5c"被原样提交了.当iis收到后解析时,又会将%5c还原成"/",所有调用数据库的连接文件中都有Server.MapPath方法的作用是将网站中的相对路径转变成物理上的绝对路径。为何要这样?因为连接数据库时,须指明它的绝对路径。
也就是说网址目录只表示从根目录起的相对位置。当Server.MapPath方法将相对路径转为真实路径时,它实际是三部分路径加在一起得到真实路径的:网页目前执行时所在的相对路径,也就是从网站物理根目录起的相对路径,设置过iis的人都会知道,每一个网站,都必须指定它在硬盘上的物理目录,Server.MapPath方法正是通过把"网站根目录的物理地址+完整的相对路径",从而得到真实的物理路径。在这里,IIS以"/"表示真实路径的目录关系,而以"/"表示虚拟路径,这可能就是IE会自动把我们地址中的"/"转为"/"的原因,在iis中,"/"和"/"代表着不同的意义,遇到了"/"时,认为它已到了根目录所在的物理路径,不再往上解析,而这个路径是不存在的,数据库连接当然会失败,于是IIS会报错,并给出错误原因。
我们只有在数据库相对地址和它的目录绝对地址之间使用"/"("%5c"),才能达到目的。即是在最右边第一个/处使用%5c成功可能性是最大的.
 conn.asp(数据库连接文件)暴库大法,如果说第一种暴库法是利用了绝对路径出错,那么,这种暴库法就是利用了相对路径出错。 一般来说,只要conn.asp不在根目录的系统,而调用文件在根目录,就会出现这种问题。当然这种说法也是经验性的,准确的说就是,conn.asp与调用它的文件,如果相对位置改变了,就会报错,暴出数据库路径。
利用:
下面是我自己的电脑上测试:访问
http://localhost/198816/index.asp,正常访问,
然后将url改成http://localhost/198816%5cindex.asp,出现如下错误:
Microsoft JET Database Engine (0x80004005)
找不到文件 'E:/10/data.mdb'。
/data.asp, 第 11 行
看这里爆库出现了,得到了数据库名字和路径;
我们可以将其下载,
在ie输入http://localhost/198816/data.mdb,出现下载页面。
下载了数据库之后,如果数据库有密码,使用access密码破解器,不要几秒就可以得到密码,下面就可以浏览所有数据库的内容了,一般后台密码都是MD5加密的,可以直接上MD5网站破解出来!如果无法查询到,那就是运气问题了,如果你肉鸡够好够多,那就慢慢暴力破解吧!不过暴力破解好象没有谁会这样做!
Conn爆库也类似!
防范方法:
在数据库连接文件中加入容错语句即可,我在data.asp的开头加入了,
On Error Resume Next
再在结尾加入错误处理语句,
If Err Then
err.Clear
Set Conn = Nothing
Response.Write "fuck!"
Response.End
End If
现在再去爆库,你发现页面只输出了fuck!爆库不成功!
下面我们说说即使存在爆库,在别人知道你数据库路径的情况下,别人也无法下载你的数据库!

2数据库安全
asp结合access数据库是最常见的,access数据库最大的缺点就是容易被搜索到,然后被下载,而暴露帐号和密码,防止数据库被下载的常见方法有如下几种,如果你有更好的方法请告诉我。我也是菜鸟·~~~~:
1. 将数据库改成自己都无法记住的BT名字。这种方法对爆库没用,而且使用google也有可能搜到数据库路径。
2. 在数据库名字中加#号或者%24=$等特区字符,利用URL编码特性防止下载。
3. 去掉后缀,不要扩展名,系统有可以解析成路径,从而无法下载,当然XP下测试是可以下载的,我的格式是fat32。其他系统没测试,有人测试了告诉我下,谢谢!

 

 

 

 

 

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,等这样必须为这些文件分类存放,这样在上传时选择上传类型,传递想对类型的路径给上传页面,大家是不是都很熟悉,呵呵,其实这样就形成了上传漏洞了!

 

 

 

 

 

原理:
一、 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代码.如 ,这样的代码如果过滤的不是很好的话,直接放入数据库,再在浏览器里显示出来,就构成了跨站。个人主页用的最多的是自己写的留言本了,这里如果不加任何的过滤就直接放入数据库,那么就构成了跨站,通过就可以直接挂马!
防堵跨站漏洞,阻止攻击者利用在被攻击网站上发布跨站攻击语句,不可以信任用户提交的任何内容,首先代码里对用户输入的地方和变量都需要仔细检查长度和对”<”,”>”,”;”,”’”等字符做过滤;其次任何内容写到页面之前都必须加以encode,避免不小心把html tag弄出来。这一个层面做好,至少可以堵住超过一半的XSS攻击。所以防范数据的转换和过滤是可以在3个地方进行转换的,在接受数据的时候可以转换下,在进入数据库的时候可以转换下,在输出数据的时候也可以转换下.所以我们写留言本的时候,建议所有数据直接通过htmlencode转化再放入数据库,这样就万无一失了.

7session安全
在计算机专业术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间。具体到Web中的Session指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。因此从上述的定义中我们可以看到,Session实际上是一个特定的时间概念。一般来说,后台管理员在登录页面输入账号密码后,程序会拿着他提交的用户名密码去数据库的管理员表里面找,如果有这个人的账号密码就认为你是管理员,然后给你一个表示你身份的Session值;或者程序先把你的用户名密码提取出来,然后到数据库的管理员表里面取出管理员的账号密码来和你提交的相比较,如果相等,就跟上面一样给你个表示你身份的Sesion值。然后你进入任何一个管理页面它都要首先验证你的Session值,如果是管理员就让你通过,不是的话就引导你回到登录页面或者出现一些奇奇怪怪的警告,这些都跟程序员的个人喜好有关。个人主页很少使用COOKIE验证了吧?因为session验证比较安全,也比较方便。但是session也可以欺骗的,只是局限性比较大。
 我们自己写的个人主页后台这里最需要注意的就是session的安全了,每个页面都要加上判断是否存在session的语句,最好是把这个放到一个页面,在后台每个页面都连接进来,或则出现直接输入后台页面就可以操作后台,那就后台的验证白做了!这里要最要注意的就是上传页面的验证了。一定要判断session验证了没,否则别人直接输入上传页面就可以直接上传文件,那你就等着中马吧!

后记:
 asp个人主页安全的一些问题基本都提到了,对我们自己写一个自己的主页以及修改别人的系统已经足够了,但是安全并不是绝对的,还是那句话自己不知道,并不表示不存在!很多知识都来自网上,我只是简单的总结!

推荐阅读
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
author-avatar
Kris-Guo
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有