首页 » 软件工具 » 浏览内容

使用XSSaminer工具在PHP中挖掘XSS漏洞

1776 0 发表评论

当想要在服务器的开source脚本代码中发掘跨站脚本漏洞时,使用静态分析方法可以使我们的分析过程变得更加简单并且自动化,另外,网上也可以找到许多相关的工具。

我近期发现了一种通过寻找共性pattern在PHPsource码中发掘跨站脚本漏洞的简单方法。
该方法是使用一个名为XSSaminer的工具,该工具根据grep创建,并使用bash语言编写。

代码如下:

工具介绍

它首先会检查脚本参数:

代码分析:如果第一行的参数$1为空,就显示使用$0作为脚本名的用例并终止程序;否则,就将该参数分配给主函数中使用的f变量。

接下来是带有不完整字符串的source和sink,之所以不完整,是因为它们只用于匹配。sink使用source,如果可以相互匹配(在没有任何过滤的情况下),我们就需要考虑是否有用户输入注入到已经生成的HTML代码中。

如果sink中使用了GET、POST或REQUEST全局变量,那么这很明显就是注入问题。但是SERVER有一些特殊的地方,假设输入以下网址(带有破坏HTML属性的注入):

尽管上面只提到了三个SERVERsource,但是我们却可以在上述代码中找到四个SERVER,如下:

最后一个,REQUEST_URI,没有将URL特殊字符解码成双引号(“)或小于号(<),但是由于浏览器使用这些已编码的字符创建请求,因此,这是一个隐患。但是它只应用在存储型XSS中,用于拦截和编辑浏览器请求(或使用其他HTTP客户端),或者在加载sink前在PHP代码的其他位置进行解码。

Xssam函数用于结合source和sink,通过前两个“for”循环找到直接的隐患位置,“a”变量用于获取接收不安全的全局值(source)的变量名称。借助第三个“for”循环实现一级的脚本变量追踪。

在主代码中,这段脚本用于选择是单个文件调用xssam函数还是进入递归模式。

该过程通过使用命令行中提供的带有-r选项(代替文件名)的文件夹($2)来满足另一个“for”循环中相同的函数调用。

用例:

XSSaminer的主要目标是比较容易实现的XSS,而且经常会出现误报,但是它的LoC/result率是十分高的。

测试实例

如下截图为该工具对WordPress主题Rational Lite的测试结果:

14648309166000

它在2个不同的文件中找到了3个XSS漏洞,但是第二个为误报,第一个得到确认:

14648309533416

通过在整个模块文件中追踪存在漏洞的代码,发现当使用dismiss_id GET参数回调未认证的ajax操作时会弹出警告,一个0day漏洞出现了。

1464831070990

标签:

评论 共 0 条 (RSS 2.0) 发表 评论

  1. 暂无评论,快来抢沙发!

发表评论

  •   没有头像?

关注我们,实时联系

通知公告">更多...

♥如果喜欢本站可以直接点击订阅博客
♥点击此加入晓残博客会员群加入扣群
♥本站免费提供加密解密服务点击解密
♥伙伴们喜欢本站赏个好评呗

关注微信

有偿服务

博客统计

  • 日志总数:477 篇
  • 评论数目:1474 条
  • 标签总数:40 个
  • 页面总数:8 个
  • 分类总数:17 个
  • 友链总数:24 个
  • 建站日期:2011-02-13
  • 运行天数:2124 天
  • 最后更新:2016-12-6

订阅博客