日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

中国婚博会PHP高级工程师、安全顾问汤青松:浅析Web安全编程

發(fā)布時間:2023/12/15 php 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 中国婚博会PHP高级工程师、安全顾问汤青松:浅析Web安全编程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

11月18號,2017看雪安全開發(fā)者峰會在北京悠唐皇冠假日酒店舉行。來自全國各地的開發(fā)人員、網絡安全愛好者及相應領域頂尖專家,在2017看雪安全開發(fā)者峰會匯聚一堂,只為這場“安全與開發(fā)”的技術盛宴。

曾問過一位搞 Web 安全的人為什么 PHP 是世界上最好的語言,他的回答是 PHP 網站漏洞多,有飯吃。結合目前黑灰產業(yè)中借助 Web 漏洞進行各種薅羊毛的現(xiàn)狀,不禁觸發(fā)了我們的深切反思。問題究竟出在什么地方,為什么網站會存在 SQL 注入、XSS 跨站、CSRF 這些漏洞,我們應該如何避免在代碼中產生這些錯誤?中國婚博會PHP 高級工程師、安全顧問湯青松為我們帶來了《淺析 Web 安全編程》主題演講。作為開發(fā)人員你會發(fā)現(xiàn)其中有許多點值得我們學習借鑒,安全問題必須引起每一位開發(fā)者的重視。

中國婚博會PHP高級工程師 湯青松

湯青松,中國婚博會PHP高級工程師、安全顧問。擅長安全測試工具的研發(fā),Web滲透測試,在處理Web漏洞中積累有大量經驗,2014年任職于烏云,負責眾測開發(fā)工作;2015年在網利寶擔任研發(fā)以及安全建設。目前正專注于PHP的編碼安全,PHP安全編碼方面的書籍正在撰寫中。常常活躍在SegmentFault講堂以及GitChat,多次分享了Web安全方面的議題。曾在2017 PHP開發(fā)者大會上發(fā)表演講《PHP安全開發(fā):從白帽角度做安全》。

以下為演講速記:

湯青松:非常高興跟大家交流這個看雪編碼的問題,我是湯青松。說到安全開發(fā)的話題,其實我一直是開發(fā)者,開發(fā)我是專業(yè),安全我是業(yè)余,但是安全開發(fā)我還是專業(yè)的。在場的各位,對于關鍵詞都有清晰的了解,我列舉了一些安全的關鍵詞,我們先來看一下。常見代碼注入、CSRF、O元支付、短信轟炸這些都是非常常見的漏洞,今天由于時間關系我講不了那么多,我列舉其中幾個點跟大家分享一下,希望大家聽了以后可以舉一反三,在大腦中形成自己的安全意識,從而提高這個安全編碼的能力。

常見漏洞有哪些?

今天要分享的是五個點:SQL注入、XSS跨占,請求偽造,越權漏洞以及支付漏洞。

SQL注入

我們看一下SQL注入,首先是漏洞成因,攻擊方式以及防御方案。漏洞成因我們可以這兩句話,使用用戶參數拼接這個SQL語句,這個參數改變了原有的SQL結構,改變了這個SQL的注入。我們看下面一張PPT,左邊這是一個數據庫,白色部分的字體是我們在代碼中寫到的SQL結構,黑色部分就是攻擊者可能會傳入的參數。當我們把這個SQL結構拼接出來之后形成了一個新的結構,這個結構被執(zhí)行之后把整張表所有的數據傳輸出來,數據庫比較大的訪問更多請求,整個可能就掛了,還造成一些數據泄漏的情況,這些就是SQL的注入成因,參數改變了原有的SQL結構。

攻擊者通常有哪幾種攻擊方式?我把它分為了三種類型:一種是回顯注入,一種是報錯注入,一種是盲注。

這里面有兩張圖,第一張圖是傳入ID是正常的正型數字,返回的結果是用戶的一個信息傳入ID等于1,上面把這個參數修改了一下,等于1,然后加了 or 1=‘1,當它拼接到之后,跟前面一樣把整個表的數據傳輸出來,這邊看到整個用戶表的數據都被列舉出來了。利用漏洞可以改變這個頁面的數據我們叫做回顯注入,這個黑客可以直接把這個數據下載下來。

報錯注入,這張圖非常清楚可以看到URL上面這個部分是正常URL加上攻擊者利用的供給代碼,其實這上面的供給代碼也是執(zhí)行不了,放到數據庫當中,最后會造成數據庫變?yōu)楫惓4a,然后把異常碼拋出來了,把這個用戶名展示出來了,這是非常敏感的信息,我們寫代碼的時候需要把這個數據庫拋出來的錯誤屏蔽掉,不要可以讓前臺顯示出來,通過報錯顯示了一些敏感信息,我們稱之為報錯注入。

盲注,連接起來稍微可能復雜一點,它和回顯注入以及報錯注入不一樣,我們沒有辦法通過這個頁面數據看到它的區(qū)別,可以通過兩種方式,比如說步爾盲注和時間盲注,下面的部分是正常URL,紅色部分是布爾注入的表示式,前面加一個and截取一個字符,判斷一下這個第一個字符是不是大于這個字母A,如果當它成立整個條件都是成立,這個時候頁面是有反饋數據的。如果不成立這個頁面返回不了數據,這就是布爾數據,我們可以看到有數據和沒有數據的情況,當字母A不斷變換的時候,也可以把這個數據庫里面的數據猜測出來。時間盲注,下面藍色區(qū)域部分,我們知道數據庫里面可以用一些IF函數,也是截取第一個字符,如果這個不成立就到五秒鐘返回,通過這個頁面返回的時間可以判斷這個地方是不是有注入的,也可以把這個數據都給下載下來。

剛剛說到攻擊者碰到三種攻擊方式,下面看一下怎么樣檢測頁面當中有沒有什么注入?現(xiàn)在有非常多的工具,如果對注入了解不是太深,也是有快速檢測的方法。我們可以看到這是一個CMD窗口,上面是我寫到的檢測表達式,Splmap.py以及我們需要檢測的UI,需要有這個注冊點它會告訴你有哪些注入,比如說這個頁面是我在本地測試的結果,它就告訴了有回顯注入、錯誤注入以及一些盲注。

開發(fā)者最關心的就是怎么樣防范服務器的安全?編碼的過程中有三點建議,值得借鑒。1,參數會改變SQL的結構,我們會讓這個參數當中不但有這個SQL的結構,當我知道這個參數是整型的時候,我們就把這個參數轉型為整型,整型肯定不包括這個SQL的結構,無法改變結構的目的,哪就不存在著SQL注入。有的時候我們無法預測它傳什么參數,比如說我們去論壇回復一個帖子,我們肯定沒有辦法控制的,這個時候我們可以用PDO預處理,這也是最常見的方法,也是一個最好的方法。但是有的時候我們會寫一些復雜社會語句,我們會會用第一種方法,我們適前定義好這個SQL的語句結構,再把我們的參數放進去,這個時候是無法達到更改SQL語句處理的目的。當這個業(yè)務比較大的時候,這個日志是非常多的,可以找一些SQL的取模軟件,可以把這個取模一下,取模之后并不太多的,如果直接看的話是海量的日志,是沒法看的。

XSS跨站

看一下漏洞成因、攻擊場景以及防御方法。畫了一張圖,上面有一個URL,下面是一個頁面返回的HTML代碼,我們可以看到白色部分HTML是我們事先定義好,黑色部分參數是想用戶想搜索的關鍵詞,當我們搜索了test+Div最后等于123,對后反饋頁面一般搜索會告訴你用戶搜索了什么關鍵詞,結果如何等等。這個地方如果沒有做好轉移,可能會造成XSS跨3(音),我們可以看到藍色部分是我們事先定義好的結構,被攻擊者利用之后它先把這個DIV結束了,最后加上一個script標簽,它也有可能不跟體談標簽,直接發(fā)送到它的服務器上。參數未經過安全過濾,然后惡意角本被放到網頁當中被執(zhí)行了,用戶瀏覽的時候執(zhí)行了這個腳本。

XSS也分好幾種類型,比如說這里有三種類型,反射型、存儲型以及DOM型。

反射型:這個截圖當中是專門訓練一些WEB漏洞的練習頁面,我們可以輸入自己的名字,輸入之后會把我們的名字在這里顯示了出來,我們輸入了一個張三,這個時候彈出來了一個123,在那邊顯示了一個張三,但是script標簽沒有出來,因為這個標簽被執(zhí)行了。

接著來說說存儲型的漏洞,存儲型的XSS,我們可以看一下這個URL上面并沒有代碼,但是依然彈出了一個“1”其實也是中了XSS代碼,這是怎么樣做到的?我看了漏洞的帖子。它是發(fā)現(xiàn)個人資料頁的時候有一個XSS漏洞,它就在個性簽名的位置填入了一個XSS標簽,彈出了一個1,把這個地址發(fā)給了別人,別人看到這個地址并沒有什么代碼以為這個頁面是安全,結果一打開就插入了這個XSS代碼。存儲型的XSS的攻擊危害比較大,因為它的頁面當中是看不到這個Script的代碼,別人防不勝防。只要管理員沒有發(fā)現(xiàn),下一個用戶或者下一個用戶一直接發(fā)它的,反射型需要用戶主動點擊的。

還有一種是Dom型的XSS,一般是一些有安全意識的開發(fā)者弄出來。比如說接受參數會做一些過濾,把一些字符轉義一下,但是轉義之后依然會存在著XSS的情況,比如說這個圖上我們上面輸入的可以看到這行代碼奪了規(guī)律,把這個大括號以及小括號以及雙頁號進行轉移,按理說轉移之后它應該不會再作為它的標簽存在,不會存在XSS的代碼。我們可以看到下面在Script通過ID獲得的這個值,復制到了這個DIV上,經過DOM操作之后,之前轉義的字符就變?yōu)榈乃臉撕?#xff0c;所以經過DOM的操作XSS我們稱之為DOMXSS,有可能通過URL傳播,也有可能通過服務器的傳播。

通過XSS有一些建議:有一些時候根本就不需要考慮到它是不是HTML有標簽,我們有的時候根本用不到HTML標簽,只保留文字部分這是一勞永逸的,但是有一些我們還是需要展示這個標簽,比如說程序論壇當中我要貼一個代碼不能把這個代碼部分干掉,這個時候我們需要用一些轉移,它會把這個大括號、小括號以及雙引號都可以做一個轉意,做為一個字符,就無法執(zhí)行這個標簽型,后面加一個參數,有時候單引號也會造成一席XSS。一個信號當中有那么多的地方存在著這個輸入以及檢測的地方,可能就有一些地方漏掉了,只要有一個地方漏掉了,用戶的cookie信息就被盜取了。服務器發(fā)生用戶信息的時候我們需要加上一個httponly之后,這個代碼無法讀取到cookie的信息,那么攻擊者也是得不到這個信息的,對于用戶來說也是非常好的保護。比如說張三在我們網站上登陸了一下用戶明,李四他特意發(fā)生了一個攻擊請求,他拿不到這個用戶ID,就冒充不了這個張三。

越權漏洞

我們再來看看越權漏洞,在一些系統(tǒng)當中如果存在著多種用戶角色,每一種角色有不同的權限。操作業(yè)務適合如果權限不嚴格可能會發(fā)生越權漏洞。越權分為垂直越權和平衡越權。

我們先來看一下平行越權。經常在WEB系統(tǒng)當中有商城,這個商城當中必不可少就有訂單,訂單肯定是有一個店鋪ID,我們通常把它設置為一個自增長的ID,這個ID是一個數字型的,在URL上面如果我有一個訂單ID就是100,我是一個攻擊者我會嘗試一下,100+1,當它ID等于101或者99的時候能否訪問到,如果能否訪問到就看一下這個訂單信息不是我的,這個地方就存在著一個漏洞。張三可以看到李四的訂單信息,這個時候就存在著越權。張三和李四是平級的用戶,我是普通用戶,他也是普通用戶,他們兩個權限是一樣,互相可以看平臺信息這叫做平級越權。這個有什么危害?比如說這個網站有的漏洞,如果是競爭對手他就可以知道用戶在我的平臺上下過訂單的行為,然后去營銷一下,還有一下我們把這個訂單ID直接暴露出來,還有一種可能就是競爭對手會根據我們的訂單IP的增長量,判斷我們的增長量,就知道我們一天到底有多少訂單。

平行越權防御方法,我們查詢的時候必須加上當前用戶的ID,就是orderID加上UID,這樣不會出現(xiàn)張三可以看到李四的訂單了。

接下來我們再看一下垂直越權,這是一個普通用戶進入到后臺管理系統(tǒng)當中,他的權限就擴大化了,這個時候可以一些其他的操作,他有更多的權限了,通常發(fā)現(xiàn)這種情況原因,通常后臺會集成到更多的控制器來統(tǒng)一管理。依然有一些郵件就漏掉了,沒有集成到,就會出發(fā)這種情況。黑客不會一個一個找,會通過一些掃描器發(fā)現(xiàn)了,他就可以進去了。不要把自增長ID暴露出來,可以做對稱加密或者非對稱加密都可以,先轉換為一個字母型的,讓別人看不到你的數字型的ID是多少。別人就沒有辦法去通過這個加一減一的方式越權,也看不到你的一天業(yè)務增長量。

我看到一些代碼在前臺和后臺會供應到長接口,前臺和后臺是有一些區(qū)別,前臺有一個訂單列表不會+UID,造成代碼一直寫寫,前臺也不會加入這個UID,我建議盡量把這個前臺的方法和后臺的方法區(qū)分開來。越權,其實不僅僅限于展示,我們剛剛看到了這個訂單,張三可以看到李四的訂單信息是查看,但是有的時候我們修改訂單的時候也會主線這個問題。所以在讀寫的時候我們都需要注意一下這個越權的問題。

CSRF跨站請求偽造

CSRF,這個通常會配合XSS使用。服務端錯把瀏覽器發(fā)起的應請求當用戶發(fā)起的請求,會造成XSS的問題。比如說我打開了張三的網站,登陸了一個用戶信息,李四網站上有一個攻擊代碼,向張三這個網站發(fā)起請求,張三的網站會以為你本人發(fā)起的請求,他實際上是瀏覽器發(fā)出的請求。

比如PPT中有一張圖片,圖片有一個表單,左邊是它的源碼,我們可以看到表單每一項都在,但是從安全的角度上考慮它是少了一樣東西,沒有一些驗證碼或者TOKEN等等一些相關信息。服務端如果沒有驗證這個問題,就會造成這個CSRF的攻擊。如何檢測我們的系統(tǒng)當中是否存在這個CSRF?

可以去掉token信息看一下能否提交,把Referer能否提交成功,以及替代POST請求,如果都存在它就存在著CSRF。我們有一些建議,一定要驗證Reeferer信息,Token的驗證,圖片驗證碼等等。根據我們的業(yè)務安全等級越高,最基礎的我們可以用這個refefe需要驗證,再高一級就是token,再高一級就是圖片驗證。

支付漏洞

接著我們來看看支付漏洞,在這張圖中,我搜索了”漏洞 低價 線報”,搜索到一批QQ群; 我嘗試加入過這些QQ群中觀察,在群中看到有人在賣低價支付購買商品的漏洞,在跟其中的一個群友哪里了解到有很多做黑產的會把一些漏洞的信息賣到群里面去,其他的人就會去把這個漏洞給利用起來。

之前看到一個新聞,有一個浙江的老板,他想做線上找人做了一個網站,這個網站存在著一些支付漏洞,一周之后他發(fā)現(xiàn)這個訂單量極速上升,賣了70多萬,結果看了一下帳戶余額只有幾千塊錢,報警之后才查到原因,但是貨物已經發(fā)出去了。造成這些漏洞原因有很多,比如說支付金額是由前端提交的數據,不是后端計算的,而且沒有對這個金額做校驗,直接信任的前端提交的金額,導致這個攻擊者可以隨即修改這個金額,比如說修改為一分錢,這是非常典型的可以隨意更改這個金額。

上面的金額是94元,這個表單里面改為一分錢,最后提交的時候是一分錢,這是非常好的漏洞,也是非常典型的。

還有一個問題是數量的限制,一個價格是26元,一個是27元,把這個數量變?yōu)樨撘恢?#xff0c;一提交變?yōu)橐粔K錢了。這是之前數據包的漏洞,他充值了一塊錢,他發(fā)現(xiàn)有一個數據包向網站發(fā)送,他就把這個數據包反復重放,就加了好幾次,實際上只充值了一塊錢。

如何防范?我們限制這個低價購買產品,比如說負數的時候肯定不行,等于零的商品的根據業(yè)務情況也是需要多注意的。限制免費商品獲得金錢和積分的情況。有一些商品免費了,但是它可以獲得一些積分,那就存在著刷積分的情況。

最后這個腦圖這是我畫的這次講解的內容,大家可以下載看一下。我的演講到此結束。

注:本文根據大會主辦方提供的速記整理而成,不代表CSDN觀點。

2017看雪安全開發(fā)者峰會更多精彩內容:

  • 2017看雪安全開發(fā)者峰會在京召開 共商網絡安全保障之策
  • 中國信息安全測評中心總工程師王軍:用技術實現(xiàn)國家的網絡強國夢
  • 興華永恒公司CSO仙果:Flash之殤—漏洞之王Flash Player的末路
  • 威脅獵人產品總監(jiān)彭巍:業(yè)務安全發(fā)展趨勢及對安全研發(fā)的挑戰(zhàn)
  • 啟明星辰ADLab西南團隊負責人王東:智能化的安全——設備&應用&ICS
  • 自由Android安全研究員陳愉鑫:移動App灰色產業(yè)案例分析與防范
  • 騰訊反病毒實驗室安全研究員楊經宇:開啟IoT設備的上帝模式
  • 綠盟科技應急響應中心安全研究員鄧永凱:那些年,你怎么寫總會出現(xiàn)的漏洞
  • 騰訊游戲安全高級工程師胡和君:定制化對抗——游戲反外掛的安全實踐
  • 綠盟科技網絡安全攻防實驗室安全研究員廖新喜:Java JSON 反序列化之殤
  • 阿里安全IoT安全研究團隊Leader謝君:如何黑掉無人機

總結

以上是生活随笔為你收集整理的中国婚博会PHP高级工程师、安全顾问汤青松:浅析Web安全编程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。