从浏览器运行Netcat

时间:2014-09-22 10:28:17

标签: shell browser netcat listen

我有一个问题。请求您按如下方式阅读方案:

假设netcat已经存在于远程计算机上(注意:它没有监听任何端口).i有唯一的选择让它开始只在我的浏览器中侦听某个特定端口。那么请你告诉我如何让它开始聆听,因为从技术上讲,每当你远程访问该文件时,浏览器会要求你下载/保存它。

但我想要的是,我想在目标机器上运行它,以便我可以完全访问该远程机器。

所以可以从目标机器上的浏览器运行netcat ???

提前使用ThanX

1 个答案:

答案 0 :(得分:0)

这是一种安全风险,但可能是这样的。制作一个CGI脚本并将其放在服务器希望找到它们的任何地方 - 检查httpd.conf。将以下脚本保存为test.cgi,并使用chmod使其可执行。

#!/usr/bin/perl

use strict;
use warnings;
use Proc::Daemon;

print "Content-type: text/plain\n\n";
print "Starting nc...\n";
Proc::Daemon::Init;
`/usr/bin/nc -l 2222`;

现在只需将脚本地址放入浏览器的地址栏并点击Enter即可。我刚刚在端口2222上侦听并且对传入的数据没有任何作用 - 但你可以用你收到的数据做任何你喜欢的事情 - 包括将它管道到shell以获得更大的安全风险: - )

注意如果尚未安装,可能需要将Proc::Daemon安装到Perl发行版中。

注意您需要设置Options ExecCGI并执行AddHandler cgi-script .cgi

注意

如果你不能,或者不想安装Proc::Daemon,你可以像这样破解:

#!/usr/bin/perl

use strict;
use warnings;

print "Content-type: text/plain\n\n";
print "Starting nc...\n";
my $pid=fork();
die "Unable to fork: $!" if !defined $pid;

if($pid==0){
   # This is the child, run netcat
   open STDIN, "</dev/null";
   open STDOUT,">/dev/null";
   open STDERR,">/dev/null";
   `/usr/bin/nc -l 2222`;
} else {
   print "Child started\n";
}