一、前言

又是第一次,主要是跟着网上的教程过一遍,熟悉一下思路

二、环境配置

这里放一张网上的拓扑图(ip地址会不一样):

image-20220713140918645

看上去挺形象的,也方便理解整个内网和外网的构造,总共五个靶机

使用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

image-20220713141649273

开放的端口有:

  • 22(ssh)
  • 80(http)可以尝试网页登录
  • 3306(mysql)可以尝试SQL注入,远程连接Mysql等

3.2 访问80端口

浏览器访问 192.168.150.130,发现存在网页

这里又发现一个新工具(wappalyzer),是一个用于指纹扫描的插件,很方便

image-20220713142952016

可以看到这个站点使用了 Joomla CMS

Joomla是一个流行的开源内容管理系统(CMS)世界各地的数百万用于构建强大的网站和在线应用程序

接下来使用kali自带的msf来扫描Joomla的版本号(这个工具有待学习):

image-20220713143838136

版本为 3.9.12

百度后,查到CVE-2021-23132 RCE漏洞

影响版本为:Joomla CMS 3.0.0 - 3.9.24

攻击手段:文件上传(需要登录后台)

3.3 目录扫描

工具:dirsearch

也是扫到了很多文件,在 /configuration.php~ 中,发现了一些配置信息和Mysql的账号和密码:

image-20220713150616555

还有一个 /1.php 泄露了phpinfo页面:

image-20220713150918414

还有后台登录地址 /administrator/index.php:

image-20220713150932819

后台登录页面:

没有验证码,可以尝试弱密码和暴力破解,这里没有弱密码,就跟着教程继续往下走了

其他的文件作用都不大

四、漏洞利用

4.1 远程连接Mysql

由于知道了Mysql的用户名和密码,使用 Navicat 远程连接Mysql

image-20220713152352838

成功连接,翻找一些有用的信息,找到了两个类似于管理员的信息:

image-20220713152446335

image-20220713152603662

由于密码是加密的,这里也不知道用什么去解密(应该也解不了)

这里教程说可以查看官方文档:https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F/zh-cn

有时这确实是一种方法

image-20220713153439117

在官方文档中找到了一些明文和密文,以及在数据库中添加新用户的SQL代码,那么修改表的名称后直接运行上述代码:

image-20220713153806159

这样我们就有了用户名和密码:admin2/secret

4.2 登录后台(上传文件)

使用新添加的账号密码进入后台

结合网上漏洞的复现,在模板处找到了文件上传的位置

image-20220713160731212

image-20220713160952388

成功创建文件后,其实并不知道具体的文件位置,翻了一下刚刚扫描的目录:

发现有类似的路径

image-20220713161340060

于是访问 /templates/beez3/shell_1.php 发送post请求 cmd=phpinfo();

成功显示phpinfo页面:

image-20220713161517306

4.3 蚁剑连接(getshell)

成功连接蚁剑

image-20220713161639081

但是并没有权限:

image-20220713161724947

可以从之前泄露的phpinfo页面中看到,disabled_function 禁用了很多命令:

image-20220713162037276

根据php版本 7.1.32

这里我使用了之前下载过的exp,将该php文件上传后,就能绕过disabled_function:

image-20220713162927254

访问该文件就能执行系统命令:

image-20220713163101015

教程中是使用了蚁剑的插件,这样更方便一点:

下载地址: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连接

image-20220713173043162

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删除)

image-20220713181830890

接下来重新登录就行了:

image-20220713182001042

可以看到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,一些操作也不是很懂,等下次多了解一点再深入吧