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
基礎學黑客 搜公眾號:白帽子左一
xss漏洞的原理其實很簡單,類型也分為三類,反射型、儲存型和dom型。
但是剛接觸xss的時候我根本不理解什么是dom型xss,無法區分反射型和dom型,也很少遇見,現在通過這篇文章可以給新入坑的小白更好的理解xss漏洞,也通過這篇文章鞏固一下我對xss的理解.
兩張簡單的圖幫助大家對比一下異同
首先還是先簡單介紹一下xss最常見的類型:反射型
通過pikachu靶場來做簡單的演示分析
可以看到我們輸入的數據通過html頁面回顯了出來,這意味著我們可以嘗試構造閉合來注入我們想要的代碼
檢查一下網頁源碼,處于這個位置(20這個地方顯示了輸入數據的長短,改一改就好)
插入這個代碼測試xss漏洞:<script>alert('1_Ry')</script>,出現彈窗
分析一下代碼
$html='';
if(isset($_GET['submit'])){
if(empty($_GET['message'])){
$html.="<p class='notice'>輸入'kobe'試試-_-</p>";
}else{
if($_GET['message']=='kobe'){
$html.="<p class='notice'>愿你和{$_GET['message']}一樣,永遠年輕,永遠熱血沸騰!</p><img src='{$PIKA_ROOT_DIR}assets/images/nbaplayer/kobe.png' />";
}else{
$html.="<p class='notice'>who is {$_GET['message']},i don't care!</p>";
}
}
}
首先通過GET 接收message字符串到后端,然后傳到$html這個變量
<div id="xssr_main">
<p class="xssr_title">Which NBA player do you like?</p>
<form method="get">
<input class="xssr_in" type="text" maxlength="20" name="message" />
<input class="xssr_submit" type="submit" name="submit" value="submit" />
</form>
<?php echo $html;?>
</div>
再通過這個變量輸出到前端的頁面,然后剛剛輸入的<script>alert('1_Ry')</script>代碼就會在頁面被執行,通過服務端邏輯來改變了最終的網頁代碼
DOM型xss和別的xss最大的區別就是它不經過服務器,僅僅是通過網頁本身的JavaScript進行渲染觸發的
下面我們來看看典型的DOM型xss例子,將下面這句話復制到有道詞典進行翻譯,相信大家很快就能理解
This is a test <script>alert('1_Ry')</script>about xss
在線翻譯_有道 (https://fanyi.youdao.com/)
看看這句話在html中的位置
這個例子中的xss語句<script>alert('1_Ry')</script>只是單純的在前端解析,沒有經過后端,屬于前端自身的安全漏洞。
再通過pikachu靶場來深入了解一下DOM型xss
這是前端界面
這是源代碼,接下來分析一下這個源碼
<div id="xssd_main">
<script>
function domxss(){
var str=document.getElementById("text").value;
document.getElementById("dom").innerHTML="<a href='"+str+"'>what do you see?</a>";
}
</script>
<input id="text" name="text" type="text" value="" />
<input id="button" type="button" value="click me!" onclick="domxss()" />
<div id="dom"></div>
</div>
當輸入123源碼中是這樣顯示的
但當輸入:#'onclick="alert('1_Ry')"> 時
一直點擊則一直彈,同時使用burpsuite抓包的話也是抓不到任何東西,因為沒有產生與服務器的交互,僅僅通過前端js渲染來改變最終的網頁代碼
兩者的攻擊方式沒有什么不同,都是通過電子郵件等方式發送這個含有我們構造的payload的URL給目標用戶,當目標用戶訪可該鏈接時,服務器接收該目標用戶的請求并進行處理
然后服務器把帶有XSS代碼的數據發送給目標用戶的測覽器,瀏覽器解析這段帯有XSS代碼的惡意腳本后,就會觸發XSS漏洞,一般用于獲取對方cookies值
作者:lryfish
原文地址:https://www.freebuf.com/articles/web/318982.html
ARP工作在數據鏈路層,數據鏈路層的基本功能是構造幀和傳輸幀(FRAME),幀由目的MAC地址信息和源MAC地址信息以及數據組成。在以太網中, 知道了目的MAC地址和源MAC地址就可以傳輸數據了。源MAC地址就是本機MAC,這很好得到,那么如何知道目的IP地址呢,人們發明了ARP(Address Resolution Protocol)協議, 用來通過解析IP地址返回目的服務器的MAC地址
幀的構成圖
主機A查看自己的ARP緩存,檢查是否有主機B的IP到MAC的映射,如果有映射,構造報文,目的IP為主機B的IP,源IP為主機A的IP,目的MAC為主機B的MAC,源MAC為主機A的MAC,將報文發送給交換機C,交換機C進行MAC地址表學習,將主機A的MAC和報文入端口號記錄下來,然后交換機C查看自己的MAC轉發表,檢查是否有主機B的MAC到端口的映射,如果有映射,獲取對應的端口,將報文從此端口轉發出去,報文到達主機B。如果交換機C沒有主機B的MAC轉發表映射,采用洪泛的形式廣播報文,主機B收到報文后向主機A回復,交換機C進行MAC表學習,將主機B的MAC和報文入端口號記錄下來。
Internet 地址 物理地址 類型
192.168.16.255 ff-ff-ff-ff-ff-ff 靜態
224.0.0.22 01-00-5e-00-00-16 靜態
arp -d ip
arp -s 192.168.16.254 00-22-aa-00-22-aa
ARP攻擊主要是通過偽造IP地址和MAC地址進行欺騙
(config)#arp 192.168.100.2 aaaa.bbbb.ccccfastEthernet 0/1
缺陷:如果是通過DHCP自動獲取的地址,租期到了以后,綁定就會失效,病情重新發包請求IP地址.也不會分配到IP地址.擴展性很差。
2.交換機上開啟DAI (Dynamic ARP Inspection) 動態ARP監測,用于基于VLAN的防護機制
參考:http://c.biancheng.net/view/6391.html
參考:TCP/IP詳解
自網絡
CC攻擊是DDoS(分布式拒絕服務)的一種,相比其它的DDoS攻擊CC似乎更有技術含量一些。這種攻擊你見不到虛假IP,見不到特別大的異常流量,但造成服務器無法進行正常連接,一條ADSL的普通用戶足以掛掉一臺高性能的Web服務器。
由此可見其危害性,稱其為“Web殺手”毫不為過。最讓站長們憂慮的是這種攻擊技術含量不是很高,利用工具和一些IP代理,一個初、中級的電腦水平的用戶就能夠實施DDoS 攻擊。
CC攻擊的原理就是攻擊者控制某些主機不停地發大量數據包給對方服務器造成服務器資源耗盡,一直到宕機崩潰。CC主要是用來攻擊頁面的,每個人都有這樣的體驗:當一個網頁訪問的人數特別多的時候,打開網頁就慢了。
CC就是模擬多個用戶(多少線程就是多少用戶)不停地進行訪問那些需要大量數據操作(就是需要大量CPU時間)的頁面,造成服務器資源的浪費,CPU長時間處于100%,永遠都有處理不完的連接直至就網絡擁塞,正常的訪問被中止。
1、如果網站是動態網站,比如asp/asp.net/php等,在被CC攻擊的情況下,IIS站點會出錯提示SERVER IS TOO BUSY,如果不是使用IIS來提供網站服務,會發現提供網站服務的程序無緣無故自動崩潰,出錯。如果排除了網站程序的問題,而出現這類型的情況,基本上可以斷定是網站被CC攻擊了。
2、如果網站是靜態站點,比如html頁面,在被CC攻擊的情況下,打開任務管理器,看網絡流量,會發現網絡應用里數據的發送出現嚴重偏高的現象,在大量的CC攻擊下,甚至會達到99%的網絡占用,當然,在被CC攻擊的情況下網站是沒辦法正常訪問的,但是通過3389連接服務器還是可以正常連接。
3、如果是被小量CC攻擊,則站點還是可以間歇性訪問得到,但是一些比較大的文件,比如圖片會出現顯示不出來的現象。如果是動態網站被小量CC攻擊,還會發現服務器的CPU占用率出現飆升的現象。這是最基本的CC攻擊癥狀。
確定Web服務器正在或者曾經遭受CC攻擊,那如何進行有效的防范呢?
(1).取消域名綁定
一般cc攻擊都是針對網站的域名進行攻擊,比如我們的網站域名是“www.abc.com”,那么攻擊者就在攻擊工具中設定攻擊對象為該域名然后實施攻擊。
對于這樣的攻擊我們的措施是在IIS上取消這個域名的綁定,讓CC攻擊失去目標。具體操作步驟是:打開“IIS管理器”定位到具體站點右鍵“屬性”打開該站點的屬性面板,點擊IP地址右側的“高級”按鈕,選擇該域名項進行編輯,將“主機頭值”刪除或者改為其它的值(域名)。
經過模擬測試,取消域名綁定后Web服務器的CPU馬上恢復正常狀態,通過IP進行訪問連接一切正常。但是不足之處也很明顯,取消或者更改域名對于別人的訪問帶來了不變,另外,對于針對IP的CC攻擊它是無效的,就算更換域名攻擊者發現之后,他也會對新域名實施攻擊。
(2).域名欺騙解析
如果發現針對域名的CC攻擊,我們可以把被攻擊的域名解析到127.0.0.1這個地址上。我們知道127.0.0.1是本地回環IP是用來進行網絡測試的,如果把被攻擊的域名解析到這個IP上,就可以實現攻擊者自己攻擊自己的目的,這樣他再多的肉雞或者代理也會宕機,讓其自作自受。
另外,當我們的Web服務器遭受CC攻擊時把被攻擊的域名解析到國家有權威的政府網站或者是網警的網站,讓其網警來收拾他們。
現在一般的Web站點都是利用類似“新網”這樣的服務商提供的動態域名解析服務,大家可以登錄進去之后進行設置。
(3).更改Web端口
一般情況下Web服務器通過80端口對外提供服務,因此攻擊者實施攻擊就以默認的80端口進行攻擊,所以,我們可以修改Web端口達到防CC攻擊的目的。運行IIS管理器,定位到相應站點,打開站點“屬性”面板,在“網站標識”下有個TCP端口默認為80,我們修改為其他的端口就可以了。
(4).IIS屏蔽IP
我們通過命令或在查看日志發現了CC攻擊的源IP,就可以在IIS中設置屏蔽該IP對Web站點的訪問,從而達到防范IIS攻擊的目的。在相應站點的“屬性”面板中,點擊“目錄安全性”選項卡,點擊“IP地址和域名現在”下的“編輯”按鈕打開設置對話框。
在此窗口中我們可以設置“授權訪問”也就是“白名單”,也可以設置“拒絕訪問”即“黑名單”。比如我們可以將攻擊者的IP添加到“拒絕訪問”列表中,就屏蔽了該IP對于Web的訪問。
聲明:我們尊重原創者版權,除確實無法確認作者外,均會注明作者和來源。轉載文章僅供個人學習研究,同時向原創作者表示感謝,若涉及版權問題,請及時聯系小編刪除!
精彩在后面
Hi,我是超級盾
更多干貨,可移步到,微信公眾號:超級盾訂閱號!精彩與您不見不散!
超級盾:從現在開始,我的每一句話都是認真的。
如果,你被攻擊了,別打110、119、120,來這里看著就行。
截至到目前,超級盾成功抵御史上最大2.47T黑客DDoS攻擊,超級盾具有無限防御DDoS、100%防CC的優勢。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。