PHP代码审计之XSS操作
XSS
XSS是Cross Site Scripting(跨站脚本攻击), 它与sql注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删除的目的,而在XSS攻击中,通过插入恶意脚本,实现对用户浏览器的控制.
XSS攻击的种类
xss攻击可以分为两种类型.:
- 非持久型攻击:非持久型攻击也就是一次性攻击,仅对当前的页面访问产生影响.
- 持久型攻击 : 持久性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等一切能出现的组合,编码后的组合等
PHP代码审计之XSS操作的更多相关文章
- PHP代码审计笔记--XSS
跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.Web程序代码中把用户提 ...
- 代码审计之XSS及修复
xss在平时的测试中,还是比较重要的,如果存在储存型xss,就可以做很多事情了,打cookie,添加管理员等等很多操作. 以下所有代码都是我自己写的,可能有不美观,代码错误等等问题,希望大家可以指正. ...
- QCMS代码审计:XSS+SQL+后台getshell
qcms是一款比较小众的cms,最近更新应该是17年,代码框架都比较简单,但问题不少倒是... 网站介绍 QCMS是一款小型的网站管理系统.拥有多种结构类型,包括:ASP+ACCESS.ASP+SQL ...
- 2020/1/29 PHP代码审计之XSS漏洞
0x00 XSS漏洞简介 人们经常将跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets,CSS)的缩写混淆.因此,有 ...
- JAVA代码审计之xss
java_sec_code xss 补充和回忆一下一些开发基础 @RestController @RequestMapping(value = "/xss") public cla ...
- 通过代码审计找出网站中的XSS漏洞实战(三)
一.背景 笔者此前录制了一套XSS的视频教程,在漏洞案例一节中讲解手工挖掘.工具挖掘.代码审计三部分内容,准备将内容用文章的形式再次写一此,前两篇已经写完,内容有一些关联性,其中手工XSS挖掘篇地址为 ...
- PHP代码审计中你不知道的牛叉技术点
一.前言 php代码审计如字面意思,对php源代码进行审查,理解代码的逻辑,发现其中的安全漏洞.如审计代码中是否存在sql注入,则检查代码中sql语句到数据库的传输 和调用过程. 入门php代码审计实 ...
- 技术专题-PHP代码审计
作者:坏蛋链接:https://zhuanlan.zhihu.com/p/24472674来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 一.前言 php代码审计如字面 ...
- XSS的高级利用部分总结 -蠕虫
XSS的高级利用部分总结 -蠕虫,HTTP-only,AJAX本地文件操作,镜象网页本帖最后由 racle 于 2009-5-30 09:19 编辑 XSS的高级利用总结 -蠕虫,HTTPONLY,A ...
随机推荐
- 简单的C#实体映射 AutoMapper
AutoMapper是对象到对象的映射工具.在完成映射规则之后,AutoMapper可以将源对象转换为目标对象. 要映射实体 public class SourceModel { public int ...
- WebApi 身份认证解决方案:Basic基础认证
前言:最近,讨论到数据库安全的问题,于是就引出了WebApi服务没有加任何验证的问题.也就是说,任何人只要知道了接口的url,都能够模拟http请求去访问我们的服务接口,从而去增删改查数据库,这后果想 ...
- logback日志框架的简单使用
1.首先在maven中增加依赖 <dependency> <groupId>ch.qos.logback</groupId> <artifactId>l ...
- marathon传参一
今天试了下marathon传参,新建一个job,增加一个参数,然后用cmd方式,echo出来 定义的json: { "id": "test1", "l ...
- 转:eclipse 设置Java快捷键补全
1.打开Eclipse,点击" Window - Preferences"; 2. 在目录树上选择"Java——Editor——Content Assist", ...
- Centos6.5 pppoe-server
[root@localhost network-scripts]# rpm -q rp-pppoepackage rp-pppoe is not installed ----------------- ...
- vue中watch检测到不到对象属性的变化的解决方法
watch: { option: { handler(newVal) { console.log(newVal); }, deep: true, immediate: true } }, 需要深层wa ...
- Pyhon进阶9---类的继承
类的继承 基本概念 定义 格式如下 继承中的访问控制 class Animal: __CNOUT = 0 HEIGHT = 0 def __init__(self,age,weight,height) ...
- 手指向上滑动跳转页面的JQ方法
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 搭建Eureka注册中心
创建一个Spring Boot工程,命名为eureka-server,并在pom.xml中引入必要的依赖,代码如下. <parent> <groupId>org.springf ...