我有一个问题。请求您按如下方式阅读方案:
假设netcat已经存在于远程计算机上(注意:它没有监听任何端口).i有唯一的选择让它开始只在我的浏览器中侦听某个特定端口。那么请你告诉我如何让它开始聆听,因为从技术上讲,每当你远程访问该文件时,浏览器会要求你下载/保存它。
但我想要的是,我想在目标机器上运行它,以便我可以完全访问该远程机器。
所以可以从目标机器上的浏览器运行netcat ???
提前使用ThanX
答案 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";
}