Webgoat ajax

静默交易攻击(Silent Transactions Attacks)

要点:前台JS进行了用户身份校验,可直接调用接口或submitData(accountNo, balance)实现攻击

Webgoat ajax_第1张图片
TIM截图20170712110400.png
function processData(){

var accountNo = document.getElementById('newAccount').value;

var amount = document.getElementById('amount').value;

if ( accountNo == ''){

alert('Please enter a valid account number to transfer to.')

return;

}

else if ( amount == ''){

alert('Please enter a valid amount to transfer.')

return;

}

var balanceValue = document.getElementById('balanceID').innerHTML;

balanceValue = balanceValue.replace( new RegExp('$') , '');

if ( parseFloat(amount) > parseFloat(balanceValue) ) {

alert('You can not transfer more funds than what is available in your balance.')

return;

}

document.getElementById('confirm').value  = 'Transferring'

submitData(accountNo, amount);

document.getElementById('confirm').value  = 'Confirm'

balanceValue = parseFloat(balanceValue) - parseFloat(amount);

balanceValue = balanceValue.toFixed(2);

document.getElementById('balanceID').innerHTML = balanceValue + '$';

}

function submitData(accountNo, balance) {

var url = 'attack?Screen=68&menu=400&from=ajax&newAccount='+ accountNo+ '&amount=' + balance +'&confirm=' + document.getElementById('confirm').value;

if (typeof XMLHttpRequest != 'undefined') {

req = new XMLHttpRequest();

} else if (window.ActiveXObject) {

req = new ActiveXObject('Microsoft.XMLHTTP');

}

req.open('GET', url, true);

req.onreadystatechange = callback;

req.send(null);

}

function callback() {

if (req.readyState == 4) {

if (req.status == 200) {

var result =  req.responseText ;

var resultsDiv = document.getElementById('resultsDiv');

resultsDiv.innerHTML = '';

resultsDiv.innerHTML = result;

}}}

危险指令使用(Dangerous Use of Eval)

在服务端验证所有用户输入的信息,这是一个不错的做法。如果未验证的用户输入直接通过HTTP 响应返回给客户端的话,往往会触发XSS 攻击。未验证的用户提供的数据结合了JavaScript 的eval()调用一起使用。在反射型XSS 攻击中,攻击者可以构造带有攻击脚本的URL,将其存储于其他站点,通过电子邮件,或者其他方式诱骗用户点击,达到XSS 的目的。


Webgoat ajax_第2张图片
TIM截图20170712113033.png

输入123');alert(document.cookie);('

不安全的客户端存储(Insecure Client Storage)

STAGE 1:

Webgoat ajax_第3张图片
JS脚本中存储了优惠码.png

  • STEP1:点击优惠码输入框,查看调用的js脚本
  • STEP2:JS脚本中存储了优惠码,且进行了加密
  • STEP3:设置断点,得到加密后的优惠码
  • STEP4:输入优惠码即可

STAGE 2:
查看页面元素,将readonly属性删除后,修改input的值为0,提交即可

Webgoat ajax_第4张图片
修改readonly


认证缺陷(Authentication Flaws)

JSESSIONID=novalidsession

你可能感兴趣的:(Webgoat ajax)