美文网首页
Webgoat ajax

Webgoat ajax

作者: 断弦Kaka | 来源:发表于2017-07-12 10:37 被阅读0次

    静默交易攻击(Silent Transactions Attacks)

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

    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 的目的。


    TIM截图20170712113033.png

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

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

    STAGE 1:

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

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

    修改readonly

    认证缺陷(Authentication Flaws)

    JSESSIONID=novalidsession

    相关文章

      网友评论

          本文标题:Webgoat ajax

          本文链接:https://www.haomeiwen.com/subject/yizvhxtx.html