前言
在测试一个学校网站的时候发现一个未授权访问内网系统,但是这个未授权并不是接口啥的,而是对前端 js 的审计和调试发现的漏洞,这里给大家分享一下这次的漏洞的过程
文章中涉及的敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打码处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任,一旦造成后果请自行承担。
进入内网的过程
可以看到是一个图书馆的网站,但是只有登录了内网才能访问图书馆的资源,这个能够理解嘛,毕竟大学的图书馆资源都是内部资源
然后随便尝试登录一下
会检验我的 ip,ctf 学习的如何伪造 ip,可以用起来了
发现还是不可以,emmm,可能伪造得不对,fuzz 一波
全包 400 了,我去,检查一手
原来是给我们 url 编码了,所以这里给各位说一下,当你遇到这个问题的时候,你就需要去设置一个小东西
取消
没有区别,emmm 还是不行
难道真的要不行了吗
我尝试直接去 js 代码中看看,是不是在 js 中的限制,或者查找一下获取我的 ip 的逻辑,尝试有没有别的伪造方法
然后我们定位到 js 的代码
elseif (state == '2'){ $("#login_error").html('您的IP不在授权区域');returnfalse; }
发现是根据 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) {varexdate=newDate(); 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());
encodeURIComponent
对 value
进行 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 我都害怕给它扫没有了
最后
再次声明
文章中涉及的敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打码处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任,一旦造成后果请自行承担
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论