Silent Transactions Attacks

本文介绍了一种利用AJAX的无声转账攻击方法,通过绕过客户端验证,实现未经用户授权的转账操作。文章详细分析了攻击过程及两种实施手段。

How the attacks works:

Any system that silently processes transactions using a single submission is dangerous to the client.

For example, if a normal web application allows a simple URL submission, a preset session attack will allow the attacker to complete a transaction without the user's authorization. In Ajax, it gets worse: the transaction is silent; it happens with no user feedback on the page, so an injected attack script may be able to steal money from the client without authorization.

 

webgoat上示例,在一个银行网站应用上的转账页面中,该网页在一些基本的客户端验证后利用AJAX提交transaction。

目标:绕过用户认证并silently执行这次transaction!!

 

分析该页js脚本文件

 

 

发现其中processData()函数是用来验证输入金额是否超过了账户余额,若超过,认证不通过。

submitData()函数则是在验证完后被调用来提交XHR(XMLHTTPRequest)与服务端交互,执行转账。

 

方法一:绕过processData()的客户端验证

使用WebScarab 截获get请求,并修改get请求里的金额参数。因为获得get请求之前已经经过了客户端验证,此时修改的金额完全可以超过账户余额!

 

此方法bypass了客户端验证,但是还是需要经过用户认证,即必须截获客户端和服务器端的通信,因此没有达成silently的目的。

 

方法二:通过在browser上调用JavaScript函数submitData()来bypass客户端验证并silently执行转账。

 

最新版本的多数浏览器支持在地址栏里(address bar)调用JS脚本,即使用javascript:function();

 

因此在浏览器地址栏直接输入JavaScript:submitData(1234,11000);

即可攻击成功!

 

* Congratulations. You have successfully completed this lesson.
You have just silently authorized 11000$ without the user interaction.
Now you can send out a spam email containing this link and whoever clicks on it
and happens to be(一定几率性 logged in the same time will loose their money !!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值