相關作業總結
# 總結這幾天的學習內容
# Pikachu的CSRF模組 apipost6(工具)
# GET:
皮卡丘的網址,修改資訊,進行抓包
最後總結:token
token如何防止CSRF
CSRF的主要問題是敏感操作的鏈接容易被偽造
每次請求,都增加一個隨機碼(需要夠隨機,不容易偽造),後台每次對隨機碼進行驗證
網頁接受從後台發過來的token,類型不可見。將其一併提交給後台進行驗證。每次刷新,後台發送過來的token都不一樣,起到了防止偽造的作用。
防範措施
增加token輸證(常用的做法):
1.對關健操作增加token參數,token值必須烈機,每次都不一樣;
關於安全的會話管理(避免會話被利用):
1,不要在客戶腦助保存部源資訊(比如身份認證資訊):
2.測試直統關閉,退出時,的會話過期機制:
3,設置會活過期機制,比如15分鐘內無操作,則自動登錄超時;
訪問控制安全管理:
1.敬感資訊的修改時需要對身份進行二次認證,比如修改帳號時,需亞判日密碼;
2.敏浸資訊的修改使用past,而不是get;
3.通過http頭部中的referer來限制原頁面
增加驗證碼:
一般用在登錄《防暴力破模),也可以用在其他重要資訊操作的表單中《需要考慮可用性】
# 二,JAVA的安裝遇到的問題
Java三大版本
Write Once,Run Anywhere
JavaSE: 標準版 (桌面程式,控制台開發…)
JavaME: 嵌入式開發 (手機,小家電…),已經涼了
JavaEE: E企業級開發 (Web端,服務端開發…),JavaSE為基礎
安裝開發環境
卸載JDk
刪除Java安裝目錄
刪除環境變數JAVA_HOME
刪除path下關於JAVA的目錄
Java -version
安裝JDK
百度搜索JDK8,找到下載地址
同意協議,下載電腦對應的版本,如64位作業系統下載 jdk-8u281-windows-x64.exe
雙擊安裝JDK
記住安裝路徑
配置環境變數
我的電腦-》屬性-》系統高級設置-》環境變數
系統變數 新建–> JAVA_HOME 輸入對應的jdk安裝路徑
path變數–>% JAVA_HOME%\bin
測試是否成功 cmd–>Java -version
J
自此,我的問題解決成功
# 三,文件上傳漏洞(二)
一,%00截斷和00截斷
二,靶場闖關
三,條件競爭
strrposs用函數,在於截取後綴,if:判斷 (inarray)是否匹配 到數值並執行程式碼,相反則執行else tmp:臨時 HEX:查看網頁傳參的十六進位程式碼
截斷:有一個終止符
1.php.jpg=>作業系統 1.php終止符號.jpg=>白名單檢測 jpg
move_uploaded_file()移動文件
點擊上傳=>臨時目錄=>移動出來重命名
黑名單不安全,白名單(不一定安全)
點是連接符,/:路徑,rand(10,99)=>隨機值10-99隨機選擇一個
date(「YmdHis」)=>時間日期
把圖片直接塞入資料庫:
圖變文字,文字變圖
URL編碼=>%××××
GET可以接受URL編碼,而POST不能
//www.bejson.com/convert/ox2tr/ (做滲透,去截斷)
對一句話檢測:
一句話木馬改後綴名
渲染圖片,檢測圖片類型,圖片內容
圖片馬(圖片+一句話木馬)
/b:二進位複合 copy 1234.jpg/b+1.php 2222.jpg
gif繞過 不會去渲染前面幾行的程式碼 png繞過(操作起來很麻煩)
# 四,站長新動力
不能直接用控制台
然後在上面的網址com後填上?url="><script>alert(1)</script>//(標籤法)
大小寫:<Script>alert("en")</script>
事件法:<img src=1 οnerrοr=alert(1)>
偽協議法:<a href='' οnmοusemοve=alert('en')>click</a>
1)//:這個是協議,也就是HTTP超文本傳輸協議,也就是網頁在網上傳輸的協議。
2)www:這個是伺服器名,是指在網際網路上以超文本為基礎形成的資訊網。
3)php.cn:這個是域名,是用來定位網站的獨一無二的名字。
4)www.php.cn:這個是網站名,由伺服器名+域名組成。
5)/:這個是根目錄,也就是說,通過網站名找到伺服器,然後在伺服器存放網頁的根目錄
6:)article.html:這個是根目錄下的網頁
牢記知識點:rul接受用戶的輸入,get方式
# 五,手工注入
墨者靶場
是否有注入點,and 1=1網頁沒有變化, and 1=2網頁變化。
我們發現這裡存在sql注入
接下來進行排查欄位數,使用 order by 語句,開始測試,結果如下:
輸入1時無變化,直接增大到5試試看,如下:
頁面報錯了,證明他低於五個欄位
判斷列數:(有四列)null代替,第五列的時候報錯
利用回顯獲取資料庫名稱
查詢資料庫中的表:
分別查詢兩個表的欄位:(發現stormgroup_member表中有帳號和密碼
查詢stormgroup_member表的欄位:
帳號為:dsan13
密碼為:150046
# 六,文件上傳漏洞
一,客戶端檢測
二,服務端檢測
三,靶場闖關
客戶端校驗:一般是在月頁上寫一段Js腳本,用Js去檢測,校驗上傳文件的後紹名,有白名單也有黑名單。
判斷方式:在瀏覽載入文件,但還未點擊上傳按鈕時便彈出對話框,內容如:只允許上傳jpg/jpeg/.png後綴名的文件,而此時並沒有發送數據包,所以可以通過抓包來判斷,如果彈出不準上傳,但是沒有抓到數據包,那麼就是前端驗證
前薪驗證非常不可靠,傳正常文件改數據包就可以繞過,甚至關閉JS都可以嘗試曉過
墨白名單機制:
思名單:不允許上傳什麼
白名單:只允許上傳什麼
白名單比黑名單更安全
靶場第題://59 63.200.79.8016/Pass-01/ndex.php
用Burp抓包修改
文件上傳=>功能
上傳頭像,上傳照片,上傳文檔
上傳後端腳本,包含惡意語句並且能正常訪問,就可以控制伺服器
黑名單:不允許上傳什麼
白名單:只允許上傳什麼
安全中的概念:
黑名單:不允許名單的XXX
白名單:只允許XXX
白名單安全性要高於黑名單
分散式配置文件:
網站有自己規則:php
特例:如果我存在聽我的 重新定義規則
php=>windows機器里不在意大小寫(可以改後綴大小寫)
空格繞過法:
php php空格 不相同 抓包修改
點繞過法:
抓包修改
Windows文件流繞過:
抓包後綴加::$DATA
###### .php: :$DATA
點空點的組合
雙寫構建:雙寫繞過法
pphphp(抓包修改)(未做循環可用)
沒什麼基礎:PHP+python/golang
有點電腦基礎的:JAVA
比較厲害的:C+彙編
# 七,跨站請求偽造
一,什麼是CSRF?
Cookie代表你的身份許可權 存活周期
同源法則:同ip同埠同協議的屬於同源 共用Cookie
hack.zkaq.cn 1 bbs.zka2
CSRF:偷偷的讓瀏覽器發送數據包
A站點->JS讓你訪問B站點
受害者的瀏覽器上面執行的
B是正常網站,A是黑客搭建危險站點!
## (二)CSRF靶場演示
CSRF:防禦方式:
Cookie裡面有。傳參裡面有,要求對應才生效
Cookie=token=nf
Token一串隨機值
(Cookie和Token要求對應)
token=nf;newpasswd=123456
A=>B csrf永遠不知道目標的Cookie
利用JS自動提交數據
通過Burp的工具生辰攻擊數據包
是針對你本地。修改參數
1,傳參地址要修改,肯定要寫到目標傳參
2,傳參內容,文件寫入的路徑
CSRF和xss有什麼區別:
CSRF:利用Cookie,但是無法獲取Cookie xss:獲取Cookie
雞肋漏洞組合拳:
CSRF self-xss :=>CSRF和反射型xss搭檔的時候會產生很不
錯的效果
a.nf.com
後台存在反射性xss 直接打一個xss 並訪問它
# 八,XSS原理與解剖
SQL注入 =>用戶輸入的數據被當作SQL程式碼執行
XSS => 用戶輸出的數據會被當做前端程式碼執行
XSS:偷取用戶的身份憑證
HTTP他是無狀態無連接的協議
Cookie:通行證
document.cookie
JS操縱:
1、讀取資訊
2、可以發起請求(ajax 非同步傳輸)
讀取Cookie將Cookie發送出去成了一個攻擊手法
遊覽器法則:同源策略 同源性法則
同源:同協議 同域名/ip 同埠
XSS能竊取到的Cookie只能讀取當前觸發頁面同源下的Cookie
XSS三大類型:
反射型:非持久性生效的攻擊,僅僅作用一次(目標必須主動輸出惡意語句)
儲存型:惡意語句會被儲存住,別人訪問顯示的頁面就會中招
Dom型
XSS如何被觸發:
用戶輸出的數據被當作前端程式碼執行(JS程式碼)
JS程式碼有三種觸發方法
1、標籤法:<script></script>
2、偽協議法:小眾協議叫做偽協議(自定義協議)
javascript:
<a href=javascript:alert(1)>123</a>
3、事件觸發法:on 專門表示事件(事件加在標籤內)
## DOM型和反射型有什麼區別?
XSS就是XSS。所謂「存儲型」、「反射型」都是從黑客利用的角度區分的。對於程式設計師來說意義不大,反而是誤導。只有「DOM-based」型略有不同。
XSS、SQL injection之類的漏洞,原理都是破壞跨層協議的數據/指令的構造。
如SQL注入,涉及應用層和資料庫層。協議是SQL查詢語言。對於應用層來說,一句sql是數據(字元串);對於資料庫層來說,一句sql是指令。sql注入的原理,就是破壞sql的構造。防禦的方法,就是用參數查詢(現代所有的資料庫驅動的api一定包含了)而不是自己拼sql字元串。這個已經是所有後端工程師的基本常識了。
而XSS,兩個層次是伺服器端和瀏覽器端。協議就是HTML/CSS/JavaScript。對於伺服器端來說,html是數據(字元串);對於瀏覽器端來說,html是指令。XSS的原理,就是破壞html/css/js的構造。
防禦的方法,一般認為是正確escape,就是替換尖括弧、引號等特殊符號。
但是這是不夠的,因為這隻解決了html的問題。考慮如下:
<script>var name = '<?= $name ?>';</script>
這程式碼顯然有XSS隱患。
那麼我們escape一下,是不是就好了?
<script>var name = '<?= htmlspecialchar($name) ?>';</script>
很遺憾這樣是沒用的。因為這裡是javascript輸出點,xss破壞的目標是破壞js構造而不是html構造。html構造中的關鍵字元是尖括弧、雙引號、「&」符號等。而js構造就複雜了,比如換行、注釋(//和/*)、引號(包括單引號)等都會改變構造。
為了確保js構造的正確,應該:
<script>var name = <?= json_encode($name) ?>;</script>
不過這還是存在一個漏洞。(作為一個簡單的習題留給同志們。)
【另外PHP不同版本的json_encode的行為不一致,幾乎都有問題,雖然不至於直接XSS,但存在被利用的可能。】
顯然,PHP沒有提供比較便利的方式來確保程式碼的安全,這是那個年代(199x)伺服器端腳本技術的通病。遺憾的是,web技術發展到今天,即使是常見的現代Web模板,大多提供了默認的html escape,但對inline script中的XSS防禦就乏善可陳了。
## 一,被攻擊的對象不同
## 二,解析位置不同
## 三,存儲時間不同
## 四,允許輸入點不同
# 反射型與存儲型的區別:
## 記錄不經過後端
# 資訊收集都有哪些:
## whois(微步),網站架構,dns資訊(通過查找dns可以檢測到是否有子域名收集),子域名搜索,敏感目錄及敏感資訊,源碼泄露,脆弱系統(網路空間),旁站查詢,C段查詢,指紋資訊,埠服務,備案資訊,真實IP,探測waf,社工(朋友圈,空間,求職等),企業資訊(天眼查,企業信用資訊公式系統)
##