当前位置: 首页 > news >正文

记一次前端逻辑绕过登录到内网挖掘

前言

在测试一个学校网站的时候发现一个未授权访问内网系统,但是这个未授权并不是接口啥的,而是对前端 js 的审计和调试发现的漏洞,这里给大家分享一下这次的漏洞的过程

文章中涉及的敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打码处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任,一旦造成后果请自行承担。

进入内网的过程

可以看到是一个图书馆的网站,但是只有登录了内网才能访问图书馆的资源,这个能够理解嘛,毕竟大学的图书馆资源都是内部资源

然后随便尝试登录一下

会检验我的 ip,ctf 学习的如何伪造 ip,可以用起来了

发现还是不可以,emmm,可能伪造得不对,fuzz 一波

全包 400 了,我去,检查一手

原来是给我们 url 编码了,所以这里给各位说一下,当你遇到这个问题的时候,你就需要去设置一个小东西

取消

没有区别,emmm 还是不行

难道真的要不行了吗

我尝试直接去 js 代码中看看,是不是在 js 中的限制,或者查找一下获取我的 ip 的逻辑,尝试有没有别的伪造方法

然后我们定位到 js 的代码

else if (state == '2'){ $("#login_error").html('您的IP不在授权区域'); return false; }

发现是根据 state 来确定的

var state = $.trim(msg);

而 state 又来自于 msg

然后我们发现了关键代码

function check_login($url) { varname = $("#name").val(); varpasswd= $("#passwd").val(); varremme= $("#checkboxindex").val(); if(remme == 1){ setCookie('dydlname', name ); setCookie('dydlpasswd', passwd ); } else{ setCookie('dydlname'); setCookie('dydlpasswd'); } $.ajax({ type : "POST", async : true, url : "../ucheck.php", data : "name=" + name +"&passwd=" + passwd, success : function(msg) { varstate= $.trim(msg); //alert (state); //alert (msg); //state[0] = 6; if (state == '1') { window.location.href=$url; //alert ($url); returntrue; } elseif (state == '2'){ $("#login_error").html('您的IP不在授权区域'); returnfalse; } elseif (state == '3'){ $("#login_error").html('用户名或密码错误'); returnfalse; } elseif (state == '6'){ showNotice(); returnfalse; } } }); }

简单看一看

var name = $("#name").val(); var passwd = $("#passwd").val(); var remme = $("#checkboxindex").val();
  • name获取用户输入的用户名,使用的是 jQuery 来从 id 为#name的输入框中提取值。

  • passwd获取用户输入的密码,提取自 id 为#passwd的输入框。

  • remme获取用户是否选择了“记住密码”的选项,提取自 id 为#checkboxindex的复选框

记住密码的逻辑是

if(remme == 1){ setCookie('dydlname', name ); setCookie('dydlpasswd', passwd ); } else { setCookie('dydlname'); setCookie('dydlpasswd'); }

如果用户选择了“记住密码”(remme == 1),代码会调用setCookie函数设置两个 cookie,分别存储用户名 (dydlname) 和密码 (dydlpasswd)。

如果用户未选择记住密码,代码会清除这些 cookie。

嘿嘿嘿,那如果能够获得别人的 cookie,那么我们就可以直接获取账号和密码了

我们看看 cookie 的逻辑

/* 添加/删除 cookie */ function setCookie(name, value, exdays, path) { var exdate = new Date(); exdays = exdays || 365; exdate.setDate(exdate.getDate() + exdays); if(value === null) { value = ''; exdays = -3; } document.cookie = name + '=' + encodeURIComponent(value) + ((typeof exdays === 'undefined') ? '' : ';expires=' + exdate.toGMTString()) ; }

先就是设置一下 cookie 的过期时间,然后就是设置 cookie 的值

document.cookie = name + '=' + encodeURIComponent(value) + ((typeof exdays === 'undefined') ? '' : ';expires=' + exdate.toGMTString());

encodeURIComponentvalue进行 URL 编码,防止特殊字符导致 Cookie 无效或出现错误。

我们看处理服务器响应的部分

状态码 1: 登录成功

if (state == '1') { window.location.href = $url; return true; }
  • • 如果状态码是1,则认为登录成功,跳转到传入的$url页面。

状态码 2: IP 不在授权区域

else if (state == '2'){ $("#login_error").html('您的IP不在授权区域'); return false; }
  • • 如果状态码是2,提示“您的 IP 不在授权区域”。

状态码 3: 用户名或密码错误

else if (state == '3'){ $("#login_error").html('用户名或密码错误'); return false; }
  • • 如果状态码是3,提示“用户名或密码错误”。

状态码 6: 显示通知信息

else if (state == '6'){ showNotice(); return false; }
  • • 如果状态码是6,调用showNotice()函数,可能会弹出一些通知或消息提醒。

首先看一下 6

然后我们检查回显

好的没有有用的信息,然后我们就回到改成 1

调试 js

成功进入了分支,然后会跳转 url

到 index.php

但是发现页面任然没有什么变化,????
尝试直接访问

直接 302 跳转了

但是必须进内网才可以啊

我又在这里磨了很久,发现早都成功了

其实虽然 302 了,但是资源还是可以访问到的

然后全是这个学校的内部的文献

sql 注入的发现

但是可惜的是只能在 bp 中操作,所以很不方便,我看源码,然后找到一些文件,尝试一下爆破目录,看看有没有价值的目录,比如 admin,因为内网的话弱口令很多的

当时爆了一会,这个网站直接就崩溃了,不敢爆了,全是别人学校的内步藏书

当时 502 差点没有把我吓死我去,然后就是

随便访问一下

不能爆破目录,只能去尝试 sql 注入了

然后成功了 wc

有 sql 注入,然后下面就开始 sql 注入吧

可以看到注释后成功了

sql 注入无限尝试

首先尝试万能密码

md,发不出去包

就很离谱

然后尝试一下基本的语句,看看哪里出了问题

连基本的 or 1=1 都不可以,发不出去包,很奇怪

or 被过滤了或者=被过滤了??

尝试一下

or

等于符号

都没有被过滤啊??,但是组合在一起就不可以了,奇怪啊

尝试 order by 看看

10000 都没有反应

尝试盲注

1'and%20length((select%20database()))>1%23

好像是可以的??

改成小于看看结果

1'and%20length((select%20database()))<1%23

但是没有任何区别???

奇怪了我去

尝试时间盲注

1'and%20sleep(5)%23

发不过去包了

我把 sleep 的数字给去掉就可以了

应该是过滤了 sleep(数字)这种类型??

还专门看了一下语法的错误

确实是没有问题的,本地都是可以的

然后灵机一动,我输入小数

本地是可以的,在环境中尝试一手

至此 sql 注入验证成功

sql 验证就够了,不敢乱打,sqlmap 我都害怕给它扫没有了

最后

再次声明

文章中涉及的敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打码处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任,一旦造成后果请自行承担

http://www.jsqmd.com/news/856485/

相关文章:

  • QT中控件qss样式修改
  • LDO和DC-DC怎么选,效率与噪声如何取舍
  • 讲讲百存建设科研投入大吗、售后如何、创新能力强不强 - 工业品牌热点
  • 程序员单人创业日记·Day8|承接第一笔定制订单!24分钟搞定视频格式转换,终于明白技术变现有多简单
  • 东莞各区市房屋反复漏水真实原因解析:多数维修问题出在工艺匹配度 - 鲁顺
  • 硬件知识 allegro16.6 3D 模型导入与其问题笔记
  • AI Agent将如何重构制造业的安全生产隐患识别模式?深度理解与实在Agent闭环实战
  • 0欧电阻的五大实战功能与混合电路接地设计全解析
  • 6 款免费编程学习 APP 合集 零基础自学必备
  • 聊聊性价比高的GEO推广公司,选哪家能带来更好效果? - 工业品牌热点
  • RoboMaster机甲大师操作手客户端安装保姆级教程(含驱动安装与时间修改避坑指南)
  • 上海梭子蟹批发哪家正规?2026运营商资质实测指南
  • 【Rust + Tauri 2 + TypeScript + Tailwind CSS 4 桌面应用 UI 组件选型深度对比(2026版)】
  • [qemu+kvm]: trap 寄存器脱敏优化方法
  • 工业核心部件选型技术评估:从参数匹配到工程服务的深度分析
  • 2024 新版 VSCode 安装使用全教程 小白轻松上手
  • B站SEO优化底层逻辑:以用户需求为核心,解锁低成本流量密码
  • Python程序设计第二章
  • STM32 FSMC配置与8080并口LCD驱动实战详解
  • 2026深度前瞻:制造业生产合规管控,未来有哪些智能化发展方向?
  • 康养专业失智老年人照护实训室布局设计
  • 别再被IEEEtran模板坑了!手把手教你搞定公式引用超链接和Bib报错(TeX Live 2024实测)
  • UE5 VR开发避坑实录:从Pico串流到圆盘位移,我踩过的那些‘雷’
  • 手把手教你用Docker和Vulhub复现Apache Flink 1.9.1未授权上传漏洞(附MSF实战)
  • Spring Boot项目启动报‘Disconnected from the target VM’?检查下你的pom.xml是不是少了这个关键依赖
  • okhttp Stream Load 含认证请求重定向
  • 别再硬套RBAC了!用Filebrowser的‘文件夹规则’搞定多级文件权限(附实战配置)
  • RT-Thread Studio下RA2L1 GPIO开发:从环境搭建到按键中断实战
  • 智能家居图片素材 助力智慧生活内容高效创作
  • Perplexity新闻搜索准确率骤降41.6%?——来自CNCF认证环境工程师的7层环境审计清单