zoukankan      html  css  js  c++  java
  • PHP代码审计之XSS操作

    XSS

    XSS是Cross Site Scripting(跨站脚本攻击), 它与sql注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删除的目的,而在XSS攻击中,通过插入恶意脚本,实现对用户浏览器的控制.

    XSS攻击的种类

    xss攻击可以分为两种类型.:

          1.  非持久型攻击:非持久型攻击也就是一次性攻击,仅对当前的页面访问产生影响.
          2.     持久型攻击   : 持久性xss会把攻击者的数据存储在服务器端,攻击行为将伴随着攻击数据一直存在而存在.

    源码展示

    代码里面并没有对HTTP_CLIENT_IP 和HTTP_X_FORWARDER_FOR 这两个参数做任何的限制, 也就代表着我们可以修改这两个参数的值来达到任意ip的目的.

    使用全局搜素看下这个函数在哪个地方应用,

    通过全局搜素得知,其主要应用为在登录的时候记录登录ip,经过sqlwaf过滤,赋值给ip变量.sqlwaf前面已经看过了 只是过滤了sql注入 ,并没有对xss进行过滤.

    确定可以进行xss注入之后, 使用全局搜索,看哪里使用了这个字段进行输出.

    验证漏洞

    准备payload,你可以放到你的网站,也可以放到你本地,只要能请求到就行

    使用burp抓包工具,在提交登录的时候把HTTP_X_FORWARDER_FOR的值手动修改为 <script src="127.0.0.1/payload.js"></script>

    过程就不截图了.打开数据库 看下记录的结果.

    登录后查看后台,可以看到代码被成功加载了

    修复方案

    个人认为sql注入和xss攻击本身就不是一类,用同一个方法来过滤,已经是不合理了.

    应使用专门的函数对xss进行过滤,如script,Script,ssccrript等一切能出现的组合,编码后的组合等

  • 相关阅读:
    k64 datasheet学习笔记26--Oscillator (OSC)
    k64 datasheet学习笔记22---Direct Memory Access Controller (eDMA)
    k64 datasheet学习笔记21--Direct Memory Access Multiplexer (DMAMUX)
    System.getProperty()获取系统的配置信息
    Zoomit的用法总结
    .bat文件调用java类的main方法
    电脑快捷键总结
    验证java引用的小例子
    java随机数
    java调用删除文件的方法删除文件,却删除不干净
  • 原文地址:https://www.cnblogs.com/php09/p/10518071.html
Copyright © 2011-2022 走看看