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

olDBear0769 2846

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

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

回帖即可获得
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
  
您好 问题已经记录,工程师稍后联系您远程协助
谢谢

等我来答:

换一批

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

本版版主

1
3
10

发帖

粉丝

关注

396
143
63

发帖

粉丝

关注

5
8
7

发帖

粉丝

关注

0
2
1

发帖

粉丝

关注

本版达人

新手61940...

本周建议达人

BGP网络

本周分享达人

BGP网络

本周提问达人