浅谈网络攻击手段_第1页
浅谈网络攻击手段_第2页
浅谈网络攻击手段_第3页
浅谈网络攻击手段_第4页
浅谈网络攻击手段_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

浅谈网络攻击手段CUIT三叶草工作组—黑萝卜[s.y.c]当前流行攻击手段针对webapplication的攻击针对操作系统以及应用软件的攻击针对网络边界(网络设备)的攻击协议缺陷的利用社会工程学&钓鱼Webapplication平安网络应用程序,一般指web效劳器端的cgi程序,常用的有asp,php,jsp以及.net.因此针对webapplication的攻击也就演化为对脚本程序平安缺陷的利用和攻击.通常出现这些脆弱点的原因都是由于代码编写者,也就是脚本程序员的平安意识不高,或者编码疏忽造成的.没有设计好足够完整的黑列表,从而导致过滤不严,使得客户端所输入的恶意代码,危险数据得以在效劳器端正常运行,进而操纵数据库,到达攻击者的目的.系统&应用软件平安纵观当前软件,无论是系统软件还是应用软件,存在平安缺陷的原因无非以下几种情况:编程语言本身缺陷;设计阶段部署失误;编码阶段人为原因,如成心留后门;测试阶段做的不够.例如windows平台下很有名的FTP效劳端软件server-u,总是爆出漏洞,为攻击者获得webshell后提权增加了可能性.另外值得一提的是编程语言本身缺陷的问题,例如对C语言中strcpy,strcat不合理的利用,将导致缓冲区溢出.网络边界平安网络边界包括路由器,防火墙,入侵检测系统IDS,虚拟专用网VPN,DMZ和被屏蔽的子网等.路由器作为划分网段的设备,起着不可替代的作用.可是上面安装的IOS与其他软件一样,也无法逃避存在平安缺陷的命运.攻击者那么可利用其脆弱点得到路由器的控制权.防火墙分为包过滤和应用代理2大类,但把以上两种技术结合的防火墙已经出现,且日趋成熟.可是由于防火墙自身局限性等特点,绕过防火墙对于富有经验的攻击者而言简直易如反掌.IDS在设计上本就不完美,它只能根据数据库中已存在的记录去判定什么是入侵行为,应该发出警报,而什么不需要.协议缺陷的利用针对互联网目前广泛使用的TCP/IP协议族,各个层次不同的协议均存在一定程度的缺陷.从而导致了诸如ARP欺骗,DNS欺骗,DHCP欺骗,以及拒绝效劳攻击,中间人攻击等手段.拒绝效劳攻击根据利用方法不同又分为资源耗尽和带宽耗尽.通常是由于攻击者对于攻击目标无计可施时所实施的最卑劣的手段.往往会造成目标机器或网络崩溃,瘫痪.去年11月,平安焦点web效劳器被D持续近一个星期,造成网站长时间不能访问就是典型的拒绝效劳攻击.中间人攻击(maninmiddle),攻击者通过嗅探,监听等手段冒充效劳器信任机对效劳器实施欺骗,实现攻击者的目的.社会工程学以及钓鱼社会工程学其实就是攻击者利用人性的弱点,使用诸如欺骗,伪造,冒充等手段获得想要的信息,从而进一步攻击的手段.如假设使用恰当,往往能获得令人意想不到的结果.脚本攻击技术SQL注入技术跨站脚本攻击技术利用cookie的攻击〔cookie欺骗及注入〕利用上传漏洞的攻击PHP的几个特性漏洞〔文件包含、变量未初始化等〕Webshell提权技术一个经典的SQL注入漏洞首先看一段登录验证代码:<%onerrorresumenextifRequest("name")<>""andRequest("psw")<>""then DataName="DB.db" adm=Trim(Request(“name〞))/*获取用户名,没有经过过滤*/psw=Trim(Request("psw")) setconn=server.CreateObject("adodb.connection") connstr="Provider=Microsoft.jet.oledb.4.0;datasource="&server.MapPath(DataName) conn.openconnstr setrs=conn.execute(“select*from[ADM]whereadm=‘〞&adm&“’andpsw=‘〞&psw&“’〞)/*把获取的用户名密码带入SQL语句中查询*/ ifnot(rs.bofandrs.eof)then Response.Write(“登录成功!") Response.end endifendif%>初看没有什么问题,应该输入正确的用户名密码才能进入得到管理授权,但是实际上我们在用户名和密码那里都填入‘OR’‘=’,一样会成功登陆到管理页面。为什么呢?我们把填入的‘OR’‘=’带入查询语句来看才发现原来整个语句已经被构造成了:

select*fromadminwhereadmin=''OR''=''andpassword=''OR''='‘意思是当admin为空或者空等于空,password为空或者空等于空的时候整个查询语句就为真。很显然空等于空,所以语句为真,我们也就满足了程序的限制条件获得了管理授权。

这个漏洞的成因很简单,利用也很容易,但是却道出了SQL注入技术的精髓所在。那应该如何来修补漏洞呢?其实只需要过滤掉其中的特殊字符就可以解决问题了,这里我们就过滤掉其中的“‘〞,即是把程序接收参数的两行改为:

adm=replace(Trim(Request(“name〞)),"'","")psw=replace(Trim(Request("psw")),"'","")普通的SQL注入攻击过程先看一段很通用的文章读取的代码:<%dimidididid=request(“id〞)/*获取文章ID,没有限制获取方式*/sql="select*fromarticlewherearticleid="&ididrs.opensql,conn,1,1ifrs.eofandrs.bofthenresponse.write"没有找到相关文章。"response.endendif%>这里id变量没有经过任何处理就传递给了idid然后带入了查询语句,导致了漏洞的产生,所以就可以在id变量这里插入SQL查询语句来进行注入。下面是详细的注入攻击过程:1、猜解存储管理员帐户和密码的表段,提交:and0<>(selectcount(*)fromadmin)2、猜解admin表段中的字段,提交:and1=(selectcount(*)fromadminwherelen(username)>0)3、猜解字段里面的内容,提交:and(selectmid(username,1,1)fromadmin)="a“通过以上方法继续猜解字段的内容就可以轻松得到管理员的帐户密码,从而登录到后台进行管理操作!当然这并不是攻击者的最终目的,攻击者还会通过上传等方法来获取一个webshell,以控制整个web的管理权限,甚至还会再通过其他方法来得到效劳器的系统权限!这些会在后面进行一些说明。SQL注入攻击的防御与突破目前比较常用的方法有以下四种:(1)在效劳端正式处理之前对提交数据的合法性进行检查;(2)封装客户端提交信息;(3)替换或删除敏感字符/字符串;(4)屏蔽出错信息第一种应该是最根本的方法,在效劳端处理数据之前就进行严格的检查,发现非法就不提交给效劳器端处理,返回错误信息。下面给出一个网络上比较通用的防注脚本。一个通用SQL注入脚本DimTc_Post,Tc_Get,Tc_In,Tc_Inf,Tc_Xh'定义需要过滤的字串Tc_In="'|;|and|(|)|exec|insert|select|delete|update|count|*|%|chr|mid|master||or|char|declare"Tc_Inf=split(Tc_In,"|")'处理post数据IfRequest.Form<>""ThenForEachTc_PostInRequest.FormForTc_Xh=0ToUbound(Tc_Inf)IfInstr(LCase(Request.Form(Tc_Post)),Tc_Inf(Tc_Xh))<>0ThenResponse.Write"<ScriptLanguage=JavaScript>alert('请不要在参数中包含非法字符尝试注入!');</Script>"'处理get数据IfRequest.QueryString<>""ThenForEachTc_GetInRequest.QueryStringForTc_Xh=0ToUbound(Tc_Inf)IfInstr(LCase(Request.QueryString(Tc_Get)),Tc_Inf(Tc_Xh))<>0ThenResponse.Write"<ScriptLanguage=JavaScript>alert('请不要在参数中包含非法字符尝试注入!');</Script>"绕过防注脚本继续注入这段代码把SQL注入中要用到的关键字根本都过滤了,但是作者忽略了一个重要的参数获取方式:cookie!程序只对get和post方式获取的参数进行了过滤,要是通过cookie提交注入语句一样可以到达目的!Cookie注入漏洞的产生因为防注代码的过滤,不能直接用get或者post方式进行注入。那如何进行突破呢?在说明之前,先了解下request获取变量的方式:request.form获取的是post数据,request.querystring获取的get数据,request.cookies获取的是cookie中的数据。但是如果是<%id=request("id")%>呢?这个时候程序是按以下顺序来搜索集合:querystring,form,cookie,servervariable。当发现第一个匹配的变量的时候就认为是要访问的成员。从上面的分析我们可以得到什么呢?这里既然程序就没有限制参数的来源,我们就不要去通过get的方式提交参数,而是在cookie里面参加参数id的值,就可以饶过防注入代码的检测了!Cookie注入的攻击过程1、判断注入javascript:alert(document.cookie="id="+escape(“1and1=1"));2、猜解表段、字段javascript:alert(document.cookie="id="+escape(“1and1=(selectcount(*)fromadminwherelen(username)>0)"));剩下的事情就是重复上面的步骤来得到管理员帐户和密码了。获得webshell以及利用前面提到入侵者的目的并不是得到网站后台的管理权限,多数人是想获得一个基于web的控制平台,以至于进一步提权控制效劳器!下面就简单演示下如何利用webshell进行一些后续的渗透!CUITVSSCU首先介绍下比赛前所告知的环境:1网络环境见网络拓扑图,如图28。2比赛给的入口0(是一个国外的论坛,提供源程序)。比赛环境拓扑图比赛过程:1扫描10.97.151.*整个网段得到以下结果:0开放如下端口:21(微软FTP效劳器),80,338943开放如下端口:21(SERV-UFTP效劳器),80,3389〔后来发现80端口是一个BLOG程序〕2幸运的得到铜牌兵分两路,我,jinsdb分析43的BLOG程序,其他人分析的论坛代码。BLOG程序是用的Z-BLOG,因为前不久才公布了一个此BLOG程序得到后台后拿WEBSHELL的漏洞,所以当务之急是拿到密码进入后台。由于没有其他漏洞,所以jinsdb和svi开始分析代码,我测试攻击。没有抱什么希望的去试了下默认数据库,居然还下到了,真是好运气!看见数据库有两个用户,拿了MD5密码选择数字跑下,不到一分钟就出来了一个,登陆后台看了下,很低的权限,没方法用前面说讲的漏洞得SHELL,思路停止了!就在这个时候,svi发现了一个很另人兴奋的消息:在此BLOG中还附加了一个统计程序,在程序的一个文件中有一句话木马,那还客气什么,直接就连了上去!就这样拿到了第一个WEBSHELL,同时用SHELL浏览硬盘率先找到了铜牌文件。这里顺便说下,后来才知道帮助我们拿到SHELL的统计程序并不是组委会设计的思路,他们本来的想法是想让我们跑出那个管理员用户的密码登陆后台拿SHELL。但是那个用户的密码是11位数字,这里就要我们发挥团体的协同作战的意识,每个人跑一个位数才能尽快把密码跑出来!呵呵,真是用心良苦啊。3艰难的得到银牌得到SHELL后稍微轻松了点,看了SCU的朋友好象还没有什么眉目,再回过头来看我们队里面负责分析论坛代码的朋友们都是焦头烂额还没有任何发现,真是辛苦他们了!接着开始静下心来分析是否能从SHELL提权再做其他打算。前面提到了开放了21端口,而且还是SERV-U,看能否通过它了。首先看了下,效劳器的各种配置:权限配置很严格,能浏览的地方很少,CMD不能用,自己上传了CMD一样不能调用。突然想到效劳器是2003的,看来可以用.NET版的SERV-U提权工具试下。上传后浏览,果然是支持的,执行命令netuserheiluobo123456/add,好象没成功。回头来看了下返回信息,创立FTP帐户是成功了的,为什么执行命令就没有成功呢?想了好久都没有想通,直到组委会宣布上午的时间结束了,很郁闷的去吃午饭了。在吃饭的时候想到会不会是禁用了CMD或者什么呢?下午比赛开始后,jinsdb先上去用工具执行了一个ipconfig–all命令,居然显示成功了。我猛然才意识到是管理员禁用了NET命令啊!结果用NET1.EXE成功添加管理员连上了3389。得到一个系统权限之后马上就想到嗅探,因为这台效劳器上有论坛程序,所以我

温馨提示

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

评论

0/150

提交评论