php代码审计6审计xss漏洞
跨站脚本攻击(Cross Site Scripting)是指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户造成影响的html代码,从而盗取用户资料,利用用户身份进行某种动作或者对访问者进行侵害的一中攻击方式,为了与层叠样式表的缩写css区分开,跨站脚本通常简写为xss
危害:
盗取用户cookie
蠕虫
查看网页浏览信息
跳转钓鱼网页
挖掘思路:没有过滤的参数,传入到输出函数中,
漏洞思路:搜索内容 发表文章 留言 评论回复 资料设置等
漏洞类型
反射型
非持久型,通过get和post方法,向服务器端输入数据,用户输入的数据通常被放置在url的query string中,或者是from数据中,如果服务器端对输入的数据不进行过滤,验证或编码,就直接将用户输入的信息呈现给客户,就会造成反射型xss,危害程度普遍认为较小,但是某些会造成严重的后果,如在输入框的name中输入<meta http-equiv="refresh" content="5"/> ,服务器不加处理,将name的值直接发送到浏览器,浏览器会5秒自动刷新一次,严重会导致服务器崩溃
常见场景:
//将前端获取的内容,直接输出到浏览器页面
代码1
<?php
$content = $_GET['content'];
echo $content;
?>
//将前端获取的内容,直接输出到HTML标签
代码2
<?php
$content = $_GET['content'];
?>
<input type="text" value="<?php echo $content?>">
//将前端获取的内容,直接输出到<script>标签
代码3
<?php
$content = $_GET['content'];
?>
<script>
var xss = '<?php echo $content>';
document.write(xss);
</script>
存储型
持久型xsss,通常是因为服务器端将用户输入的恶意脚本没有通过验证就直接存储在数据库,并且每次通过调用数据库的方式,将数据呈现在浏览器上,则该xss攻击将一直存在,若其他用户访问该页面,恶意脚本就会被触发,用于盗取其他用户的私人信息
代码4
<form action="" method="post">
<input type="text" name="xss"/>
<input type="submit" value="test"/>
</form>
<?php
$xss=@$_POST['xss'];
mysql_connect("localhost","root","123");
mysql_select_db("xss");
if($xss!==null){
$sql="insert into temp(id,payload) values('1','$xss')";
$result=mysql_query($sql);
echo $result;
}//用户输入的内容没过滤,但是不直接显示在页面中,而是插入到数据库
代码5
mysql_connect("localhost","root","root");
mysql_select_db("xss");
$sql="select payload from temp where id=1";
$result=mysql_query($sql);
while($row=mysql_fetch_array($result)){
echo $row['payload'];
}//从数据库读取了之前插入的内容,并显示出来
反射型 输入--输出
存储型 输入--进入数据库--取出数据库--输出
DOM型
是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容,结构以及样式,dom型xss是一种特殊的xss,基于dom文档对象模型的一种漏洞
dom型数据流向:url--->浏览器
常见属性:
___________________________________________
输入点 | 输出点 |
document.URL | eval |
document.location | document.write |
document.referrer | document.InnterHTML |
document.form | document.OuterHTML |
......... | ......... |
_______________|___________________________|
代码6
<?php
error_reporting(0); //禁用错误报告
$name = $_GET["name"];
?>
<input id="text" type="text" value="<?php echo $name;?>" />
<div id="print"></div>
<script type="text/javascript">
var text = document.getElementById("text");
var print = document.getElementById("print");
print.innerHTML = text.value; // 获取 text的值,并且输出在print内。这里是导致xss的主要原因。
</script>
修复方案:对所有输入中的script,iframe等字样进行严格的检查,验证数据的类型及其格式,长度,范围和内容,客户端做数据的验证与过滤,关键的过滤步骤在服务器端进行,检查输出的数据
php代码审计6审计xss漏洞的更多相关文章
- php代码审计9审计反序列化漏洞
序列化与反序列化:序列化:把对象转换为字节序列的过程称为对象的序列化反序列化:把字节序列恢复为对象的过程称为对象的反序列化 漏洞成因:反序列化对象中存在魔术方法,而且魔术方法中的代码可以被控制,漏洞根 ...
- php代码审计7审计csrf漏洞
跨站请求伪造,也有人写出xsrf,黑客伪造用户的http请求,然后将http请求发送给存在csrf的网站,网站执行了伪造的http请求,就引发了跨站请求伪造 漏洞危害:攻击者盗用了你的身份信息,以你的 ...
- PHP代码审计2-常用超全局变量,常用命令注入,常用XSS漏洞审计,文件包含
超全局变量 $GLOBALS — 引用全局作用域中可用的全部变量$_SERVER — 服务器和执行环境信息$_GET — HTTP GET 变量$_POST — HTTP POST 变量$_FILES ...
- 通过代码审计找出网站中的XSS漏洞实战(三)
一.背景 笔者此前录制了一套XSS的视频教程,在漏洞案例一节中讲解手工挖掘.工具挖掘.代码审计三部分内容,准备将内容用文章的形式再次写一此,前两篇已经写完,内容有一些关联性,其中手工XSS挖掘篇地址为 ...
- 74CMS3.0储存型XSS漏洞代码审计
发现一个总结了乌云以前代码审计案例的宝藏网站:https://php.mengsec.com/ 希望自己能成为那个认真复现和学习前辈们思路的那个人,然后准备慢慢开始审计一些新的小型cms了 骑士cms ...
- [代码审计]:PhpMyWind储存型XSS漏洞(CVE-2017-12984)
简介 今天开启一下代码审计的篇章 python安全编程剩下的看起来没意思就结束了 ,现在规划每2周写一个爬虫练练手, 然后今天开启代码审计和Docker的学习 我个人感觉先看漏洞利用过程再看漏洞分析 ...
- 代码审计中的XSS反射型漏洞
XSS反射型漏洞 一 XSS漏洞总共分三总 XSS反射型漏洞,XSS保存型漏洞,基于DOM的XSS漏洞 这次主要分享XSS反射型漏洞 基本原理:就是通过给别人发送带有恶意脚本代码参数的URL,当URL ...
- 2020/1/29 PHP代码审计之XSS漏洞
0x00 XSS漏洞简介 人们经常将跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets,CSS)的缩写混淆.因此,有 ...
- 基于dom的xss漏洞原理
原文:http://www.anying.org/thread-36-1-1.html转载必须注明原文地址最近看到网络上很多人都在说XSS我就借着暗影这个平台发表下自己对这一块的一些认识.其实对于XS ...
随机推荐
- socket通讯实例与TCP/UDP的区别
一.socket代码实例 1.简单的socket通讯: 服务端代码实例: import socket sock = socket.socket(socket.AF_INET, socket.SOCK_ ...
- 安全测试之session,cookie
session session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息.•但程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这 ...
- Python 中的 is 和 == 编码和解码
一 is 与 == 区别 == 比较 比较的是值 例如: a = 'alex' b = 'alex' print(a == b) #True a = 10 ...
- 相关不同Linux系统的性能监控命令整理
Linux系统 查看系统版本情况: $uname -a 监控进程的CPU,MEM使用情况: $ps –aux 过滤方式命令:$ ps -aux|awk '{print $3,$4,$11}'|sort ...
- Linux进阶路线
初级:熟练使用命令.熟悉Shell编程.能配置简单的服务,清楚各类服务相关的配置文件的位置, 能看懂并可修改系统提供的配置脚本(/etc/*.*)把/etc目录下面常用的配置你都搞懂,把 /bin / ...
- krpano之热点样式及文本
修改热点的样式只需要将热点引用的style样式替换即可. 动态样式代码: <style name="skin_hotspotstyle" url="zlqj_hot ...
- 设置VMware Player中的虚拟机和宿主机共享文件
设置VMware Player中的虚拟机和宿主机共享文件 试验环境: 虚拟机软件:VMware Player 6.0.3 宿主机os:windows7 虚拟机os:centos6.6(32位) 完 ...
- 对象序列化中transient关键字的用途
- ubuntu18.04 蓝牙打开无效,解决办法升级内核
http://kernel.ubuntu.com/~kernel-ppa/mainline/ 上面的链接是linux内核版本, 蓝牙不管用可能是linux内核版本过低,本人亲自实验过, 升级到4.20 ...
- 生成ico格式图标
ico格式可参考如下链接: http://msdn.microsoft.com/en-us/library/ms997538.aspx http://en.wikipedia.org/wiki/ICO ...