You need to send or receive very simple network traffic but you do not have a tool
such as netcat installed.
If you have bash version 2.04+ compiled with –enable-net-redirections (it isn’t
compiled this way in Debian and derivatives), you can use bash itself.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ exec 3<> /dev/tcp/www.ippages.com/80 $ echo -e "GET /simple/?se=1 HTTP/1.0\n" >&3 $ cat <&3 HTTP/1.1 200 OK Date: Tue, 28 Nov 2006 08:13:08 GMT Server: Apache/2.0.52 (Red Hat) X-Powered-By: PHP/4.3.9 Set-Cookie: smipcomID=6670614; expires=Sun, 27-Nov-2011 08:13:09 GMT; path=/ Pragma: no-cache Cache-Control: no-cache, must-revalidate Content-Length: 125 Connection: close Content-Type: text/plain; charset=ISO-8859-1 72.NN.NN.225 (US-United States) http://www..com Tue, 28 Nov 2006 08:13:09 UTC/GMT flagged User Agent - reduced functionality |
The second line sends a trivial command to a path on the web server defined in the first command.
Note that the user agent will appear as “-” on the web server side, which is what is causing the “flagged User Agent” warning.
The third command simply displays the results.
Both TCP and UDP are supported.
Here is a trivial way to send syslog messages to a remote server (although in production we recommend using the logger utility, which is much more user friendly and robust):
1 |
echo "<133>$0[$$]: Test syslog message from bash" > /dev/udp/loghost.example.com/514 |
Since UDP is connectionless, this is actually much easier to use than the previous
TCP example. <133> is the syslog priority value for local0.notice, calculated according to RFC 3164. S
ee the RFC “4.1.1 PRI Part” and logger manpage for details.
$0 is the name and $$ is the process ID of the current program.
The name will be -bash for a login shell.