mirror of
https://github.com/trimstray/the-book-of-secret-knowledge
synced 2024-12-27 09:58:30 +01:00
added one-liners
- signed-off-by: trimstray <trimstray@gmail.com>
This commit is contained in:
parent
4515f2c3cd
commit
8b240aecfc
1 changed files with 453 additions and 8 deletions
461
README.md
461
README.md
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
<h4 align="center">A collection of awesome lists, manuals, blogs, hacks and tools for <b>Awesome Ninja Admins</b>.</h4>
|
<h4 align="center">A collection of awesome lists, manuals, blogs, hacks, one-liners and tools for <b>Awesome Ninja Admins</b>.</h4>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
|
@ -213,13 +213,6 @@ performance of any of your sites from across the globe.<br>
|
||||||
:small_orange_diamond: <a href="https://emeraldonion.org/"><b>Emerald Onion</b></a> - Seattle-based encrypted-transit internet service provider.<br>
|
:small_orange_diamond: <a href="https://emeraldonion.org/"><b>Emerald Onion</b></a> - Seattle-based encrypted-transit internet service provider.<br>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
#### One-liners
|
|
||||||
|
|
||||||
<p>
|
|
||||||
:small_orange_diamond: <a href="https://www.commandlinefu.com/commands/browse"><b>commandlinefu.com</b></a> - command line diamonds, created and voted on by our members.<br>
|
|
||||||
:small_orange_diamond: <a href="http://www.bashoneliners.com/"><b>Bash One-Liners</b></a> - practical, well-explained Bash one-liners, and promote best practices in Bash shell scripting.<br>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
#### Lists
|
#### Lists
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
@ -248,3 +241,455 @@ performance of any of your sites from across the globe.<br>
|
||||||
:small_orange_diamond: <a href="https://www.owasp.org/index.php/Category:OWASP_WebGoat_Project"><b>OWASP WebGoat Project</b></a> - insecure web application maintained by OWASP designed to teach web app security.<br>
|
:small_orange_diamond: <a href="https://www.owasp.org/index.php/Category:OWASP_WebGoat_Project"><b>OWASP WebGoat Project</b></a> - insecure web application maintained by OWASP designed to teach web app security.<br>
|
||||||
:small_orange_diamond: <a href="https://github.com/opendns/Security_Ninjas_AppSec_Training"><b>Security Ninjas</b></a> - open source application security training program.<br>
|
:small_orange_diamond: <a href="https://github.com/opendns/Security_Ninjas_AppSec_Training"><b>Security Ninjas</b></a> - open source application security training program.<br>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
#### One-liners
|
||||||
|
|
||||||
|
##### Table of Contents
|
||||||
|
|
||||||
|
- **[System](#system)**
|
||||||
|
* [terminal](#tool-terminal)
|
||||||
|
* [mount](#tool-mount)
|
||||||
|
* [fuser](#tool-fuser)
|
||||||
|
- **[HTTP/HTTPS](#http-https)**
|
||||||
|
* [curl](#tool-curl)
|
||||||
|
* [httpie](#tool-httpie)
|
||||||
|
- **[Network](#network)**
|
||||||
|
* [openssh](#tool-openssh)
|
||||||
|
* [linux-dev](#tool-linux-dev)
|
||||||
|
* [tcpdump](#tool-tcpdump)
|
||||||
|
* [ngrep](#tool-ngrep)
|
||||||
|
* [hping3](#tool-hping3)
|
||||||
|
* [netcat](#tool-netcat)
|
||||||
|
* [socat](#tool-socat)
|
||||||
|
* [lsof](#tool-lsof)
|
||||||
|
* [netstat](#tool-nestat)
|
||||||
|
- **[Programming](#programming)**
|
||||||
|
* [awk](#tool-awk)
|
||||||
|
|
||||||
|
<a name="system"><b>System</b></a>
|
||||||
|
|
||||||
|
##### Tool: [terminal](https://curl.haxx.se)
|
||||||
|
|
||||||
|
###### Close shell keeping all subprocess running
|
||||||
|
|
||||||
|
```bash
|
||||||
|
disown -a && exit
|
||||||
|
```
|
||||||
|
|
||||||
|
###### Drop shell history
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kill -9 $$
|
||||||
|
```
|
||||||
|
|
||||||
|
###### List of commands you use most often
|
||||||
|
|
||||||
|
```bash
|
||||||
|
history | awk '{ a[$2]++ } END { for(i in a) { print a[i] " " i } }' | sort -rn | head
|
||||||
|
```
|
||||||
|
|
||||||
|
###### Quickly backup a file
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cp filename{,.orig}
|
||||||
|
```
|
||||||
|
|
||||||
|
###### Delete all files in a folder that don't match a certain file extension
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rm !(*.foo|*.bar|*.baz)
|
||||||
|
```
|
||||||
|
|
||||||
|
###### Edit a file on a remote host using vim
|
||||||
|
|
||||||
|
```bash
|
||||||
|
vim scp://user@host//etc/fstab
|
||||||
|
```
|
||||||
|
___
|
||||||
|
|
||||||
|
##### Tool: [mount](https://curl.haxx.se)
|
||||||
|
|
||||||
|
###### Mount a temporary ram partition
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mount -t tmpfs tmpfs /mnt -o size=64M
|
||||||
|
```
|
||||||
|
|
||||||
|
* `-t` - filesystem type
|
||||||
|
* `-o` - mount options
|
||||||
|
|
||||||
|
___
|
||||||
|
|
||||||
|
##### Tool: [fuser](https://curl.haxx.se)
|
||||||
|
|
||||||
|
###### Kills a process that is locking a file
|
||||||
|
|
||||||
|
```bash
|
||||||
|
fuser -k filename
|
||||||
|
```
|
||||||
|
|
||||||
|
<a name="http-https"><b>HTTP/HTTPS</b></a>
|
||||||
|
|
||||||
|
##### Tool: [curl](https://curl.haxx.se)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -Iks https://www.google.com
|
||||||
|
```
|
||||||
|
|
||||||
|
* `-I` - show response headers only
|
||||||
|
* `-k` - insecure connection when using ssl
|
||||||
|
* `-s` - silent mode (not display body)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -Iks --location -X GET -A "x-agent" https://www.google.com
|
||||||
|
```
|
||||||
|
|
||||||
|
* `--location` - follow redirects
|
||||||
|
* `-X` - set method
|
||||||
|
* `-A` - set user-agent
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -Iks --location -X GET -A "x-agent" --proxy http://127.0.0.1:16379 https://www.google.com
|
||||||
|
```
|
||||||
|
|
||||||
|
* `--proxy [socks5://|http://]` - set proxy server
|
||||||
|
|
||||||
|
___
|
||||||
|
|
||||||
|
##### Tool: [httpie](https://httpie.org/)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
http -p Hh https://www.google.com
|
||||||
|
```
|
||||||
|
|
||||||
|
* `-p` - print request and response headers
|
||||||
|
* `H` - request headers
|
||||||
|
* `B` - request body
|
||||||
|
* `h` - response headers
|
||||||
|
* `b` - response body
|
||||||
|
|
||||||
|
```bash
|
||||||
|
http -p Hh --follow --max-redirects 5 --verify no https://www.google.com
|
||||||
|
```
|
||||||
|
|
||||||
|
* `-F, --follow` - follow redirects
|
||||||
|
* `--max-redirects N` - maximum for `--follow`
|
||||||
|
* `--verify no` - skip SSL verification
|
||||||
|
|
||||||
|
```bash
|
||||||
|
http -p Hh --follow --max-redirects 5 --verify no --proxy http:http://127.0.0.1:16379 https://www.google.com
|
||||||
|
```
|
||||||
|
|
||||||
|
* `--proxy [http:]` - set proxy server
|
||||||
|
|
||||||
|
<a name="network"><b>Network</b></a>
|
||||||
|
|
||||||
|
##### Tool: [openssh](https://www.openssh.com/)
|
||||||
|
|
||||||
|
###### Compare a remote file with a local file
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ssh user@host cat /path/to/remotefile | diff /path/to/localfile -
|
||||||
|
```
|
||||||
|
|
||||||
|
###### SSH connection through host in the middle
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ssh -t reachable_host ssh unreachable_host
|
||||||
|
```
|
||||||
|
|
||||||
|
___
|
||||||
|
|
||||||
|
##### Tool: [linux-dev](https://www.tldp.org/LDP/abs/html/devref1.html)
|
||||||
|
|
||||||
|
###### Testing remote connection to port
|
||||||
|
|
||||||
|
```bash
|
||||||
|
timeout 1 bash -c "</dev/tcp/<host>/<port>" >/dev/null 2>&1 ; echo $?
|
||||||
|
```
|
||||||
|
|
||||||
|
* `<host>` - set remote host
|
||||||
|
* `<port>` - set destination port
|
||||||
|
|
||||||
|
___
|
||||||
|
|
||||||
|
##### Tool: [tcpdump](http://www.tcpdump.org/)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
tcpdump -ne -i eth0 -Q in host 192.168.252.1 and port 443
|
||||||
|
```
|
||||||
|
|
||||||
|
* `-n` - don't convert addresses
|
||||||
|
* `-e` - print the link-level headers
|
||||||
|
* `-i [iface]` - set interface
|
||||||
|
* `-Q|-D [in|out|inout]` - choose send/receive direction (`-D` - for old tcpdump versions)
|
||||||
|
* `host [ip|hostname]` - set host, also `[host not]`
|
||||||
|
* `[and|or]` - set logic
|
||||||
|
* `port [1-65535]` - set port number, also `[port not]`
|
||||||
|
|
||||||
|
```bash
|
||||||
|
tcpdump -ne -i eth0 -Q in host 192.168.252.1 and port 443 -c 5 -w tcpdump.pcap
|
||||||
|
```
|
||||||
|
|
||||||
|
* `-c [num]` - capture only num number of packets
|
||||||
|
* `-w [filename]` - write packets to file, `-r [filename]` - reading from file
|
||||||
|
|
||||||
|
___
|
||||||
|
|
||||||
|
##### Tool: [ngrep](http://ngrep.sourceforge.net/usage.html)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ngrep -d eth0 "www.google.com" port 443
|
||||||
|
```
|
||||||
|
|
||||||
|
* `-d [iface|any]` - set interface
|
||||||
|
* `[domain]` - set hostname
|
||||||
|
* `port [1-65535]` - set port number
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ngrep -d eth0 "www.google.com" (host 10.240.20.2) and (port 443)
|
||||||
|
```
|
||||||
|
|
||||||
|
* `(host [ip|hostname])` - filter by ip or hostname
|
||||||
|
* `(port [1-65535])` - filter by port number
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ngrep -d eth0 -qt -O ngrep.pcap "www.google.com" port 443
|
||||||
|
```
|
||||||
|
|
||||||
|
* `-q` - quiet mode (only payloads)
|
||||||
|
* `-t` - added timestamps
|
||||||
|
* `-O [filename]` - save output to file, `-I [filename]` - reading from file
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ngrep -d eth0 -qt 'HTTP' 'tcp'
|
||||||
|
```
|
||||||
|
|
||||||
|
* `HTTP` - show http headers
|
||||||
|
* `tcp|udp` - set protocol
|
||||||
|
* `[src|dst] host [ip|hostname]` - set direction for specific node
|
||||||
|
|
||||||
|
___
|
||||||
|
|
||||||
|
##### Tool: [hping3](http://www.hping.org/)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
hping3 -V -p 80 -s 5050 <scan_type> www.google.com
|
||||||
|
```
|
||||||
|
|
||||||
|
* `-V|--verbose` - verbose mode
|
||||||
|
* `-p|--destport` - set destination port
|
||||||
|
* `-s|--baseport` - set source port
|
||||||
|
* `<scan_type>` - set scan type
|
||||||
|
* `-F|--fin` - set FIN flag, port open if no reply
|
||||||
|
* `-S|--syn` - set SYN flag
|
||||||
|
* `-P|--push` - set PUSH flag
|
||||||
|
* `-A|--ack` - set ACK flag (use when ping is blocked, RST response back if the port is open)
|
||||||
|
* `-U|--urg` - set URG flag
|
||||||
|
* `-Y|--ymas` - set Y unused flag (0x80 - nullscan), port open if no reply
|
||||||
|
* `-M 0 -UPF` - set TCP sequence number and scan type (URG+PUSH+FIN), port open if no reply
|
||||||
|
|
||||||
|
```bash
|
||||||
|
hping3 -V -c 1 -1 -C 8 www.google.com
|
||||||
|
```
|
||||||
|
|
||||||
|
* `-c [num]` - packet count
|
||||||
|
* `-1` - set ICMP mode
|
||||||
|
* `-C|--icmptype [icmp-num]` - set icmp type (default icmp-echo = 8)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
hping3 -V -c 1000000 -d 120 -S -w 64 -p 80 --flood --rand-source <remote_host>
|
||||||
|
```
|
||||||
|
|
||||||
|
* `--flood` - sent packets as fast as possible (don't show replies)
|
||||||
|
* `--rand-source` - random source address mode
|
||||||
|
* `-d --data` - data size
|
||||||
|
* `-w|--win` - winsize (default 64)
|
||||||
|
|
||||||
|
___
|
||||||
|
|
||||||
|
##### Tool: [netcat](http://netcat.sourceforge.net/)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
nc -kl 5000
|
||||||
|
```
|
||||||
|
|
||||||
|
* `-l` - listen for an incoming connection
|
||||||
|
* `-k` - listening after client has disconnected
|
||||||
|
* `>filename.out` - save receive data to file (optional)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
nc 192.168.0.1 5051 < filename.in
|
||||||
|
```
|
||||||
|
|
||||||
|
* `< filename.in` - send data to remote host
|
||||||
|
|
||||||
|
```bash
|
||||||
|
nc -vz 10.240.30.3 5000
|
||||||
|
```
|
||||||
|
|
||||||
|
* `-v` - verbose output
|
||||||
|
* `-z` - scan for listening daemons
|
||||||
|
|
||||||
|
```bash
|
||||||
|
nc -vzu 10.240.30.3 1-65535
|
||||||
|
```
|
||||||
|
|
||||||
|
* `-u` - scan only udp ports
|
||||||
|
|
||||||
|
###### Transfer data file (archive)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
server> nc -l 5000 | tar xzvfp -
|
||||||
|
client> tar czvfp - /path/to/dir | nc 10.240.30.3 5000
|
||||||
|
```
|
||||||
|
|
||||||
|
###### Launch remote shell
|
||||||
|
|
||||||
|
```bash
|
||||||
|
server> nc -l 5000 -e /bin/bash
|
||||||
|
client> nc 10.240.30.3 5000
|
||||||
|
```
|
||||||
|
|
||||||
|
###### Simple HTTP Server
|
||||||
|
|
||||||
|
> Restarts web server after each request - remove `while` condition for only single connection.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cat > index.html << __EOF__
|
||||||
|
<!doctype html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||||
|
<title></title>
|
||||||
|
<meta name="description" content="">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
|
||||||
|
Hello! It's a site.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
__EOF__
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
server> while : ; do \
|
||||||
|
(echo -ne "HTTP/1.1 200 OK\r\nContent-Length: $(wc -c <index.html)\r\n\r\n" ; cat index.html;) \
|
||||||
|
| nc -l -p 5000 \
|
||||||
|
; done
|
||||||
|
```
|
||||||
|
|
||||||
|
* `-p` - port number
|
||||||
|
|
||||||
|
###### Simple HTTP Proxy (single connection)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
if [[ $# != 2 ]] ; then
|
||||||
|
printf "%s\\n" \
|
||||||
|
"usage: ./nc-proxy listen-port bk_host:bk_port"
|
||||||
|
fi
|
||||||
|
|
||||||
|
_listen_port="$1"
|
||||||
|
_bk_host=$(echo "$2" | cut -d ":" -f1)
|
||||||
|
_bk_port=$(echo "$2" | cut -d ":" -f2)
|
||||||
|
|
||||||
|
printf " lport: %s\\nbk_host: %s\\nbk_port: %s\\n\\n" \
|
||||||
|
"$_listen_port" "$_bk_host" "$_bk_port"
|
||||||
|
|
||||||
|
_tmp=$(mktemp -d)
|
||||||
|
_back="$_tmp/pipe.back"
|
||||||
|
_sent="$_tmp/pipe.sent"
|
||||||
|
_recv="$_tmp/pipe.recv"
|
||||||
|
|
||||||
|
trap 'rm -rf "$_tmp"' EXIT
|
||||||
|
|
||||||
|
mkfifo -m 0600 "$_back" "$_sent" "$_recv"
|
||||||
|
|
||||||
|
sed "s/^/=> /" <"$_sent" &
|
||||||
|
sed "s/^/<= /" <"$_recv" &
|
||||||
|
nc -l -p "$_listen_port" <"$_back" \
|
||||||
|
| tee "$_sent" \
|
||||||
|
| nc "$_bk_host" "$_bk_port" \
|
||||||
|
| tee "$_recv" >"$_back"
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
server> chmod +x nc-proxy && ./nc-proxy 8080 192.168.252.10:8000
|
||||||
|
lport: 8080
|
||||||
|
bk_host: 192.168.252.10
|
||||||
|
bk_port: 8000
|
||||||
|
|
||||||
|
client> http -p h 10.240.30.3:8080
|
||||||
|
HTTP/1.1 200 OK
|
||||||
|
Accept-Ranges: bytes
|
||||||
|
Cache-Control: max-age=31536000
|
||||||
|
Content-Length: 2748
|
||||||
|
Content-Type: text/html; charset=utf-8
|
||||||
|
Date: Sun, 01 Jul 2018 20:12:08 GMT
|
||||||
|
Last-Modified: Sun, 01 Apr 2018 21:53:37 GMT
|
||||||
|
```
|
||||||
|
|
||||||
|
___
|
||||||
|
|
||||||
|
##### Tool: [socat](http://www.dest-unreach.org/socat/doc/socat.html/)
|
||||||
|
|
||||||
|
###### Testing remote connection to port
|
||||||
|
|
||||||
|
```bash
|
||||||
|
socat - TCP4:10.240.30.3:22
|
||||||
|
```
|
||||||
|
|
||||||
|
* `-` - standard input (STDIO)
|
||||||
|
* `TCP4:<params>` - set tcp4 connection with specific params
|
||||||
|
* `[hostname|ip]` - set hostname/ip
|
||||||
|
* `[1-65535]` - set port number
|
||||||
|
|
||||||
|
###### Redirecting TCP-traffic to a UNIX domain socket under Linux
|
||||||
|
|
||||||
|
```bash
|
||||||
|
socat TCP-LISTEN:1234,bind=127.0.0.1,reuseaddr,fork,su=nobody,range=127.0.0.0/8 UNIX-CLIENT:/tmp/foo
|
||||||
|
```
|
||||||
|
|
||||||
|
* `TCP-LISTEN:<params>` - set tcp listen with specific params
|
||||||
|
* `[1-65535]` - set port number
|
||||||
|
* `bind=[hostname|ip]` - set bind hostname/ip
|
||||||
|
* `reuseaddr` -
|
||||||
|
* `fork` -
|
||||||
|
* `su=nobody` -
|
||||||
|
* `range=[ip-range]` -
|
||||||
|
* `UNIX-CLIENT:<params>`
|
||||||
|
* `filename` -
|
||||||
|
|
||||||
|
##### Tool: [lsof](http://www.dest-unreach.org/socat/doc/socat.html/)
|
||||||
|
|
||||||
|
###### Show process that use internet connection at the moment
|
||||||
|
|
||||||
|
```bash
|
||||||
|
lsof -P -i -n
|
||||||
|
```
|
||||||
|
|
||||||
|
**Tool: [netstat](http://www.dest-unreach.org/socat/doc/socat.html/)**
|
||||||
|
|
||||||
|
###### Graph # of connections for each hosts
|
||||||
|
|
||||||
|
```bash
|
||||||
|
netstat -an | grep ESTABLISHED | awk '{print $5}' | awk -F: '{print $1}' | grep -v -e '^[[:space:]]*$' | sort | uniq -c | awk '{ printf("%s\t%s\t",$2,$1) ; for (i = 0; i < $1; i++) {printf("*")}; print "" }'
|
||||||
|
```
|
||||||
|
|
||||||
|
<a name="programming"><b>Programming</b></a>
|
||||||
|
|
||||||
|
##### Tool: [awk](https://curl.haxx.se)
|
||||||
|
|
||||||
|
###### Remove duplicate entries in a file without sorting
|
||||||
|
|
||||||
|
```bash
|
||||||
|
awk '!x[$0]++' filename
|
||||||
|
```
|
||||||
|
|
Loading…
Reference in a new issue