url参数接收的一些安全应用场景
越权漏洞,从原来的修改id越权到后面的自己加参数,减参数越权,到现在的加特殊字符.攻击手段在进步:
以php和java为例,聊聊参数接收的最大接受能力,可以插入哪些脏数据?
demo1.php:
<?php
$a =$_GET['a'];
if($a==1){
echo 1;
}else{
echo "false";
}
?>
直接接收1参数,输出1,没啥问题:
测试环节1:在参数value前面加点东西跑下:
在参数value的前面加入一些url编码数据,发现
%09
%0a
%0b
%0c
%0d
%20
%2b
%30
在数据前缀,加入这些url编码,不影响我们输出数据:
测试环节2:在参数value后面加入一些url编码数据:
发现可控我们选择的数据有很多,长度203的就是符合条件的,都是返回1的:
当我自定义输入1aaa:
仍然输出1,因为php中使用==匹配的是数字的时候,是自动帮你int,类似于intval操作.
修复这个问题的办法有很多,其中一种修复方案是:
修改代码:
<?php
$a =$_GET['a'];
if($a===1){
echo 1;
}else{
echo "false";
}
?>
再次尝试在参数value前面/后面加点数据:
直接false.
java下的处理:
以spring boot为例子,其他的均未测试:
测试demo:
@ResponseBody
@GetMapping("/PathOne")
public void PathOne(@RequestParam("url") int url,HttpServletResponse response) throws IOException {
if(url==1){
response.getWriter().write("1");
}else{
response.getWriter().write("false,fasle");
}
}
和上面的测试一样
测试环节1:对url参数value前面数据测试:
发现
10 %09 200 false false 93
11 %0a 200 false false 93
12 %0b 200 false false 93
13 %0c 200 false false 93
14 %0d 200 false false 93
29 %1c 200 false false 93
30 %1d 200 false false 93
31 %1e 200 false false 93
32 %1f 200 false false 93
33 %20 200 false false 93
36 %23 200 false false 93
44 %2b 200 false false 93
加入这几种url编码数据不会影响我们的输出:
测试环节2:在url参数value后面加入url编码数据进测试:
没有php那么多:
他的底层和php的处理不一样.
他可支持的url编码数据是:
10 %09 200 false false 93
11 %0a 200 false false 93
12 %0b 200 false false 93
13 %0c 200 false false 93
14 %0d 200 false false 93
29 %1c 200 false false 93
30 %1d 200 false false 93
31 %1e 200 false false 93
32 %1f 200 false false 93
33 %20 200 false false 93
他的修复方案也有很多种,其中一种修复方案:
修改代码:
@ResponseBody
@GetMapping("/PathOne")
public void PathOne(@RequestParam("url") String url,HttpServletResponse response) throws IOException {
if(url.equals("1")){
response.getWriter().write("1");
}else{
response.getWriter().write("false,fasle");
}
}
再次访问:
再次添加url编码数据已经不能修改了.
刚和phpoop聊完这个问题后,下午无聊刷推特就看到了相关实战案例,估计白帽子是黑盒的:
实战案例应用场景,当提取参数value的时候,和业务交接的时候,可能会存在安全问题:
example:
越权失败,新增一些url编码:
更多的应用场景:waf bypass....
实战案例应用场景参考:https://16521092.medium.com/some-ways-to-find-more-idor-da16c93954e5
url参数接收的一些安全应用场景的更多相关文章
- 路由传值及获取参数,路由跳转,路由检测,this.$route.query和this.$route.params接收参数,HttpGet请求拼接url参数
配置动态路由参数id: routes: [ // 动态路径参数 以冒号开头 { path: '/user/:id', component: User } ] html路由跳转: <router- ...
- SpringMVC请求参数接收总结
前提 在日常使用SpringMVC进行开发的时候,有可能遇到前端各种类型的请求参数,这里做一次相对全面的总结.SpringMVC中处理控制器参数的接口是HandlerMethodArgumentRes ...
- SpringMVC请求参数接收总结(一)
前提 在日常使用SpringMVC进行开发的时候,有可能遇到前端各种类型的请求参数,这里做一次相对全面的总结.SpringMVC中处理控制器参数的接口是HandlerMethodArgumentRes ...
- 2.5万字长文简单总结SpringMVC请求参数接收
这是公众号<Throwable文摘>发布的第22篇原创文章,暂时收录于专辑<架构与实战>.暂定下一篇发布的长文是<图文分析JUC同步器框架>,下一篇发布的短文是&l ...
- javascript:设置URL参数的方法,适合多条件查询
适用场景:多条件查询情况,如下图所示: 通过设置URL参数,再结合数据源控件设置的RUL参数,就能进行简单的多条件查询了. javascript函数: <mce:script type=&quo ...
- 用js 获取url 参数 页面跳转 ? 后的参数
记得之前在原来的公司写过这个东西,但是还是忘记怎么接住参数了,只知道怎么把id传过去! 问了身边的大佬 他首先推荐了我一个链接是别人写好的方法 附上链接地址:http://blog.csdn.net/ ...
- 【Nginx】下载,请求限速,根据URL参数限速
这个场景是限制单个连接的下载速度,还有限制单个IP的连接数,或者单位时间内的请求数,实验环境 nginx1.9.x. 小例子为主,具体的细节请多看文档. 限制下载速度 location /downlo ...
- 加号变空格问题 url参数 post get 请求发送
问题:加号后台接收变空格问题 结论: 1.任何get拼接的请求 参数key value 需要编码后在拼接 2.get请求避免做数据提交,用post提交.jq,axios的post提交默认编码了不会有问 ...
- php 直接获取url参数赋值成变量。省去繁琐的获取参数,再一个个赋值
php 直接获取url参数赋值成变量.省去繁琐的获取参数,再一个个赋值 parse_url() 该函数可以解析 URL,返回其组成部分.它的用法如下: array parse_url(string $ ...
随机推荐
- linux跨文件复制粘贴
跨文件是这样的: 复制a.txt的第20行至第30行到b.txt中vi a.txt:2010yy:e b.txtp
- MSSQL·查看DB中所有表及列的相关信息
阅文时长 | 0.6分钟 字数统计 | 1013.6字符 主要内容 | 1.引言&背景 2.声明与参考资料 『MSSQL·查看DB中所有表及列的相关信息』 编写人 | SCscHero 编写时 ...
- 登陆框select绕过
0x00 原理 思路来自美团杯2021,本来说出题人已经把select通过正则过滤了,就不该总是往用select进行查询那方面想-> select id from users where u ...
- JAVA基础——包机制
包机制 包的语法格式package pkg1[.pkg2[.pkg3...]] 一般利用 公司域名倒置 作为包名; 例如www.baidu.com,则建立报的名字com.baidu.www 一般不要让 ...
- 使用基于centos7 dbus问题总结
Authorization not available. Check if polkit Authorization not available. Check if polkit service is ...
- JMeter四种参数化方式
JMeter参数化是指把固定的数据动态化,这样更贴合实际的模拟用户请求,比如模拟多个不同账号.JMeter一共有四种参数化方式,分别是: CSV Data Set Config Function He ...
- [笔记] 《c++ primer》显示器程序 Chapter7
补充Sales_data没有体现出的其他类特性 Screen.h 1 #include <string> 2 #include <iostream> 3 4 class Scr ...
- 使用autotools工具用configure、make、make install编译安装linux工程的详细步骤
使用autotools工具用configure.make.make install编译安装linux工程的详细步骤 转载tmxkwzy 最后发布于2016-11-24 10:20:15 阅读数 324 ...
- Linux如何设置用户登录超时(闲置时间)vi /etc/profile ... export TMOUT=900
Linux如何设置用户登录超时(闲置时间) 转载莫负寒夏ai 最后发布于2019-08-08 15:04:22 阅读数 1897 收藏 展开 1. 针对所有用户 # vi /etc/profile ...
- Kubernetes 部署微服务电商平台(16)
一.概念 微服务就是很小的服务,小到一个服务只对应一个单一的功能,只做一件事.这个服务可以单独部署运行,服务之间可以通过RPC来相互交互,每个微服务都是由独立的小团队开发,测试,部署,上线,负责它的整 ...