基于AWD比赛的蠕虫webshell
基于AWD比赛的蠕虫webshell
原创: 3s_NWGeek 合天智汇
原创投稿活动:重金悬赏 | 合天原创投稿等你来
0x00 蠕虫webshell
不死马大家可能听得比较多,但蠕虫webshell大家可能还没有听过,因为是我为了awd比赛量身定制的一个webshell。
蠕虫webshell之所以叫蠕虫webshell,是因为它可以把本地的php会写shell插入到其他php原文件,还增加了相互复活机制,后期增加与其他已感染的主机中的webshell互相复活。
先给大家看看这个蠕虫webshell已经实现的功能:
- 递归扫描所有web目录及文件,全部扫到的php写入webshell
- 网站全部php可作为webshell连接执行命令
- 不带参数请求又可以正常访问原页面,不影响访问
- 所有web路径目录写入单独一个特定webshell
- 判断是否写过不再重复写入
- 所有php页面都可以互相复活蠕虫webshell
- 蠕虫webshell返回所有php文件url地址
- 蠕虫webshell发送返回数据传输加密
- 数字签名校验执行、5秒后不可重放 后续添加
- 页面功能性可控(可以使全部php原有功能失效,只剩下webshell功能)
- 前端互相复活以及反渗透
- 适配meterpreter连接
- 加密混淆
简单来说最实际的功能还是,我带一个参数访问我的webshell,全站的php文件都被我感染,都可以当webshell连,都可以执行命令,只要带一个参数访问都可以互相复活。
0x01 实际操作
随着比赛规则越来越完善,不能提权root,php可能禁用越来越多的功能函数来保持比赛公平性,所以比赛时要先看看phpinfo有没有禁用我这个webshell其中的函数。
当然比如说是扫描目录,比赛主办方可能禁用了scandir这个函数,所以我在马相关功能中只用了is_dir()这个函数。
实际用例是这样的:
假设shell.php已经上传到目录,上传目录为upload,ip为192.168.1.1
- 访问 http://192.168.1.1/upload/shell.php 正常不带参数访问是返回状态码500,页面会正常访问
- 带参数下划线访问,会自动感染全站php文件,所有php可以当shell连接
- eg: http://192.168.1.1/upload/shell.php?_
- 如上带下划线参数访问后,右键查看页面源代码可以看到所有被感染的php地址。
- 可以使用python把所有url爬下来,爬取规则:checks_arr = html.find_all(attrs={'id': 'php_url'})
0x02 代码
大致功能看完了,贴上源码详细注释来说一下。(后期我做了混淆和免杀
0x03 演示
最后附上一个gif来演示一下,linux和windows的web服务器都可以兼容。Linux要注意下要有权限(awd比赛要做防护肯定有读写权限)
演示视频是上一个版本的,所以 php传播参数是go,但功能演示都是一样的,就不重新录制了。
图中的是 http://xx.x.xx.xx/webshell.php 只要增加?go这个参数就可以把全部php给重新改写插入原来的webshell,只要跑着python脚本不断访问随机一个php,就能重复不断写入原webshell(有判断是否已经写入过,如果写入过就不会再重复写入),同时单独生成一个名字相同的webshell。
(需要视频,私信小编哦)
好的标题可以获得更多的推荐及关注者
0x04 python控制
对于python的命令执行端可以方便控制这个马。只要修改webshell_url和cmd执行的命令这两个参数就可以了。
(需要视频,私信小编哦)
好的标题可以获得更多的推荐及关注者
实际运行效果,随机挑选一个php地址进行命令执行。
1.改好webshell地址 . 改执行命令 实际效果:. 加密传输的http流量 . 数字签名校验 . 5秒后不可重放 . 命令执行回显
缺点与不足:有些比赛权限做得比较严,www-data权限无法更改属于ctf用户php文件,只能每个目录生成一个默认的蠕虫webshell互相复活,对于这个我会持续更新的,敬请期待!
声明:笔者初衷用于分享与普及网络知识,若读者因此作出任何危害网络安全行为后果自负,与合天智汇及原作者无关!