一、前言
又是第一次,主要是跟着网上的教程过一遍,熟悉一下思路
二、环境配置
这里放一张网上的拓扑图(ip地址会不一样):
看上去挺形象的,也方便理解整个内网和外网的构造,总共五个靶机
使用kali来进行攻击
我的配置:
- kali 192.168.150.128
- web-centos 192.168.150.130(出网)/192.168.93.100
- web1-ubuntu 是nginx的反向代理服务器
- win7 win2008是内部主机
- win2012是域控服务器
目标:拿到win2012域控服务器中的一份文件
三、信息收集
3.1 扫描目标端口
工具:nmap
语法:nmap -P 192.168.150.130
开放的端口有:
- 22(ssh)
- 80(http)可以尝试网页登录
- 3306(mysql)可以尝试SQL注入,远程连接Mysql等
3.2 访问80端口
浏览器访问 192.168.150.130,发现存在网页
这里又发现一个新工具(wappalyzer),是一个用于指纹扫描的插件,很方便
可以看到这个站点使用了 Joomla CMS
Joomla是一个流行的开源内容管理系统(CMS)世界各地的数百万用于构建强大的网站和在线应用程序
接下来使用kali自带的msf来扫描Joomla的版本号(这个工具有待学习):
版本为 3.9.12
百度后,查到CVE-2021-23132 RCE漏洞
影响版本为:Joomla CMS 3.0.0 - 3.9.24
攻击手段:文件上传(需要登录后台)
3.3 目录扫描
工具:dirsearch
也是扫到了很多文件,在 /configuration.php~ 中,发现了一些配置信息和Mysql的账号和密码:
还有一个 /1.php 泄露了phpinfo页面:
还有后台登录地址 /administrator/index.php:
后台登录页面:
没有验证码,可以尝试弱密码和暴力破解,这里没有弱密码,就跟着教程继续往下走了
其他的文件作用都不大
四、漏洞利用
4.1 远程连接Mysql
由于知道了Mysql的用户名和密码,使用 Navicat 远程连接Mysql
成功连接,翻找一些有用的信息,找到了两个类似于管理员的信息:
由于密码是加密的,这里也不知道用什么去解密(应该也解不了)
这里教程说可以查看官方文档:https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F/zh-cn
有时这确实是一种方法
在官方文档中找到了一些明文和密文,以及在数据库中添加新用户的SQL代码,那么修改表的名称后直接运行上述代码:
这样我们就有了用户名和密码:admin2/secret
4.2 登录后台(上传文件)
使用新添加的账号密码进入后台
结合网上漏洞的复现,在模板处找到了文件上传的位置
成功创建文件后,其实并不知道具体的文件位置,翻了一下刚刚扫描的目录:
发现有类似的路径
于是访问 /templates/beez3/shell_1.php 发送post请求 cmd=phpinfo();
成功显示phpinfo页面:
4.3 蚁剑连接(getshell)
成功连接蚁剑
但是并没有权限:
可以从之前泄露的phpinfo页面中看到,disabled_function 禁用了很多命令:
根据php版本 7.1.32
这里我使用了之前下载过的exp,将该php文件上传后,就能绕过disabled_function:
访问该文件就能执行系统命令:
教程中是使用了蚁剑的插件,这样更方便一点:
下载地址:https://github.com/AntSword-Store
(这里由于网络原因没下载,txt格式就将就着看吧。。)
五、内网渗透
5.1 内网信息收集
ifconfig 查看ip地址 192.168.93.120
cat /etc/issue 查看系统名称 Ubuntu 16.04.6 LTS \n \l
cat /etc/*release 查看linux发行信息
uname -an 查看内核版本
cat /proc/version 查看内核信息
cat /etc/passwd 存放用户名信息,没有密码信息
cat /etc/shadow 存放用户名密码信息,密码被加密,只有root用户才能读取
id uid=33(www-data) gid=33(www-data) groups=33(www-data)
可以看到192.168.93.120 跟我们访问的ip(192.168.150.130)并不一样,这就说明这是其他网段的地址,并且还不出网,由另外一台主机进行反向代理(因为反向代理我们只能知道代理服务器的ip)
好像我这个靶机少了文件(/tmp/mysql/test.txt),在其他地方找了半天也没找到:
www-data:/var/www/html/templates/protostar) $ cat /tmp/mysql/test.txt
adduser wwwuser
passwd wwwuser_123Aqx
(www-data:/var/www/html/templates/protostar) $
adduser 是增加使用者的命令,但是这台服务器上并没有该用户(查看 /etc/passwd)
说明这个用户名和密码是centos的用户名和密码(就是出网的那台):
前期信息收集时,22端口是开放的,所以直接使用ssh连接
5.2 提权
“想要在内网里面横向移动,首先是要在跳板机上搭建代理,所以要将centos提权“,这句话现在还不理解,继续往下学吧
这里使用脏牛漏洞提权(CVE-2016-5195)
通过ftp将文件传入可执行文件夹/tmp
1、编译
gcc -pthread dirty.c -o dirty -lcrypt
2、执行 设置密码
./dirty 123456该脚本利用dirtycow漏洞的pokemon漏洞利用为基础,自动生成新的passwd行。运行二进制文件时,将提示用户输入新密码。然后将原始 /etc/passwd 文件备份到 /tmp/passwd.bak 并使用生成的firefart账户覆盖 root 帐户。运行漏洞利用后,能够使用新创建的用户登录,所以需要先将/tmp/passwd.bak删除)
接下来重新登录就行了:
可以看到uid为0,说明是root权限了
到这里 centos 和 ubuntu 都提权成功了
5.3 继续内网信息收集
这里使用工具 fscan ,直接将工具上传到centos上,扫描存活主机
5.4 隧道搭建
内网机器是不出网的,为了切实模拟真实的环境,在这里建一个隧道,使用EarthWorm或者Neo-regeorg工具,在这里使用的是Neo-regeorg工具,工具连接见GitHub:https://github.com/L-codes/Neo-reGeorg
什么是内网穿透:
专业点来讲内网穿透就是利用各种隧道技术,以网络防火墙允许的协议,绕过网络防火墙的封锁,实现访问被封锁的目标网络。通俗点来说,就是电脑A和电脑B分别在两个不同的局域网内,而这两个局域网分别在两个不同的NAT表后面,这时A和B之间如果要进行连接、通讯或传送数据,就需要借助内网穿透技术进行连接。
这里也不是很懂,大概了解一下吧
到这之后的操作使用了msf,一些操作也不是很懂,等下次多了解一点再深入吧
- 本文链接:http://siii0.github.io/%E7%BA%A2%E6%97%A5%E5%AE%89%E5%85%A8-ATT%EF%BC%86CK-VulnStack%E9%9D%B6%E5%9C%BA%EF%BC%88%E4%B8%89%EF%BC%89/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。