什么是“复参攻击”?应用系统被提示有“复参攻击”如何

olDBear0769 2347

{{ttag.title}}
什么是“复参攻击”?应用系统被提示有“复参攻击”如何对应用系统自身进行整改?

解决该疑问,预计可以帮助到 17600 人!

回帖即可获得
2S豆
,被楼主采纳即奖励20S豆+10分钟内回帖奖励10S豆 [已过期] ,了解更多S豆奖励信息

完善手机号和公司名称,让服务更省心更便捷!立即完善

❤★陈智强★❤ 发表于 2016-7-6 15:39
  
0x02 被遗忘的复参攻击.

大家应该还记得09年的HTTP Parameter Pollution攻击,查看[3]文档,可以发现ASP/IIS和ASP.NET/IIS的场景下存在一个复参特性,本文将利用这种的特性的攻击简称为复参攻击,用0X01里的例子简单的测试一下:

用GET请求传入两个t参数

GET http://192.168.239.129/1.asp?t=1&t=2

将返回

Request:1, 2

asp和asp.net的Request对象接收了两个参数,并且以逗号分隔,所以便衍生出了[3]文档中的复参SQL注入方法:

Vulnerable code:

[size=1em][size=1em]
1
SQL="select key from table where id="+Request.QueryString("id")

[size=1em]
2

[size=1em]
3
This request is successfully performed using the HPP technique:

[size=1em]
4

[size=1em]
5
/?id=1/**/union/*&id=*/select/*&id=*/pwd/*&id=*/from/*&id=*/users

[size=1em]
6

[size=1em]
7
The SQL request becomes:

[size=1em]
8

[size=1em]
9
select key from table where id=1/**/union/*,*/select/*,*/pwd/*,*/from/*,*/usersLavakumarKuppan



我们可以看到通过巧妙的运用注释符结合复参特性可以分割GET参数中的SQL注入语句。

0x03 高级复参攻击.

ASP.NET的Request对象有一个Params属性,ASP.NET程序员在一些程序中会使用Request.Params["xxx"]传入数据,参考[4]微软MSDN文档我们可以知道Params属性的特性,该属性接收GET,POST和Cookie的传值集合,这里我们可以修改0x01里的例子测试一下:

使用asp.net的Request.Params方法接收t参数传值

[size=1em][size=1em]
1
<%@ Page Language="C#" %>

[size=1em]
2
<%

[size=1em]
3
string test = Request.Params["t"];

[size=1em]
4
Response.Write("Request:"+test);

[size=1em]
5
%>



发送一个POST包,GET,POST,COOKIE三个方法中都带有不同的t参数内容

[size=1em][size=1em]
1

[size=1em]
2
Host: 192.168.239.129

[size=1em]
3
Cookie: t=2

[size=1em]
4

[size=1em]
5
t=3



结果返回

Request:1,3,2

最后得出结论,Request.Params方法接收的数据是按照GPC顺序整合,看到这里的同学再联想到0x02的复参攻

❤★陈智强★❤ 发表于 2016-7-6 15:39
  
0x02 被遗忘的复参攻击.

大家应该还记得09年的HTTP Parameter Pollution攻击,查看[3]文档,可以发现ASP/IIS和ASP.NET/IIS的场景下存在一个复参特性,本文将利用这种的特性的攻击简称为复参攻击,用0X01里的例子简单的测试一下:

用GET请求传入两个t参数

GET http://192.168.239.129/1.asp?t=1&t=2

将返回

Request:1, 2

asp和asp.net的Request对象接收了两个参数,并且以逗号分隔,所以便衍生出了[3]文档中的复参SQL注入方法:

Vulnerable code:

[size=1em][size=1em]
1
SQL="select key from table where id="+Request.QueryString("id")

[size=1em]
2

[size=1em]
3
This request is successfully performed using the HPP technique:

[size=1em]
4

[size=1em]
5
/?id=1/**/union/*&id=*/select/*&id=*/pwd/*&id=*/from/*&id=*/users

[size=1em]
6

[size=1em]
7
The SQL request becomes:

[size=1em]
8

[size=1em]
9
select key from table where id=1/**/union/*,*/select/*,*/pwd/*,*/from/*,*/usersLavakumarKuppan



我们可以看到通过巧妙的运用注释符结合复参特性可以分割GET参数中的SQL注入语句。

0x03 高级复参攻击.

ASP.NET的Request对象有一个Params属性,ASP.NET程序员在一些程序中会使用Request.Params["xxx"]传入数据,参考[4]微软MSDN文档我们可以知道Params属性的特性,该属性接收GET,POST和Cookie的传值集合,这里我们可以修改0x01里的例子测试一下:

使用asp.net的Request.Params方法接收t参数传值

[size=1em][size=1em]
1
<%@ Page Language="C#" %>

[size=1em]
2
<%

[size=1em]
3
string test = Request.Params["t"];

[size=1em]
4
Response.Write("Request:"+test);

[size=1em]
5
%>



发送一个POST包,GET,POST,COOKIE三个方法中都带有不同的t参数内容

[size=1em][size=1em]
1

[size=1em]
2
Host: 192.168.239.129

[size=1em]
3
Cookie: t=2

[size=1em]
4

[size=1em]
5
t=3



结果返回

Request:1,3,2

最后得出结论,Request.Params方法接收的数据是按照GPC顺序整合,看到这里的同学再联想到0x02的复参攻

❤★陈智强★❤ 发表于 2016-7-6 15:41
  
0x020x02 被遗忘的复参攻击.

大家应该还记得09年的HTTP Parameter Pollution攻击,查看[3]文档,可以发现ASP/IIS和ASP.NET/IIS的场景下存在一个复参特性,本文将利用这种的特性的攻击简称为复参攻击,用0X01里的例子简单的测试一下:

用GET请求传入两个t参数

GET http://192.168.239.129/1.asp?t=1&t=2

将返回

Request:1, 2

asp和asp.net的Request对象接收了两个参数,并且以逗号分隔,所以便衍生出了[3]文档中的复参SQL注入方法:

Vulnerable code:

[size=1em][size=1em]
1
SQL="select key from table where id="+Request.QueryString("id")

[size=1em]
2

[size=1em]
3
This request is successfully performed using the HPP technique:

[size=1em]
4

[size=1em]
5
/?id=1/**/union/*&id=*/select/*&id=*/pwd/*&id=*/from/*&id=*/users

[size=1em]
6

[size=1em]
7
The SQL request becomes:

[size=1em]
8

[size=1em]
9
select key from table where id=1/**/union/*,*/select/*,*/pwd/*,*/from/*,*/usersLavakumarKuppan



我们可以看到通过巧妙的运用注释符结合复参特性可以分割GET参数中的SQL注入语句。

0x03 高级复参攻击.

ASP.NET的Request对象有一个Params属性,ASP.NET程序员在一些程序中会使用Request.Params["xxx"]传入数据,参考[4]微软MSDN文档我们可以知道Params属性的特性,该属性接收GET,POST和Cookie的传值集合,这里我们可以修改0x01里的例子测试一下:

使用asp.net的Request.Params方法接收t参数传值

[size=1em][size=1em]
1
<%@ Page Language="C#" %>

[size=1em]
2
<%

[size=1em]
3
string test = Request.Params["t"];

[size=1em]
4
Response.Write("Request:"+test);

[size=1em]
5
%>



发送一个POST包,GET,POST,COOKIE三个方法中都带有不同的t参数内容

[size=1em][size=1em]
1

[size=1em]
2
Host: 192.168.239.129

[size=1em]
3
Cookie: t=2

[size=1em]
4

[size=1em]
5
t=3



结果返回

Request:1,3,2

最后得出结论,Request.Params方法接收的数据是按照GPC顺序整合,看到这里的同学再联想到0x02的

Sangfor闪电回_小丸子 发表于 2016-7-11 16:28
  
您好 问题已经记录,工程师稍后联系您远程协助
谢谢

等我来答:

换一批

发表新帖
热门标签
全部标签>
每日一问
技术盲盒
技术笔记
干货满满
技术咨询
新版本体验
GIF动图学习
产品连连看
功能体验
标准化排查
自助服务平台操作指引
2023技术争霸赛专题
运维工具
通用技术
秒懂零信任
技术晨报
信服课堂视频
用户认证
深信服技术支持平台
安装部署配置
SDP百科
设备维护
社区帮助指南
答题自测
每日一记
玩转零信任
畅聊IT
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
安全攻防
上网策略
测试报告
日志审计
问题分析处理
流量管理
云计算知识
原创分享
解决方案
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
功能咨询
终端接入
授权
资源访问
地址转换
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
答题榜单公布
纪元平台
卧龙计划
华北区拉练
天逸直播
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
每周精选

本版版主

396
135
63

发帖

粉丝

关注

本版达人

新手61940...

本周建议达人

BGP网络

本周分享达人

BGP网络

本周提问达人