CSRF漏洞解釋,原理
CSRF(Cross-site request forgery)
跨站請求僞造,由客戶端發起,是一種劫持受信任用戶向服務器發送非預期請求的攻擊方式,與XSS類似,但比XSS更難防範,常與XSS一塊兒配合攻擊
原理詳解
攻擊者盜用了你的身份信息,以你的名義發送惡意請求,對服務器來講這個請求是你發起的,卻完成了攻擊者所指望的一個操做
XSS 利用站點內內的信任用戶,盜取cookie
CSRF經過假裝成受信任用戶請求受信任的網站
利用目標用戶的合法身份,以目標的名義執行某些非法參數
利用條件:已經登陸系統,用戶訪問URL 已存在的網站中讓用戶跳轉
CSRF漏洞檢測,案例,防護
防護方案
1.當用戶發送重要的請求時輸入驗證碼
2.涉及隨機TOKEN ---數據包的惟一值
3.檢測referer來源,請求時判斷請求鏈接是否爲當前管理員正在使用的頁面(管理員在編輯文章,黑客發來惡意的修改密碼連接,由於修改密碼頁面管理員並無在操做,因此攻擊失敗)
4.設置驗證碼
5.限制請求方式只能爲post0
SSRF(服務器端請求僞造)
SSRF(Server-Side Request Forgery:服務器端請求僞造) 是一種由攻擊者構造造成由服務端發起請求的一個安全漏洞。通常狀況下,SSRF攻擊的目標是從外網沒法訪問的內部系統。(正是由於
它是由服務端發起的,因此它可以請求到與它相連而與外網隔離的內部系統)
SSRF 造成的緣由大都是因爲服務端提供了從其餘服務器應用獲取數據的功能且沒有對目標地址作過濾與限制。好比從指定URL地址獲取網頁文本內容,加載指定地址的圖片,下載等等。
註釋:除了http/https等方式能夠形成ssrf,相似tcp connect 方式也能夠探測內網一些ip 的端口是否開發服務,只不過危害比較小而已。
0x01 可能出現的地方
1.社交分享功能:獲取超連接的標題等內容進行顯示
2.轉碼服務:經過URL地址把原地址的網頁內容調優使其適合手機屏幕瀏覽
3.在線翻譯:給網址翻譯對應網頁的內容
4.圖片加載/下載:例如富文本編輯器中的點擊下載圖片到本地;經過URL地址加載或下載圖片
5.圖片/文章收藏功能:主要其會取URL地址中title以及文本的內容做爲顯示以求一個好的用具體驗
6.雲服務廠商:它會遠程執行一些命令來判斷網站是否存活等,因此若是能夠捕獲相應的信息,就能夠進行ssrf測試
7.網站採集,網站抓取的地方:一些網站會針對你輸入的url進行一些信息採集工做
8.數據庫內置功能:數據庫的好比mongodb的copyDatabase函數
9.郵件系統:好比接收郵件服務器地址
10.編碼處理, 屬性信息處理,文件處理:好比ffpmg,ImageMagick,docx,pdf,xml處理器等
11.未公開的api實現以及其餘擴展調用URL的功能:能夠利用google 語法加上這些關鍵字去尋找SSRF漏洞
一些的url中的關鍵字:share、wap、url、link、src、source、target、u、3g、display、sourceURl、imageURL、domain……
12.從遠程服務器請求資源(upload from url 如discuz!;import & expost rss feed 如web blog;使用了xml引擎對象的地方 如wordpress xmlrpc.php)
0x02 漏洞驗證
1.排除法:瀏覽器f12查看源代碼看是不是在本地進行了請求
好比:該資源地址類型爲 http://www.xxx.com/a.php?image=(地址)的就可能存在SSRF漏洞
2.dnslog等工具進行測試,看是否被訪問
--能夠在盲打後臺用例中將當前準備請求的uri 和參數編碼成base64,這樣盲打後臺解碼後就知道是哪臺機器哪一個cgi觸發的請求。
3.抓包分析發送的請求是否是由服務器的發送的,若是不是客戶端發出的請求,則有多是,接着找存在HTTP服務的內網地址
--從漏洞平臺中的歷史漏洞尋找泄漏的存在web應用內網地址
--經過二級域名暴力猜解工具模糊猜想內網地址
4.直接返回的Banner、title、content等信息
5.留意bool型SSRF
0x03 利用方式
1.讓服務端去訪問相應的網址
2.讓服務端去訪問本身所處內網的一些指紋文件來判斷是否存在相應的cms
3.可使用file、dict、gopher[11]、ftp協議進行請求訪問相應的文件
4.攻擊內網web應用(能夠向內部任意主機的任意端口發送精心構造的數據包{payload})
5.攻擊內網應用程序(利用跨協議通訊技術)
6.判斷內網主機是否存活:方法是訪問看是否有端口開放
7.DoS攻擊(請求大文件,始終保持鏈接keep-alive always)
0x04 繞太小技巧
注:參考[8]會有更詳細的繞過方式總結
1.http://baidu.com@www.baidu.com/與http://www.baidu.com/請求時是相同的
2.各類IP地址的進制轉換
3.URL跳轉繞過:http://www.hackersb.cn/redirect.php?url=http://192.168.0.1/
4.短網址繞過 http://t.cn/RwbLKDx
5.xip.io來繞過:http://xxx.192.168.0.1.xip.io/ == 192.168.0.1 (xxx 任意)
指向任意ip的域名:xip.io(37signals開發實現的定製DNS服務)
6.限制了子網段,能夠加 :80 端口繞過。http://tieba.baidu.com/f/commit/share/openShareApi?url=http://10.42.7.78:80
7.探測內網域名,或者將本身的域名解析到內網ip
8.例如 http://10.153.138.81/ts.php , 修復時容易出現的獲取host時以/分割來肯定host,
但這樣能夠用 http://abc@10.153.138.81/ 繞過
0x05 漏洞示例
1.Wordpress3.5.1如下版本 xmlrpc.php pingback的缺陷與ssrf
2.discuz!的ssrf (利用php的header函數來繞過,其實就是302跳轉實現協議轉換)
3.weblogic的ssrf
0x06 漏洞修復
1.禁止跳轉
2.過濾返回信息,驗證遠程服務器對請求的響應是比較容易的方法。若是web應用是去獲取某一種類型的文件。那麼在把返回結果展現給用戶以前先驗證返回的信息是否符合標準。
3.禁用不須要的協議,僅僅容許http和https請求。能夠防止相似於file://, gopher://, ftp:// 等引發的問題
4.設置URL白名單或者限制內網IP(使用gethostbyname()判斷是否爲內網IP)
5.限制請求的端口爲http經常使用的端口,好比 80、44三、8080、8090
6.統一錯誤信息,避免用戶能夠根據錯誤信息來判斷遠端服務器的端口狀態。
0x07 漏洞利用中牽涉的小技巧
crontab -l 顯示當前計劃任務
crontab -r 清除當前計劃任務
端口轉發工具 socat
在Apache配置文件中寫入下面的內容,就能夠將jpg文件當作PHP文件來執行
AddType application/x-httpd-php