PHP-代码审计-XSS

XSS防御函数

htmlentities() 函数
把字符转换为 HTML 实体:

<?php
$str = "<? W3S?h????>";
echo htmlentities($str);
?>


<?php
$str = "Bill & 'Steve'";
echo htmlentities($str, ENT_COMPAT); // 只转换双引号
echo "<br>";
echo htmlentities($str, ENT_QUOTES); // 转换双引号和单引号
echo "<br>";
echo htmlentities($str, ENT_NOQUOTES); // 不转换任何引号
?>

XSS挖掘流程

黑盒挖掘

  • 直接像渗透一样挖掘即可,因为XSS通常是可以黑盒挖掘出来的

白盒挖掘

漏洞产生条件

  • 用户输入参数:GET POST …
  • 函数
  • 输入到输出是否有过滤?

漏洞爱产生的位置

  • 发文章处
  • 回复评论处
  • 用户昵称签名处
  • 注册修改资料处

DVWA白盒挖掘演练

储存型

基本流程

  • 寻找未过滤的输入点,和未过滤的输出函数
  • 寻找最终输出点
  • 可以猜,或者老老实实哪里有操作过这个数据,使用表名,字段名去代码里搜

  • 观察可能出现xss漏洞的目录

在这里插入图片描述

  • 寻找未过滤的输入点,和未过滤的输出函数
    在这里插入图片描述

  • 可以看到过滤不完整,只过滤了一个变量

  • 并且向表guestbook中插入数据

  • 所以该处存在漏洞

在这里插入图片描述

  • 寻找最终的输出点因为最终的输出点可能完全不在一个业务流上
  • 所以我们可以使用表名,字段名,去代码里搜索
  • 图中随便打开一个

在这里插入图片描述

  • 可以看到该位置最终输出了用户输入的参数
  • 看第二个框,他有条件的,如果安全级别为impossible,则都过滤一下
  • 所以得出结论:我们一定要追踪到最后的输出点,否则你不知道他到底过滤没
  • 第三个框则是输出到html里面了

在这里插入图片描述所以我们可以根据条件,判断,输入到输出到底过滤没,到底用了什么过滤,是否可以用什么方法绕过,这比黑盒审计更方便,因为我们知道了过滤规则,直接上相应的方法即可

反射型

基本流程

  • 寻找带有未过滤的参数,且这些参数传到输出函数
  • 根据输出函数对输出内容回溯输入参数,观察是否过滤
  • 输出函数列表: print,print_r, echo, printf, sprintf, die ,var_dump, var_export

初级

  • 存在输出函数echo

  • 输出函数中包含输入参数,回溯

  • 该函数参数输入到输出没有任何过滤
    在这里插入图片描述

中级

  • 存在输出函数echo
  • 输出函数中包含输入参数,回溯
  • 该函数参数输入到输出吧script过滤为空
  • 但是可以用 其他标签绕过,过滤不完整,如onclick

在这里插入图片描述

高级

  • 存在输出函数echo
  • 输出函数中包含输入参数,回溯
  • 该函数参数输入到输出用正则吧script和周围过滤为空
  • 但是可以用 其他标签绕过,过滤不完整,如onclick
    在这里插入图片描述

安全级别

  • 输出函数中包含输入参数,回溯
  • 该函数参数输入到输出 用htmlspecialchars实体化
  • 安全
    在这里插入图片描述

xss利用姿势复习

利用姿势
由于利用姿势很多,这里只复习一下获取cookies
在这里插入图片描述
获取cookies

  • 首先我们要获取登陆后的页面

在这里插入图片描述

  • 将cookie攻击语句的payload插入到存在xss漏洞的位置

在这里插入图片描述
写一个接受cookie的平台
在这里插入图片描述

  • 获取到cookie以后
  • 使用firebug输入cookie
  • 然后再访问登陆后的页面就直接登陆上去了

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值