xss读取php源码,如何使用XSSaminer工具在PHP源码中挖掘XSS漏洞

66b39cefea89699334f2cf28c29bb452.gif

我近期发现了一种通过寻找共性pattern在PHPsource码中发掘跨站脚本

工具介绍

它首先会检查脚本参数:

66b39cefea89699334f2cf28c29bb452.gif

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

sources=(GET POST REQUEST "SERVER/['PHP""SERVER/['PATH_" "SERVER/['REQUEST_U")

sinks=(echo die printprintfprint_rvar_dump)

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

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

http://domain/page.php/">

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

$_SERVER[‘PHP_SELF’] – returns the current URL decoded

http://domain/page.php/">

$_SERVER[‘PATH_TRANSLATED’] – returns file path on the system

/var/www/html/page.php/">

$_SERVER[‘PATH_INFO’] – returns info between page name and querystring (?)

/">

$_SERVER[‘REQUEST_URI’] – returns the current URL

http://domain/page.php/">

最后一个,REQUEST_URI,没有将URL特殊字符解码成双引号(“)或小于号(

xssam(){

fori in ${sources[@]}

do

a=$(grep-in "/$_${i}" $f | grep -o "/$.*=" | sed "s/[]/?=//g" | sort -u)

forj in ${sinks[@]}

do

grep--color -in "${j}.*/$_${i}" $f

fork in $a

do

grep--color -in "${j}.*$k" $f

done

done

done

}

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

if [ $f != "-r" ]

then

xssam

else

for i in $(find $2 -type f -name "*.php")

do

echo "File: $i"

f=$i

xssam

done

fi

在主代码中,这段脚本用于选择是单个文件调用xssam函数还是进入递归模式。该过程通过使用命令行中提供的带有-r选项(代替文件名)的文件夹($2)来满足另一个“for”循环中相同的函数调用。

用例:

./xssaminerFILE (单个文件)

./xssaminer-r FOLDER (递归模式, 文件夹中所有的.php文件)

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

测试实例

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

66b39cefea89699334f2cf28c29bb452.gif

它在2个不同的文件中找到了3个XSS

66b39cefea89699334f2cf28c29bb452.gif

通过在整个模块文件中追踪存在

66b39cefea89699334f2cf28c29bb452.gif

66b39cefea89699334f2cf28c29bb452.gif

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值