DVWA全级别-双向规则编写
下面的规则可以通过DVWA高中低三种难度
- 爆破攻击
- 攻击方式
- 规则编写
- SQL注入攻击
- 攻击方式
- 规则编写
- XSS反射型攻击
- 攻击方式
- 规则编写
- XSS存储型攻击
- 攻击方式
- 规则编写
- 文件上传攻击
- 攻击方式
- 规则编写
- 文件包含攻击
- 攻击方式
- 规则编写
- 命令注入攻击
- 攻击方式
- 规则编写
- 汇总
涉及到的漏洞包括:
爆破攻击
SQL注入攻击
命令注入攻击
XSS_r漏洞攻击
XSS_S漏洞攻击
upload漏洞攻击
File_Inclusion漏洞攻击
特别警告,数据包内容过长,下面数据包的截图是我拼接的
爆破攻击
爆破攻击的核心是在一定时间范围内频繁发起来连接请求,把握住这一点即可
攻击方式
低级难度:直接BurpSuite爆破
中级难度:直接BurpSuite爆破
高级难度:BurpSuite单线程爆破
详情可以参考我之前的文章DVWA闯关Brute Force
规则编写
alert tcp any any -> any any (msg:"DVWA-brute漏洞攻击"; flow:to_server,established; uricontent:"DVWA-master/vulnerabilities/brute"; fast_pattern:only; detection_filter:track by_dst, count 15, seconds 30; uricontent:"username="; pcre:"/username[\s=]+?.+?password[\s=]\w+?/iU"; flowbits:set,Brute_Force; metadata:service http; sid:2; rev:1;)
alert tcp any any -> any any (msg:"DVWA-brute漏洞攻击响应"; flow:established,to_client; content:"200 OK"; flowbits:isset,Brute_Force; metadata:service http; sid:22; rev:1;)
规则的核心是限制请求频率:
detection_filter:track by_dst, count 15, seconds 30;
SQL注入攻击
在DVWA中,正常的请求是输入一个数字(如下图),把握住这一点即可,只要用户在输入框中输入了非数字内容,就认为非法!
攻击方式
具体的攻击手段,参考DVWA之SQL Injection
低级难度攻击手段如下:
中级难度的攻击手段如下:
高级难度的攻击手段如下:
规则编写
由上面的攻击方式,可以知道,在控制请求时要编写两条规则,两条规则的区别主要体现在修饰符上,低级难度用U
,中级和高级难度用P
,并且在高级难度的攻击手段截图中,用绿色标记到了id
和ID
,这意味着高级难度的修饰符不能使用i
请求规则
alert tcp any any -> any any (msg:"DVWA-SQL注入攻击"; flow:to_server,established; uricontent:"DVWA-master/vulnerabilities/sqli"; fast_pattern:only; pcre:"/id[\s=]+?\d+?[^\d]+?/i"; flowbits:set,SQL_Injection; metadata:service http; sid:3; rev:1;)
响应规则
由于不同方式注入产生不同结果,而请求规则已经限制的足够了,所以响应规则不多限制
alert tcp any any -> any any (msg:"DVWA-SQL注入攻击响应"; flow:established,to_client; content:"200 OK"; flowbits:isset,SQL_Injection; metadata:service http; sid:333; rev:1;)
XSS反射型攻击
正常的请求如下图所示,所以控制XSS请求的核心在于特殊字符的控制,而响应包里面会包含请求的内容,所以针对响应包的规则编写也是在于特殊字符的检查
攻击方式
详情参考DVWA闯关XSS(Reflected)
(下面的截图是请求与响应的数据包拼接的)
低级难度攻击手段如下:
中级难度攻击手段如下:
高级难度攻击手段如下:
规则编写
alert tcp any any -> any any (msg:"DVWA-XSS_r漏洞攻击"; flow:to_server,established; uricontent:"DVWA-master/vulnerabilities/xss_r"; fast_pattern:only; uricontent:"name="; nocase; pcre:"/name[\s=]+?(%3c|\x3c|<).+?(%3E|\x3E|>)/iU"; flowbits:set,xss_reflect; metadata:service http; sid:4; rev:1;)
alert tcp any any -> any any (msg:"DVWA-XSS_r漏洞攻击响应"; flow:established,to_client; content:"200 OK"; pcre:"/Hello\s+?(%3c|\x3c|<).+?(%3E|\x3E|>)/i"; flowbits:isset,xss_reflect; metadata:service http; sid:44; rev:1;)
XSS存储型攻击
正常的请求如下图所示,在请求与响应的规则控制上与xss反射型相似
攻击方式
具体的攻击手段参考:DVWA之Stored XSS(存储型XSS)
低级难度攻击手段如下:
中级难度攻击手段如下:
友情提示,在构造payload时需要做URL编码,建议使用BurpSuite来做,HackBar或者一些在线工具做出来的可能会不符合要求
高级难度攻击手段如下:
规则编写
alert tcp any any -> any any (msg:"DVWA-XSS_S漏洞攻击"; flow:to_server,established; uricontent:"DVWA-master/vulnerabilities/xss_s"; fast_pattern:only; content:"txtName="; nocase; http_client_body; content:"mtxMessage="; nocase; http_client_body; pcre:"/(txtName|mtxMessage)[\s=]+?(%3C|\x3c|<).+?(%3E|\x3E|>)/iP"; flowbits:set,SQL_stored; metadata:service http; sid:5; rev:1;)
alert tcp any any -> any any (msg:"DVWA-XSS_S漏洞攻击响应"; flow:established,to_client; content:"200 OK"; pcre:"/Name:\s+?((%3C|\x3c|<).+?(%3E|\x3E|>))|Message:\s+?(%3C|\x3c|<).+?(%3E|\x3E|>)/i"; flowbits:isset,SQL_stored; metadata:service http; sid:55; rev:1;)
文件上传攻击
在DVWA中,文件上传如下图所示,要求上传图片,并且会给出路径。而文件上传的攻击思路则一般是直接上传一句话木马,或者更改文件类型,或者使用图片木马,但是这三种方法的共同特征就是会在上传的时候,可以检测到文件内容存在恶意代码。
响应内容里面会包含文件名,如果是上传的图片木马,在DVWA中,响应是没办法检查的,所以不必太在意响应的规则编写。
攻击方式
具体攻击方式参考DVWA闯关File Upload
低级难度攻击手段如下: 直接上传一句话木马
中级难度攻击手段如下: 修改文件类型,上传一句话木马
高级难度攻击手段如下: 使用图片木马
规则编写
请求规则:
alert tcp any any -> any any (msg:"DVWA-upload漏洞攻击"; flow:to_server,established; uricontent:"DVWA-master/vulnerabilities/upload"; fast_pattern:only; content:"name=|22|uploaded|22|"; content:"filename="; distance:0; pcre:"/filename[\s=]+?\x22.+?\.(php|phtml|html|php3|php5|jsp|asp|htm|war|phl|htaccess)|(eval|assert|call_user_func|preg_replace).+(_REQUEST|_GET|_POST|_COOKIES)/i"; flowbits:set,file_upload; metadata:service http; sid:6; rev:1;)
核心是这一段正则:
/filename[\s=]+?\x22.+?\.(php|phtml|html|php3|php5|jsp|asp|htm|war|phl|htaccess)|(eval|assert|call_user_func|preg_replace).+(_REQUEST|_GET|_POST|_COOKIES)/i
它的优点是可以不仅可以匹配直接上传非图片文件,还可以匹配文件内容中的恶意代码;
缺点是执行效率低下。
譬如对于中等难度的文件上传,需要执行5千多步才行
对于高级难度的文件上传,就很夸张了,执行了近40万步才匹配上
所以,推荐把文件后缀和文件内容两块内容分开来写,或者干脆只检查文件内容。
于是得到了如下的请求规则:
新的请求规则
alert tcp any any -> any any (msg:"DVWA-upload漏洞攻击"; flow:to_server,established; uricontent:"DVWA-master/vulnerabilities/upload"; fast_pattern:only; content:"name=|22|uploaded|22|"; content:"filename="; distance:0; pcre:"/(eval|assert|call_user_func|preg_replace).+(_REQUEST|_GET|_POST|_COOKIES)/i"; flowbits:set,file_upload; metadata:service http; sid:6; rev:1;)
另外,只有删除掉请求规则里面的正则,才可以匹配高级难度里的图片木马,否则无论正则怎么写都没法匹配,怀疑可能是数据包庞大导致snort分析出现问题,这也是唯一失败的一条规则,以后如果解决掉的话再补上
响应规则
根据“攻击方式”的截图可以看到,响应没有什么特殊的地方,所以不做严格检查
alert tcp any any -> any any (msg:"DVWA-upload漏洞攻击响应"; flow:established,to_client; content:"200 OK"; pcre:"/uploads\/.+?\.(php|phtml|html|php3|php5|jsp|asp|htm|war|phl|htaccess)?/i"; flowbits:isset,file_upload; metadata:service http; sid:66; rev:1;)
文件包含攻击
在DVWA中,正常的请求如下图,恶意请求一般为远程文件包含或者本地文件包含,这两种包含方式都要路径,那限制使用路径即可
攻击方式
具体攻击方式参考DVWA闯关File Inclusion
低级难度攻击手段如下:
中级难度攻击手段如下:
高级难度攻击手段如下:
规则编写
请求规则
alert tcp any any -> any any (msg:"DVWA-fi漏洞攻击"; flow:to_server,established; uricontent:"DVWA-master/vulnerabilities/fi"; fast_pattern:only; uricontent:"page="; nocase; pcre:"/page[\s=]+?.+(\x2F|\/|%2F|\x5C|\\|%5C).+\.(php|html|txt|jsp|aspx|conf|htaccess|md|ini|ico)/iU"; flowbits:set,file_Inclusion; metadata:service http; sid:7; rev:1;)
核心匹配代码:
pcre:"/page[\s=]+?.+(\x2F|\/|%2F|\x5C|\\|%5C).+\.(php|html|txt|jsp|aspx|conf|htaccess|md|ini|ico)/iU";
响应规则
全级别通过响应
alert tcp any any -> any any (msg:"DVWA-fi漏洞攻击响应"; flow:established,to_client; content:"200 OK"; pcre:"/main_body\">[\x0d\x09\x0a]+<br/i"; flowbits:isset,file_Inclusion; metadata:service http; sid:777; rev:1;)
主要是匹配截图中的那个空白字符,你可以使用正则匹配,我一开始也是这样做的,我当时写的规则如下,但snort死活就是无法响应高级难度的数据,所以最终使用了上面的那条规则,很无语
无法响应高级难度
alert tcp any any -> any any (msg:"DVWA-fi漏洞攻击响应"; flow:established,to_client; content:"200 OK"; pcre:"/main_body">\s+<br/i"; flowbits:isset,file_Inclusion; metadata:service http; sid:77; rev:1;)
命令注入攻击
在DVWA中,正常的命令输入如下,恶意的命令输入会在IP地址后面输入额外的字符,把握住这一点即可。
攻击方式
具体的攻击方式参考DVWA闯关Command Execution
低级难度攻击手段如下:
中级难度攻击手段如下:
高级难度攻击手段如下:
注意,输入127.0.0.1|net user
并没有发生ping,只显示了net user
的内容
规则编写
请求规则
这部分没什么好说的,主要检查是否在ip地址后面输入了其他内容
alert tcp any any -> any any (msg:"DVWA-命令注入攻击"; flow:to_server,established; uricontent:"DVWA-master/vulnerabilities/exec"; fast_pattern:only; content:"ip="; nocase; http_client_body; pcre:"/ip=\d+?\.\d+?\.\d+?\.\d+?[^\d]+?/iP"; flowbits:set,Command_Injection; metadata:service http; sid:1; rev:1;)
响应规则
这部分我本来是用正则匹配做的,但很不幸,snort无法响应高级难度,虽然正则可以匹配的上,正则如下:
/\x20=\x200ms\s+[\w\\\s-.]+<\/pre>|<pre>\s+[\w\\\s-.]+<\/pre>/is
成功匹配低级难度
成功匹配中级难度
成功匹配高级难度
既然snort无法响应高级难度的数据包,那就只好把低级和中级使用一条规则,高级使用另一条。
响应规则
alert tcp any any -> any any (msg:"DVWA-命令注入攻击响应"; flow:established,to_client; content:"200 OK"; pcre:"/\x20=\x200ms[\x0d\x0a]+?.*<\/pre>/is"; flowbits:isset,Command_Injection; metadata:service http; sid:11; rev:1;)
alert tcp any any -> any any (msg:"DVWA-命令注入攻击响应"; flow:established,to_client; content:"200 OK"; content:!"ms"; flowbits:isset,Command_Injection; metadata:service http; sid:111; rev:1;)
第二条响应规则是为高级难度量身打造的,主要是当主机不ping时,响应的内容里面没有ms
(毫秒),根据这一点写规则。
汇总
命令注入
alert tcp any any -> any any (msg:"DVWA-命令注入攻击"; flow:to_server,established; uricontent:"DVWA-master/vulnerabilities/exec"; fast_pattern:only; content:"ip="; nocase; http_client_body; pcre:"/ip=\d+?\.\d+?\.\d+?\.\d+?[^\d]+?/iP"; flowbits:set,Command_Injection; metadata:service http; sid:1; rev:1;)
alert tcp any any -> any any (msg:"DVWA-命令注入攻击响应"; flow:established,to_client; content:"200 OK"; pcre:"/\x20=\x200ms[\x0d\x0a]+?.*<\/pre>/is"; flowbits:isset,Command_Injection; metadata:service http; sid:11; rev:1;)
alert tcp any any -> any any (msg:"DVWA-命令注入攻击响应"; flow:established,to_client; content:"200 OK"; content:!"ms"; flowbits:isset,Command_Injection; metadata:service http; sid:111; rev:1;)爆破:
alert tcp any any -> any any (msg:"DVWA-brute漏洞攻击"; flow:to_server,established; uricontent:"DVWA-master/vulnerabilities/brute"; fast_pattern:only; detection_filter:track by_dst, count 15, seconds 30; uricontent:"username="; pcre:"/username[\s=]+?.+?password[\s=]\w+?/iU"; flowbits:set,Brute_Force; metadata:service http; sid:2; rev:1;)
alert tcp any any -> any any (msg:"DVWA-brute漏洞攻击响应"; flow:established,to_client; content:"200 OK"; flowbits:isset,Brute_Force; metadata:service http; sid:22; rev:1;)SQL注入:
alert tcp any any -> any any (msg:"DVWA-SQL注入攻击"; flow:to_server,established; uricontent:"DVWA-master/vulnerabilities/sqli"; fast_pattern:only; pcre:"/id[\s=]+?\d+?[^\d]+?/iU"; flowbits:set,SQL_Injection; metadata:service http; sid:3; rev:1;)
alert tcp any any -> any any (msg:"DVWA-SQL注入攻击"; flow:to_server,established; uricontent:"DVWA-master/vulnerabilities/sqli"; fast_pattern:only; pcre:"/id[\s=]+?\d+?[^\d]+?/P"; flowbits:set,SQL_Injection; metadata:service http; sid:33; rev:1;)
alert tcp any any -> any any (msg:"DVWA-SQL注入攻击响应"; flow:established,to_client; content:"200 OK"; flowbits:isset,SQL_Injection; metadata:service http; sid:333; rev:1;)XSS反射型:
alert tcp any any -> any any (msg:"DVWA-XSS_r漏洞攻击"; flow:to_server,established; uricontent:"DVWA-master/vulnerabilities/xss_r"; fast_pattern:only; uricontent:"name="; nocase; pcre:"/name[\s=]+?(%3c|\x3c|<).+?(%3E|\x3E|>)/iU"; flowbits:set,xss_reflect; metadata:service http; sid:4; rev:1;)
alert tcp any any -> any any (msg:"DVWA-XSS_r漏洞攻击响应"; flow:established,to_client; content:"200 OK"; pcre:"/Hello\s+?(%3c|\x3c|<).+?(%3E|\x3E|>)/i"; flowbits:isset,xss_reflect; metadata:service http; sid:44; rev:1;)XSS存储型:
alert tcp any any -> any any (msg:"DVWA-XSS_S漏洞攻击"; flow:to_server,established; uricontent:"DVWA-master/vulnerabilities/xss_s"; fast_pattern:only; content:"txtName="; nocase; http_client_body; content:"mtxMessage="; nocase; http_client_body; pcre:"/(txtName|mtxMessage)[\s=]+?(%3C|\x3c|<).+?(%3E|\x3E|>)/iP"; flowbits:set,SQL_stored; metadata:service http; sid:5; rev:1;)
alert tcp any any -> any any (msg:"DVWA-XSS_S漏洞攻击响应"; flow:established,to_client; content:"200 OK"; pcre:"/Name:\s+?((%3C|\x3c|<).+?(%3E|\x3E|>))|Message:\s+?(%3C|\x3c|<).+?(%3E|\x3E|>)/i"; flowbits:isset,SQL_stored; metadata:service http; sid:55; rev:1;)upload:
alert tcp any any -> any any (msg:"DVWA-upload漏洞攻击"; flow:to_server,established; uricontent:"DVWA-master/vulnerabilities/upload"; fast_pattern:only; content:"name=|22|uploaded|22|"; content:"filename="; distance:0; pcre:"/filename[\s=]+?\x22.+?\.(php|phtml|html|php3|php5|jsp|asp|htm|war|phl|htaccess)|(eval|assert|call_user_func|preg_replace).+(_REQUEST|_GET|_POST|_COOKIES)/i"; flowbits:set,file_upload; metadata:service http; sid:6; rev:1;)
alert tcp any any -> any any (msg:"DVWA-upload漏洞攻击响应"; flow:established,to_client; content:"200 OK"; pcre:"/uploads\/.+?\.(php|phtml|html|php3|php5|jsp|asp|htm|war|phl|htaccess)?/i"; flowbits:isset,file_upload; metadata:service http; sid:66; rev:1;)file_inlude:
alert tcp any any -> any any (msg:"DVWA-fi漏洞攻击"; flow:to_server,established; uricontent:"DVWA-master/vulnerabilities/fi"; fast_pattern:only; uricontent:"page="; nocase; pcre:"/page[\s=]+?.+(\x2F|\/|%2F|\x5C|\\|%5C).+\.(php|html|txt|jsp|aspx|conf|htaccess|md|ini|ico)/iU"; flowbits:set,file_Inclusion; metadata:service http; sid:7; rev:1;)
alert tcp any any -> any any (msg:"DVWA-fi漏洞攻击响应"; flow:established,to_client; content:"200 OK"; pcre:"/main_body\">[\x0d\x09\x0a]+<br/i"; flowbits:isset,file_Inclusion; metadata:service http; sid:777; rev:1;)
DVWA全级别-双向规则编写相关推荐
- 网络入侵检测--Snort软件规则编写
Snort规则编写 今天主要来讲一下Snort中的规则编写规则,还有些绕口,就是编写他们的rules的方法,可以帮助我们理解他们提供的rules和定义我们自己的rules. 首先我们来看一条规则 al ...
- SQL Server数据库查询区分大小写、全半角——排序规则的应用(转载)
SQL Server数据库查询区分大小写.全半角--排序规则的应用 因为偶然的原因,需要在INNER JOIN联表时,让对应字段进行区分大小写的比较.而默认情况下建立的Sql Server数据库是不区 ...
- CVE-2018-1273漏洞复现日志+IDS规则编写
CVE-2018-1273(Spring Data Commons) 远程命令执行漏洞 漏洞描述: Spring Data Commons(1.13至1.13.10之前的版本,2.0至2.0.5的版本 ...
- FFB6D A Full Flow Bidirectional Fusion Network for 6D Pose EstimationFFB6D 6D 姿势估计的全流双向融合网络
文章目录 摘要 解决问题 贡献 方法 LOSS 3D-3D对应 摘要 在这项工作中,我们提出了 FFB6D,这是一种全流双向融合网络,专为从单个 RGBD 图像进行 6D 姿态估计而设计.我们的主要见 ...
- CCleaner 垃圾文件清理规则 编写指南
以下内容的英文版本来源于 CCleaner 官方论坛,仅供参考.欢迎大家编写并分享针对常用国产软件的垃圾文件清理规则! 需要说明的是规则文件(Winapp2.ini)需和程序文件放于同一文件夹下,才能 ...
- 火车头采集之采集规则编写
文章目录[隐藏] 前言 目标网站分析 火车头采集器使用(mip.chiyuba.com 可搜索下载) 总结 前言 上一篇火车头采集系列主要给大家一个引导作用,让大家简单了解火车头采集器有什么功能,从次 ...
- 火绒规则 禁止所有软件的安装_【技术宅】火绒安全软件防流氓规则编写及使用小白教程(附成品)...
[动漫星空导读]今天小编给大家讲一下如何用火绒自定义规则禁止流氓软件祸害自己的电脑,本人也是小白,就是比较爱折腾,有错的地方希望大家多多指教! 首先介绍下火绒的规则,目前火绒系统防护规则支持的通配符如 ...
- 实验 snort安装配置与规则编写
实验 snort安装配置与NIDS规则编写 1 实验目的 在linux或windows任意一个平台下完成snort的安装,使snort工作在NIDS模式下,并编写符合相关情景要求的snort规则. 2 ...
- destoon8.0火车头免登陆发布接口+全模块采集规则+主动推送百度
destoon8.0火车头免登陆发布接口,不限制域名,支持全模块模拟采集更新外加入库自动推送百度. 下载地址:destoon8.0火车头免登陆发布接口+全模块采集规则+主动推送百度-68资源网dest ...
最新文章
- Redis数据介绍与指令大全
- Java入门超简单程序Song List
- 3.Python算法之贪心算法思想
- webspere php,Project Zero、WebSphere sMash、PHP和JAVA的整合
- Ubuntu上使用octopress+github建立个人博客
- 交换机该选择千兆还是百兆的呢?
- Excellent Service
- win10一直卡在自动修复_分享:win10自动修复过程中无法正确启动怎么办?
- saltstack python3安装_如何在linux下升级python以及saltstack安装
- matlab 2d pml,二维TM波,PML边界,matlab程序。但是仿真结果有问题,求高手。
- sklearn ——Classification——knn
- python3标识符_python3学习笔记一(标识符、关键字)
- C语言学习——初始C语言
- 海店湾:劲爆!这款APP的横空出世,是美女们的福利还是潮流?
- 大二 数据结构 期末复习题(仅供参考)
- windows系统下更改itunes默认备份地址(小白实操)
- java 判断是否为英文字母_java 如何判断是否是26个英文字母
- 电力LED时钟系统解决方案实现精确时间同步
- 二阶Volterra矩阵生成 matlab
- JAVA 开发基础【JSON相关】