DVWA部分教程

本文详细介绍了DVWA教程中的三种常见Web安全漏洞:命令注入、跨站请求伪造(CSRF)和弱会话ID。讲解了如何利用漏洞执行系统命令、绕过安全验证,以及高级阶段如何通过MD5破解和利用token验证。
摘要由CSDN通过智能技术生成

DVWA部分教程

1.命令注入(Command Injection)

命令注入(Command Injection),对一些函数的参数没有做过滤或过滤不严导致的,可以执行系统或者应用指令(CMD命令或者bash命令)的一种注入攻击手段。

攻击者利用命令注入漏洞的常见方式之一是通过在用户输入中注入特殊字符或命令分隔符(如分号、管道符、与操作符),还可以注入简单病毒来进行攻击,从而欺骗应用程序将恶意命令附加到正常的系统命令中执行。

逻辑运算符“&”和“|”的意思:

&&:代表首先执行命令a在执行命令b,但是前提条件是命令a执行正确才会执行命令b,在a执行失败的情况下不会执行b命令。所以又被称为短路运算符。

&:代表首先执行命令a在执行命令b,如果a执行失败,还是会继续执行命令b。也就是说命令b的执行不会受到命令a的干扰,在执行效率上来说“&&”更加高效。

||:代表首先执行a命令在执行b命令,如果a命令执行成功,就不会执行b命令,相反,如果a命令执行不成功,就会执行b命令。

| :代表首先执行a命令,在执行b命令,不管a命令成功与否,都会去执行b命令。

Low

提示输入ip

在这里插入图片描述

输入本机ip地址,127.0.0.1,点击提交

乱码解决:在......\WWW\DVWA\dvwa\includes目录下有个dvwaPage.ini.php文件,双击打开,搜索utf-8,将UTF-8改为GBK或者GB2312`GBK即可

在这里插入图片描述

在这里插入图片描述

源码分析:对输入的ip地址进行ping操作,源码只让我们进行ping操作而没有其他动作,但它给了我们一个利用系统命令的平台。所以在地址之后接自己想要执行的命令。

在这里插入图片描述

shell_exec()函数能执行系统命令

127.0.0.1 | dir 查看目录

在这里插入图片描述

127.0.0.1 | systeminfo 得到系统硬件信息等

在这里插入图片描述

Medium

查看源码发现在Low等级源码的基础上添加了一个黑名单,把&&字符和;字符过滤掉了

在这里插入图片描述

可以继续使用|命令

127.0.0.1 | dir 查看目录

在这里插入图片描述

127.0.0.1 | whoami 获取当前用户

在这里插入图片描述

High

查看源码,过滤了更多字符。但仔细观察发现有一个过滤是’| ‘,注意这个过滤是加了空格的,说明这个过滤其实是没用的,只需要’|’后面直接加入参数,不保留空格,我们依然可以用这个命令连接符进行命令注入

在这里插入图片描述

127.0.0.1 |dir 拿到目录

在这里插入图片描述

2.跨站请求伪造(CSRF)

全称Cross-site request forgery,翻译过来就是跨站请求伪造,是指利用受害者尚未失效的身份认证信息(cookie、会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下以受害者的身份向(身份认证信息所对应的)服务器发送请求,从而完成非法操作(如转账、改密等)。CSRF与XSS最大的区别就在于,CSRF并没有盗取cookie而是直接利用。

什么是CSRF?

CSRF,跨站域请求伪造,通常攻击者会伪造一个场景(例如一条链接),来诱使用户点击,用户一旦点击,黑客的攻击目的也就达到了,他可以盗用你的身份,以你的名义发送恶意请求。CSRF攻击的关键就是利用受害者的cookie向服务器发送伪造请求。

和XSS有什么不同?

CSRF是以用户的权限去做事情,自己本身并没有获取到权限;XSS是直接盗取了用户的权限进行攻击。

Low

查看源码:服务器收到修改密码的请求后,会检查参数password_new与password_conf是否相同,如果相同,就会修改密码,而没有任何防御机制

在这里插入图片描述

输入密码和确认密码后,在url可以看到

那是否说明随意更改url栏里传入的参数,就能够在网站内执行更改密码的操作呢?

在这里插入图片描述

重新在同一个浏览器打开一个窗口,复制url,并将密码和确认密码改为666,回车
在这里插入图片描述

发现我们直接进入了CSRF窗口并显示密码更改成功

网站的本意是在网站内更改密码,而我通过控制url的传参就能使我能在网站之外执行更改密码的操作,那么当我知道一个网站有csrf漏洞后也可以通过构造url的方式让别人点击执行他意想之外的行为

新的web页面的url(也就是黑客自创的假链接)有点过于显眼,为了隐藏URL,可以使用生成短链接的方式来实现。站长之家(生成短链接):https://tool.chinaz.com/Tools/dwz.aspx

Medium

源码分析:和Low等级比较发现,在传入密码和确认密码参数前先进行了一个if语句的判断,判断里面的内容主要是验证这个访问请求是否是从dwva网站本身发起的,若不是就不执行后面的操作

stripos(str1, str2)函数检查str2在str1中出现的位置(不区分大小写)

在这里插入图片描述

源码是通过referrer这个字段的参数进行判断的,通常情况下在增加referrer验证时就是网站本身当前页面的ip地址

抓包查看信息

在这里插入图片描述

构造一个页面,里面放一个a标签,链接为更改密码的url,当受害者点击时就会触发更改密码的操作,我们只需要把这个html页面的位置放在和网站同一个目录下,即在自己的电脑上构造一个访问目标网站域名的html文件

设计a标签

url:http://localhost/dvwa/vulnerabilities/csrf/?password_new=hhh&password_conf=hhh&Change=Change#

在这里插入图片描述

config命令查看ip:10.21.192.224

把设计的html页面名字改为网站的ip地址,里面的a标签就是更改密码的操作,放置在csrf目录下

在这里插入图片描述

打开html页面,点击a标签,触发攻击

在这里插入图片描述

抓包查看referer

在这里插入图片描述

forward,更改成功

在这里插入图片描述

High

查看源码:可以看出high等级的主要区别是增加了一个token值的校验,每次登录都会校验token是否正确,若想要执行更改密码操作必须知道正常用户的token,有token正确,才会处理客户端的请求。构建上述恶意链接就不可取了因为token是随机的无法伪造。

所以在发起请求之前需要获取服务器返回的user_token,利用user_token绕过验证。这里使用burpsuit的CSRF Token Tracker插件可以直接绕过user_token验证。使用步骤如下:

1.安装CSRF Token Tracker插件

在这里插入图片描述

2.进入插件之后添加主机和名(主机就是DVWA服务器。名就是token的名字,这里是user_token),还有抓取到的token值也需要添加上去。

在这里插入图片描述

3.再重新抓包到重放模块,这时会发现不管怎么修改密码,都会返回200,CSRF Token Tracker插件里的token值也会自动更新(上图中的token值)。

在这里插入图片描述

3.Weak Session IDs(弱会话IDS)

Session简介:

用户登录后,在服务器就会创建一个会话(session),叫做会话控制,接着访问页面的时候就不用登录,只需要携带Session去访问即可。

sessionID作为特定用户访问站点所需要的唯一内容。如果能够计算或轻易猜到该sessionID,则攻击者将可以轻易获取访问权限,无需录直接进入特定用户界面,进而进行其他操作。

用户访问服务器的时候,在服务器端会创建一个新的会话(Session),会话中会保存用户的状态和相关信息,用于标识用户。服务器端维护所有在线用户的Session,此时的认证,只需要知道是哪个用户在浏览当前的页面即可。为了告诉服务器应该使用哪一个Session,浏览器需要把当前用户持有的SessionID告知服务器。用户拿到Session id就会加密后保存到 cookies 上,之后只要cookies随着http请求发送服务器,服务器就知道你是谁了。SessionID一旦在生命周期内被窃取,就等同于账户失窃。

Session利用的实质:

由于SessionID是用户登录之后才持有的唯一认证凭证,因此黑客不需要再攻击登陆过程(比如密码),就可以轻易获取访问权限,无需登录密码直接进入特定用户界面, 进而查找其他漏洞如XSS、文件上传等等。

Session劫持:

就是一种通过窃取用户SessionID,使用该SessionID登录进目标账户的攻击方法,此时攻击者实际上是使用了目标账户的有效Session。如果SessionID是保存在Cookie中的,则这种攻击可以称为Cookie劫持。SessionID还可以保存在URL中,作为一个请求的一个参数,但是这种方式的安全性难以经受考验。

注意:session id 过于简单就会容易被人伪造。根本都不需要知道用户的密码就能访问,用户服务器的内容了。

Low

查看源码:

在这里插入图片描述

相关函数:

setcookie() 函数:向客户端发送一个 HTTP cookie。

setcookie(name,value,expire,path,domain,secure,httponly)。
name----必需。规定cookie的名称。
value----必需。规定cookie的值。
expire----可选。规定cookie的有效期。
path----可选。规定cookie的服务器路径。
domain----可选。规定cookie的域名。
secure----可选。规定是否通过安全的HTTPS连接来传输cookie。
httponly----可选。规定是否Cookie仅可通过HTTP协议访问。

直接用bp抓包,可以清楚的看到dvwaSesion的cookie,每重放一次,dvwaSesion增加一:

在这里插入图片描述

构造payload

payload:在程序的世界里,payload(有效载荷)就是对于接收者有用的数据。

在计算机安全领域中,“payload”(载荷)是指一段恶意代码或攻击者注入的任意代码,旨在利用存在的漏洞、弱点或系统功能来执行特定的操作。可以将其类比为病毒或炸弹携带的有害物质。

攻击者在设计"payload" 时,通常会充分利用已知的漏洞或弱点。通过触发这些漏洞或弱点,攻击者可以执行各种操作,如获取管理员权限、窃取敏感数据、控制目标系统、传播恶意软件等。

payload:security=low; PHPSESSID=v9dofh192mr7een95ku3d6ned0

清除浏览器的cookie缓存,然后打开一个新网页,在HackBar里面输入url和构造的payload(cookie),其实只需要cookie就可以。

在这里插入图片描述

清除缓存后,火狐浏览器没有登录过DVWA,但通过这个session,却绕过了输入账号密码的过程,直接登录进来。

Medium

查看源码:

在这里插入图片描述

time() 函数:返回自当前时间的秒数。

使用了时间戳,但是攻击者依然可以伪造。

直接用bp抓包,查看Cookie

在这里插入图片描述

使用的时间转换网站 时间戳(Unix timestamp)转换工具 - 在线工具

payload:dvwaSession=1710738700;security=medium; PHPSESSID=r2863v603heb4684654q49uho7

清除浏览器的cookie缓存,打开一个新网页,在HackBar里面输入url和构造的payload(cookie)。

在这里插入图片描述

High

查看源码:

在这里插入图片描述

进行了MD5摘要只需将摘要值的原值找到即可知道它的cookie的产生规律,然后就可用伪造了

直接用bp抓包, 每Send一下,md5的值就会发生改变。

在这里插入图片描述

使用MD5的网站 md5在线解密破解,md5解密加密

在这里插入图片描述

也是每次加1。把数字2进行MD5加密得到:c81e728d9d4c2f636f067f89cc14862c

在这里插入图片描述

构造payload:

payload:dvwaSession=c81e728d9d4c2f636f067f89cc14862c;security=high; PHPSESSID=kqbqm3qqlnbdrreetk9anrmre7

清除浏览器的cookie缓存,打开一个新网页,在HackBar里面输入url和构造的payload(cookie)。

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我不是陆神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值