DVWA WP再现

这两天又重新看了下dvwa,重新写了一份wp,

暴力破解

Low

方法一

为了方便复现,随手弄了两个字典,其中包含正确账户密码。

v2-d3d7ac714e8b071d5e4724eb852d3663_b.jpg

设置代理—使用 burpsuite抓包

v2-2f04bf511bbafff78b62d139e76b66ab_b.jpg

过程不多说了。直接看结果, ----成功

v2-da1ec7d30f4e0a299e4bf8a941d605f7_b.jpg

方法二

可以看到查询语句并未做防护,所以存在sql注入,但由于pass位置做了md5加密,所以sql注入点应该是在 username处

v2-da1ec7d30f4e0a299e4bf8a941d605f7_b.jpg

输入 admin' or '1'='1 登录成功

v2-adbcdeec0ba0e318ead7934b2739faea_b.jpg

Medium

先看源码mysqli_real_escape_string()将 输入的username,password中的特殊字符进行转义。

Password md5加密 登陆失败 sleep(2) 秒。

给爆破,及注入带来了困难,但对于爆破来讲,就是增加了爆破的时间。爆破步骤如上。

v2-3984b1b247acdcdef4e8d8850eff92ad_b.jpg

High

通过审计源码,我们可以知道,新增了一个参数,user_token。每次都需要重新请求token,其他的还有mysql_real_escape_string进行转义,$pass=md5($pass),sleep(rand(0,3))

v2-07761af2a12454b717ebc35b5c4021ab_b.jpg

首先抓包,发送到intruder 设置变量

Token设置为递归

并在options—Grep-Extract –Add设置token

v2-7e0e012be96135d48ee9da0ecb8e0a1b_b.jpg

v2-7e0e012be96135d48ee9da0ecb8e0a1b_b.jpg

最后在payloadOptions中设置第一次的token,然后开始攻击。

v2-678075ede7a971df8d7c426dc30754b4_b.jpg

线程设置为1 ,否则报错。

选择长度和其他不一样的那个,查看,成功爆破。

v2-678075ede7a971df8d7c426dc30754b4_b.jpg


文件包含漏洞

LOW

http://192.168.29.1/dvwa/vulnerabilities/fi/?page=../../../../../QQ/QQWhatsnew.txt 直接包含

v2-f17390ee041ed6ab6b7f8ed0ed877bb2_b.jpg

Medium

查看源码可以看到过滤了 http:// https:// ../和..\

v2-212de87031c1ae76d022ecc3a4a70a05_b.jpg

可以直接使用绝对路径来读取文件,

v2-212de87031c1ae76d022ecc3a4a70a05_b.jpg

使用 base64直接读文件, http://192.168.29.1/DVWA/vulnerabilities/fi/?page=php://filter/convert.base64-encode/resource=D:\phpstudy_pro\Extensions\php\php7.3.4nts_p\php.ini

像这种过滤参数的,可以尝试进行双写,进行绕过。

v2-0fec1b111367924d488a7a0305b31eab_b.jpg

High

对包含的文件名进行了限制,必须为 file* 或者 include.php ,否则会提示Error:File not found。看到必须为file*那就直接用file://来尝试文件包含。

v2-9b23d02e249cbb20289e0f70fe147ba4_b.jpg

v2-9575c3317fce03b0d4fc9fca0367da08_b.jpg

图片马使用方法与此相同。只需要将info.php文件替换为图片马即可。因为文件包含的特性。所以可以解析。

XSS

Dom型

Low

—dom型

直接在URL中进行传参

v2-641e4ed108a84473b073392a72f9e16b_b.jpg

Medium

删除对“ <脚本”的任何引用以禁用任何JavaScript

使用img标签进行弹窗,同时要注意前面标签的闭合,

v2-32b51d0844ccd7b184a13a3a48b20cac_b.jpg

High

URL中#号之后的内容,不会被提交到服务器,可以直接与浏览器进行交互

v2-1d91bea1ba2709a1f4da54bcc579b08d_b.jpg

反射型XSS

Low

没做防护,直接script

v2-7fd6184749491ee6201763a79a08b1fb_b.jpg

Medium

过滤了script 但不区分大小写,写双层也能 绕过。

v2-348812c873d1109b7d132d61e2fb22ae_b.jpg

High

XSS的绕过方式太多。

v2-db3170ba9201da2809334eb2e0eb2e46_b.jpg

可以是用<a> 标签 <img> <form> <iframe> <svg>等各种标签进行绕过。(html事件)

另外还可以进行转码,

  • 如js,html实体编码,URL编码(2次编码),String.fromCharCode编码

CSRF

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

Low

直接构造链接,使受害者点击即可修改密码。可以通过短链来增加可信度,http://192.168.29.1/DVWA/vulnerabilities/csrf/?password_new=123456789&password_conf=123456789&Change=Change#

v2-cd545a03232b8d33c0e7a76c690dd405_b.jpg

我们还可以构造钓鱼页面,如下,可以上传到网站上,使他人点击。

v2-540ebf94ba9067998a0658c177d0afa3_b.jpg

v2-60f3cae8e2c5ccdb7eaaf484c138c920_b.jpg

在这里我搭建了两个dvwa,调到同一级别,在第二个dvwa打开页面。密码成功修改!

v2-66084292b1951ff66cb07423a2b456ee_b.jpg

v2-9463bfab8236d1164339727d3af1d1c3_b.jpg

v2-38a29fb86826517bcfbf74b5641e2501_b.jpg

Medium

查看源码,发现使用 stripos() 函数添加了HTTP_REFERER 验证。不区分大小写。

v2-c3e5684a1021a3b634f3babcaeaa3c1b_b.jpg

我们可以直接更改

前面抓包生成csrf_poc一样,我们进行重放。并添加referer,使其中包含host,

v2-465b61b983d74eb4ae81bafd123df893_b.jpg

可以看到,密码成功修改为123456789

v2-d04c38af0368b0fc6c171a3fc7038464_b.png

High

直接添加了user_token一共需要传入4个参数,其中token在每次访问页面时都会随机更改,我们可以伪造一个页面,当用户点击时,就会获取到token,然后去请求修改密码。但是因为这已经属于跨域,现在的浏览器不允许跨域。所以无法实现。 我们可以使用XSS存储型,来获得token,然后将获得的token传到 url中,自动请求更改密码。

浏览器同源策略和跨域的实现方法

v2-c0b1d4c39a2890715a92d9e50e0aa0ff_b.jpg

具体参考 https://www.freebuf.com/articles/web/203301.html 内容信息量有点大,后面在看


SQL注入

Low

查看源码,没有做任何防护,字符型注入。

v2-9fdfc1433630b6ec8f9501bc88029a94_b.jpg

可以输入单引号 查看是否报错。

使用order by 猜解SQL查询语句中的字段数。 使用union 查询数据库名和版本号。

v2-4bfb4d838f9ca1368b2256773094646b_b.jpg

v2-6d5ec168e26b33042d0124e96b7eb595_b.jpg

v2-6d5ec168e26b33042d0124e96b7eb595_b.jpg

v2-3c40829a650f96ab57be6975d78f8601_b.jpg

Mysql中有一个information_schema的默认数据库,里面存有需要的信息。Union查询数据库中的表。

1’ union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #

v2-766cd54d0d161a9601c0c50f297ef7b8_b.jpg

查询列名

1’ union select 1,group_concat(column_name) from information_schema.columns where table_name=’users’#

v2-0ec143a34839cccabc26e4b77cc0ce25_b.jpg

查询数据

1’ union select user,password from users#

v2-599de5bef2b0d415a3d9c040afc3c23f_b.jpg

方法二:我们可以直接用sqlmap进行注入。因为需要登陆。所以需要cookie。

 sqlmap.py -u "http://192.168.29.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=nrng8g1jkurlshkvh3n3aevejj" –dbs

v2-d38190f9c4e8dab749ef019bc075cbc5_b.jpg

跟上数据库名

sqlmap.py -u "http://192.168.29.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=nrng8g1jkurlshkvh3n3aevejj" –D dvwa –talbes

v2-2b67f65261f0cc9f15fd39ab5c118229_b.jpg

查看列名

sqlmap.py -u "http://192.168.29.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=nrng8g1jkurlshkvh3n3aevejj" -D dvwa –T –columns

v2-513419e121695ddf63420627acbe4fbc_b.jpg

读取数据

sqlmap.py -u "http://192.168.29.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=nrng8g1jkurlshkvh3n3aevejj" -D dvwa -T users "user,password" –dump

v2-36763113b16707187bce207c9b8a7d42_b.jpg

Medium

通过查看源码,可以之间看到,传进的参数,不需要闭合,同时对传入数据库的特定数据进行了转义,例如 ’ , “ ,

v2-dd7655fa05762a3a105883625f59aaa5_b.jpg

我们可以通过sqlmap跑,也可以直接注入。或者通过burpsuite。

v2-207f83e1386c166dec52ba223763a04b_b.jpg

可以看到,当我在读取列名的时候, table_name=’users’# 因为单引号被转义了,所以这里会出现报错,对此,我们可以将’ 进行编码。

v2-1cdf783ac3e332a69dc2f620f74f9640_b.png

v2-804812c33428690e260a0eae31171a50_b.jpg

后面直接查需要的信息

v2-1e49ee01df76e738ed0136c93bee82a4_b.jpg

Sqlmap法

可以使用burpsuite中的一个CO2插件,一键发送到sqlmap,进行注入

v2-8a3623db7a6bb0a812a8cf868d25eb8e_b.jpg

v2-e838bd401b66814d736bb8911ef69c1d_b.jpg

v2-e5397eea7e54f3090ff46a64c448af87_b.jpg

High

看下源代码,多了个limit 1,只是少了输出,我们可以用注释符#将他注释掉。其他的和low没有区别。

v2-909a869ddbb215617e882e3af53e6946_b.jpg

v2-f4266b0a0547e079c46663fe75d4d9b5_b.jpg

v2-dc68c4c23382892db07e968f2ab7bbb4_b.jpg

经过检测,有SQL注入。直接注入,因为和low一样,所以我就直接放结果了

v2-0fefa1212fb4ea55cc5d7b3e1e93e02b_b.jpg

因为注入点和输出不在同一页面,这主要还是防止sqlmap自动注入。


Weak Session IDs (弱会话IDs)

当用户登录后,在服务器就会创建一个会话(session),叫做会话控制,接着访问页面的时候就不用登录,只需要携带Sesion去访问。如果SessionID是保存在Cookie中的,则这种攻击可以称为Cookie劫持

Low

v2-6fc21a5fa075425562572a698f4911cf_b.jpg

直接抓包,看下,可以看到生成了session,并且在cookie中,

v2-54e2c21ae5fc39c0e82ba5908abf8387_b.jpg

我们直接复制cookie,然后另外清除cookie,进行发包。并post传参这个cookie,看下效果。可以看到,直接登录成功。不需要账号密码,

v2-5e47c8466955c7ac29467f8b73576260_b.jpg

v2-ad8afa41c524d395bc0aa819acb68bd3_b.jpg

Medium

使用时间戳,时间戳是指 1970-01-01 08:00:00起到现在 当前时间的秒数。

v2-3955de5ee94ba3618ca5456f0d42dbf4_b.jpg

操作步骤,首先获得 别人的cookie,我们去生成未来时间的时间戳,30s至1分钟即可,到时间,我们进行post传参。

v2-3311fc9b08d2679b10d4287694ab6e1c_b.jpg

v2-bcd1c6edb698e6ffb3f50303a62b8d02_b.jpg

High

虽然md5加密,但还是从0 开始,时间戳解决方法同上,先抓包

v2-29fcbd823d117a2d98c4f5c4dd574219_b.jpg

发现cookie

dvwaSession=aab3238922bcc25a6f606eb525ffdc56; expires=Sun, 25-Oct-2020 08:59:08 GMT; Max-Age=3600; path=/vulnerabilities/weak_id/; domain=192.168.29.1


CSP Bypass

CSP就是浏览器的安全策略,如果 标签,或者是服务器中返回 HTTP 头中有 Content-Security-Policy 标签 ,浏览器会根据标签里面的内容,判断哪些资源可以加载或执行。

Low

如果不看源码的话。看检查器(F12),也可以知道一些被信任的网站。

v2-3e6b4407ee13e84a2bfe950473c01426_b.png

意思就是信任这些网站及以上脚本, 。如果我们在这些网站上植入攻击脚本,那么将脚本地址放入dvwa,dvwa将会执行它。比如。https://pastebin.com/raw/VqHmJKjr

v2-27f4016aef3af6b90428a66662dfbee4_b.jpg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

SwBack

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

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

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

打赏作者

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

抵扣说明:

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

余额充值