网安之php开发第十四天
#知識點:
1、PHP-全局變量$_SERVER
2、MYSQL-插入語法INSERT
3、輸入輸出-XSS_x0005_&反射&存儲
4、安全問題-XSS跨站&CSRF等
演示案例:
?小迪博客-輸入輸出&留言板&訪問獲取
?墨者靶場-IP地址偽造來源&來源頁偽造
先說一下這個輸入輸出引發的反射型xss和儲存型xss
把源碼寫好在瀏覽器打開,就可以模擬輸入輸出(相當于利用查詢語句查詢數據庫里面的東西)。然后當我們輸入一個正常的東西,比如我們輸入1,他就會查詢到后面的pxy之類的。這些都很正常,但是當我們輸入一個js語句之后,你會發現事情變得不一樣了。
?
比如我們輸入<script>alert(1)</script>,他就會執行這個js代碼,所以輸出的你搜索的“”內容如下這句話,雙引號里面沒有東西是空的。因為他執行了。從而出現個彈窗。也就是說輸入的代碼可以控制網站的顯示。因此當我們能夠控制網站的顯示也就代表了漏洞的產生。而執行js代碼就屬于xss漏洞(有一句話說的好,叫見縫就x)這個屬于反射型xss,也是短期的。
?
注解:XSS
cross site script,跨站腳本攻擊(關鍵字:腳本)。為了與 css 沖突取名為 xss!XSS攻擊的核心原理是:不需要你做任何的登錄認證,它會通過合法的操作(比如在url中輸入、在評論框中輸入),向你的頁面注入腳本(可能是js、hmtl代碼塊等)。
惡意攻擊者往Web頁面里插入惡意Script代碼,當用戶瀏覽該頁之時,嵌入其中Web里面的Script代碼會被執行,從而達到惡意攻擊用戶的目的。
?
有短期也就有長期,那也就是儲存型xss,當我們去留言去評論。比如我上一分鐘留下的言,你下一分鐘刷新就可以看到我的留言。這里面涉及兩個動作,一個是留言,一個是刷新。也對應著數據庫的寫入和查詢,也就是insert和select。當你留言之后會,留言的內容會保存到數據庫或則可以保存的文件等。因此每一次刷新就會select查詢一次。那如果把js語句當作留言內容。就會儲存到數據庫中。當我們沒刷新一次就會彈窗一次。這個就是儲存型xss。他是持久型的,危害是比反射性xss大的。
?
然后說一下php的全局變量$_SERVER,直接上圖。內容不全,自己可以去網上搜。
這些全部都是用來獲取訪問者的信息以及服務器的一些信息。
就比如這個$_SERVER['HTTP_USER_AGENT'] #當前請求的 User_Agent: 頭部的內容。你就可以通過它獲取到ua頭。然后去網上看看與之相關的信息。
?
還有一個就是通過這個超全局變量獲取到ip地址,下面是源碼。至于為啥會存在這么多行,都是if嵌套的,是因為它需要判斷你有沒有代理之類的。
那你可能會問講這個有啥用。下面舉個例子。
?
?
?
?
?
?
?
?
就是站長之家的ip查詢,正常情況下,他的ua頭是下面的內容
?
但是當你通過抓包,修改ua頭里面的信息之后就會發現不一樣。(不要忘了弄證書,不然抓不到https的包。具體就是把瀏覽器設置代理之后,訪問http://burpsuit。就可以下載證書了。我這個方法可行,在網上找的有的方法不太行)
?
這里把ua頭里面的信息改成123,就會顯示這樣。如果把123改成個跨站語言。那就是個典型的反射性xss了。本來是可以插入js代碼的。但是被人提交漏洞了,現在這個地方被過濾了,不可以插入js代碼了。這就是個ua欺騙,觸發xss。
這也說明了一個問題,根據網站的功能去看它相應的漏洞。就比如這個ip查詢,是個接口類的查詢的功能行動應用。他的源碼肯定有接受的地方,就像上面的那個代碼,查ip的,查ua頭的,他肯定是要接受才可以給你返回信息。那也就對應著那個輸入輸出的東西了。而網站為啥要接受瀏覽器信息呢。因為有安卓有pc,顯示的版面不太一樣。
因此根據網站的接收功能,他的接受功能越多,那對應的漏洞隱患也就越大。反之越少。
?
?
還有一個就是$_SERVER['HTTP_REFERER']
鏈接到當前頁面的前一頁面的 URL 地址。也就是從哪里跳轉過來的,就會顯示上一個頁面的url地址。
在我們實際場景中。比如你訪問個網站,網站提示來源非法,未知地址之類的,就不讓你訪問。這時候你就要從他的源去訪問,而這個$_SERVER['HTTP_REFERER']就是獲取來源的url地址。下面講個來源頁偽造,就是跟這相關的,其實也就是Referer偽造。
開啟靶場后,正常訪問,提示只能從谷歌訪問這個地址,就是$_SERVER['HTTP_REFERER']它搞得鬼,會獲取來源。
解決方法也很簡單,用burp抓包,把referer對應的地址改成谷歌就行了。
這是原本的:
這是改之后的:
然后就得到了key:
?
?
上面我們說了真實情況下有的網站會提示來源非法,因為這些網站會檢測referer。而這個檢測主要是防CSRF攻擊的。
下面說一下這個CSRF:
如果上圖中的網站沒有檢測來源,那么就會讓攻擊者通過提前植入的js代碼獲得到管理者的管理權限或則獲取到后臺源代碼之類的。
下面說個例子:
用一個賬號向自己的支付寶付款,上面的是付款鏈接。當你打開博客的時候就會觸發訪問這個付款數據包。如果支付寶沒有檢測來源的話。那么直接就付款了。
這個就是CSRF攻擊。
?
注解:跨站請求偽造(英語:Cross-site request forgery),也被稱為 one-click attack 或者 session riding,通??s寫為 CSRF 或者 XSRF, 是一種挾制用戶在當前已登錄的Web應用程序上執行非本意的操作的攻擊方法。跟跨網站腳本(XSS)相比,XSS 利用的是用戶對指定網站的信任,CSRF 利用的是網站對用戶網頁瀏覽器的信任。
?
?
?
?
?
再說一個案例。IP地址偽造的:
先利用弱口令登錄,比如admin admin。登上去發現IP受限制
而像這個網站收集ip信息,一般有兩種情況,一是收集ip做一些統計或干其他的事情。還有一個就是做ip限制。比如一些服務器為了安全,只讓本地的ip去登陸,其他的ip做限制。這樣就可以過濾一些攻擊,就算你得到賬號密碼,但是ip做限制,還是不行的。像這個網站獲取IP,一般都是源碼去獲取
我們上面講過一個源碼獲取ip的圖。里面有個HTTP_X_FORWARDED_FOR,我們就可以通過HTTP_X_FORWARDED_FOR偽造來解題。
注解:$_SERVER[”HTTP_X_FORWARDED_FOR”] #透過代理服務器取得客戶端的真實 IP 地址
通過抓包,把X_FORWARDED_FOR對應的值改成本機地址,就可以偽造。讓服務器以為本機登錄。
最后就得到了key
(這個是小迪老師的截圖,我用burp抓到的包沒有x-forwarded這一欄,我在下面加入進去,結果網站一直轉圈圈,直接gg)
在真實情況下就對應著ip受限制的話,你就可以試著x-forwarded偽造,在數據包中進行修改。但如果對方不接收這個值,也就是說不以這個值為準的話。那就沒辦法了,其他地方也不能進行偽造。只有它可以。但是一般都會用我上面圖片的那個代碼去接收,因為要保證ip的準確性。
這種IP限制走到是php代碼本身去判定,還有一種IP限制是tcp協議的IP限制,就是計算機上面用到的一些IP限制。而只有這個php代碼里面的這個x-forwarded是可以偽造的,并且網站也是接受這個值的。也就可以實現繞過。其他的就不太行了。就像這個電腦的或則服務器的ip限制,他的判定方式是走的底層協議,是繞過不了的。
?
總結
以上是生活随笔為你收集整理的网安之php开发第十四天的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网站被恶意攻击了改怎么办?如何进行防护呢
- 下一篇: 宝宝树全自动引流脚本软件高质量活跃粉丝