顾名思义,webshell是通过web实现的shell,即通过php、JSP、ASP.NET等网页编程语言执行命令,并通过HTTP进行请求、应答的非交互的命令行模拟shell。使用webshell控制目标服务器是黑客常用的控制手段之一,接下来,我们来介绍Kali系统中自带的weevely工具。
weevely是一个使用Python写的webshell管理工具,通过它黑客可以远程操控webshell,并在目标服务器上执行如执行命令、上下载文件等操作。其功能很简单,没有太多的参数:
root@Server1:/usr/share/webshells# weevely -h
usage: weevely [-h] {terminal,session,generate} ...
positional arguments:
{terminal,session,generate}
terminal Run terminal or command on the target
session Recover an existing session
generate Generate new agent
optional arguments:
-h, --help show this help message and exit
root@Server1:/usr/share/webshells#
root@Server1:/usr/share/webshells# weevely
[+] weevely 4.0.1
[!] Error: the following arguments are required: url, password
[+] Run terminal or command on the target
weevely <URL> <password> [cmd]
[+] Recover an existing session
weevely session <path> [cmd]
[+] Generate new agent
weevely generate <password> <path>
root@Server1:/usr/share/webshell
1)首先使用weevely generate生成webshell.php,密码为Th1s@passw0rd,其内容是混淆过了的看起来乱七八糟的php代码:
2) 把webshell.php放到目标网站的根目录下,并执行weevely
http://192.168.30.21/webshell.php Th1s@passw0rd 命令连接webshell.php:
通过help命令,我们可以发现weevely支持好多常见的操作,包括:
执行命令起来就跟本地操作一样方便:
3)恢复历史session
可以使用weevely的session命令恢复之前添加webshell session:
需要留意的是:
1、使用Ctrl+c退出weevely shell。
2、~/.weevely目录下保持了weevely的相关数据,如会话、历史命令、配置及日志等。
1)首先要确保网站代码没有漏洞,说这个有点多余了。
2)使用低权限账号运行网站,并对网站代码文件的权限进行严格限制,确保运行账号没有权限写入webshell。
3)限制服务账号的网络访问权限,避免黑客使用webshell反弹shell或攻击其他服务器。
4)使用SElinux对底层中间件进行加固。
5)其它没提到的许多防范手段......