整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          Etherpad文本編輯器中的代碼執(zhí)行漏洞

          Etherpad文本編輯器中的代碼執(zhí)行漏洞

          Etherpad是一個開源的,基于Web的在線文本編輯器,它允許實時協(xié)作處理文檔。Etherpad擁有250多個可用插件并具有版本歷史記錄和在線聊天功能,用戶可以使用插件進(jìn)行自定義。Etherpad非常受歡迎,在全球擁有數(shù)百萬活躍用戶。

          研究人員在Etherpad 1.8.13中發(fā)現(xiàn)了兩個關(guān)鍵漏洞。其中一個是XSS跨站腳本漏洞(CVE-2021-34817),另一個是參數(shù)注入漏洞(CVE-2021-34816)。攻擊者可以組合利用這兩個漏洞,以完全接管Etherpad實例及其數(shù)據(jù)。


          影響

          XSS跨站腳本漏洞(CVE-2021-34817)允許攻擊者接管Etherpad用戶(包括管理員),可被用于竊取或操縱敏感數(shù)據(jù)。參數(shù)注入漏洞(CVE-2021-34816)允許攻擊者在服務(wù)器上執(zhí)行任意代碼,攻擊者可以竊取、修改或刪除所有數(shù)據(jù),或針對可從服務(wù)器訪問的其他內(nèi)部系統(tǒng)。

          攻擊者可以在默認(rèn)配置的Etherpad實例上,利用XSS漏洞獲得管理員權(quán)限。之后結(jié)合利用參數(shù)注入漏洞(CVE-2021-34816),從而在服務(wù)器上執(zhí)行任意代碼。

          聊天消息中的持久性XSS(CVE-2021-34817)

          Etherpad支持在線聊天功能,用戶可以在每個群聊中交換消息。消息存儲在服務(wù)器上,每個人都可以查看聊天記錄。

          當(dāng)用戶打開鍵盤時,聊天消息會在前端渲染,這涉及從該數(shù)據(jù)創(chuàng)建HTML元素。在渲染期間,聊天消息的userId屬性被插入到DOM中,特殊字符沒有被正確轉(zhuǎn)義:

          src/static/js/chat.js

          173    const html =174        `<p data-authorId='${msg.userId}' …> …` +
          175        `<span …`;
          176    if (isHistoryAdd) $(html).insertAfter('#chatloadmessagesbutton');
          177    else $('#chattext').append(html);

          在第174行,userId值被用于構(gòu)建一個HTML標(biāo)記字符串,隨后該字符串在第176和177行被插入到DOM中。如果攻擊者成功控制了聊天者的用戶ID,那么他們將能夠插入XSS有效載荷,并以受害者用戶身份執(zhí)行操作。那么攻擊者如何才能控制用戶 ID呢?

          Etherpad還具有處理多種格式的導(dǎo)出/導(dǎo)入功能,包括基于JSON的自定義格式。這種格式的文件可以包含鍵盤內(nèi)容、它的修訂歷史和所有相關(guān)的聊天消息。然后可以通過導(dǎo)入這樣的文件來創(chuàng)建鍵盤的副本。示例導(dǎo)出文件如下所示:

          example.etherpad

          {    
                  "pad:1": {        
                       "chatHead": 0    
                  },    
                  "pad:1:chat:0": {        
                      "text": "Hello World!",        
                      "userId": "aE45C6209"    
                  }
          }

          某些值在導(dǎo)入期間會被驗證,但聊天消息的用戶ID將按原樣使用。由于導(dǎo)入功能默認(rèn)啟用,攻擊者可以使用該功能創(chuàng)建一個帶有用戶ID的聊天消息鍵盤,用戶ID由任意數(shù)據(jù)組成。

          當(dāng)該數(shù)據(jù)包含HTML標(biāo)記時,然后將標(biāo)記插入到DOM中,DOM將執(zhí)行任何內(nèi)聯(lián) JavaScript代碼。因此,攻擊者能夠?qū)阂釰avaScript代碼注入聊天記錄,然后在訪問鍵盤時在管理員的瀏覽器中執(zhí)行該代碼。這使攻擊者能夠在管理員的瀏覽器上下文中發(fā)起進(jìn)一步的攻擊請求。

          插件管理中的參數(shù)注入 (CVE-2021-34816)

          Etherpad還具有一個管理區(qū)域,可供管理員用戶使用。它允許他們管理插件、編輯設(shè)置和查看系統(tǒng)信息。

          管理員安裝插件時,帶有插件名稱的消息會通過WebSocket連接發(fā)送到后端。后端然后安裝與該名稱對應(yīng)的NPM包:

          src/static/js/pluginfw/installer.js

          49    exports.install = async (pluginName, cb = null) => { 
           …      // ...
          52      try { 
           …        // ...
          56        await runCmd(['npm', 'install', /* ... */ pluginName]);
          57      } catch (err) { 
           …        // ...
          61      } 
           …      // ...
          66    };

          在第56行,插件名稱直接被用作npm install系統(tǒng)命令的參數(shù),沒有進(jìn)行任何驗證或過濾。這使得攻擊者可以從NPM存儲庫中指定惡意包,或者僅使用指向攻擊者服務(wù)器上包的URL。

          攻擊者可以制作一個掛接到Etherpad內(nèi)部的插件,例如創(chuàng)建一個后門API端點,或者只使用一個帶有post-install腳本的包,該腳本將在安裝包后立即執(zhí)行。因此,攻擊者可以執(zhí)行任意代碼和系統(tǒng)命令來完全破壞Etherpad實例及其數(shù)據(jù)。


          總結(jié)

          總而言之,當(dāng)這兩個漏洞被組合利用時,攻擊者可以先使用XSS接管管理員的客戶端,然后通過安裝其所控制的插件來訪問服務(wù)器。

          自動化##Python#

          遇到的需求是這樣的,需要頻繁將htm類型的數(shù)據(jù)轉(zhuǎn)為Excel表格,這是一個重復(fù)性的工作,極大程度上浪費時間和人力,所以我找到了一個解決方案。用Python開發(fā)一個桌面的自動化的小工具,雖然實現(xiàn)起來簡單,但是真心好用。今天特意寫篇文章分享給大家。希望你從獲得的是這個思路,里面的功能你可以換成你工作中重復(fù)的工作。

          一、背景介紹

          首先 htm 數(shù)據(jù)是如下這樣的,一個網(wǎng)址。內(nèi)容在網(wǎng)頁中,這里需要寫爬蟲,獲取網(wǎng)頁中的信息,自動保存到excel ,并輸出excel格式的文件。

          1、需求結(jié)果

          2、解析htm里的內(nèi)容,并保存到excel

          from bs4 import BeautifulSoup
          import pandas as pd
          
          
          class htmToExcel(object):
              def __init__(self, file_name, file_path):
                  self.file_name=file_name
                  self.file_path=file_path
          
          
              def htm_to_excel(self):
                  print(self.file_path)
                  soup=BeautifulSoup(open(self.file_path), features='html.parser')
                  table=soup.find("table")
                  tr_list=table.find_all("tr")
                  th=tr_list.pop(0)
                  title=th.find_all("th")
                  lis=[]
                  for tr in tr_list:
                      data={}
                      td=tr.find_all("td")
                      for i in range(len(td)):
                          data[title[i].text]=td[i].text
                      lis.append(data)
                  df=pd.DataFrame(lis)
                  df.to_excel('{}.xlsx'.format(str(self.file_name).split('.')[0]), index=False)
                  return '轉(zhuǎn)換成功!'
          
          
          
          
          if __name__=='__main__':
              file_name=input("請輸入文件名字:")
              path='C:/Users/cherich/Desktop/' + file_name
              pross=htmToExcel(file_name, path)
              print(pross.htm_to_excel())

          二、設(shè)計窗口

          創(chuàng)建桌面窗口,這里使用tkinter,它是Python 自帶的gui庫,安裝后即可使用。

          1、安裝命令:

          pip install tkinter

          2、利用tkinter完成可視化窗口上傳文件功能:

          from tkinter import Tk, Entry, Button, mainloop
          import tkinter.filedialog
          import htm_to_excel
          from tkinter import messagebox
          
          
          
          def Upload():
              try:
                  selectFileName=tkinter.filedialog.askopenfilename(title='選擇文件')
                  pross=htm_to_excel.htmToExcel(str(selectFileName).split('/')[-1], selectFileName)
                  pross.htm_to_excel()
                  messagebox.showinfo('Info', '轉(zhuǎn)換成功!')
                  root.destroy()
              except Exception as e:
                  print(e)
                  messagebox.showinfo('Info', '轉(zhuǎn)換失敗!')
          
          
          
          
          root=Tk()
          root.title('HTM轉(zhuǎn)Excel小工具')
          root.geometry('+500+300')
          
          
          e1=Entry(root, width=50)
          e1.grid(row=0, column=0)
          btn1=Button(root, text=' 上傳 ', command=Upload).grid(row=1, column=0, pady=5)
          mainloop()

          三、打包exe

          本功能打包成exe的好處是不需要將代碼部署到服務(wù)器,直接將打包好的exe發(fā)給對方,就能直接使用。對于這種小而輕的功能非常友好。

          1、安裝命令:

          pip install pyinstaller

          2、 打開DOS窗口并切換到demo.py文件的目錄,注意路徑不要有中文:





          在當(dāng)前目錄下,會生成兩個文件夾:build和dist。dist里面就是所有可執(zhí)行exe文件,發(fā)送快捷方式到桌面,點擊demo.exe就能運(yùn)行了。

          3、pyinstaller指令的常見可選參數(shù):

          -i 給應(yīng)用程序添加圖標(biāo)
          -F 指定打包后只生成一個exe格式的文件
          -D –onedir 創(chuàng)建一個目錄,包含exe文件,但會依賴很多文件(默認(rèn)選項)
          -c –console, –nowindowed 使用控制臺,無界面(默認(rèn))
          -w –windowed, –noconsole 使用窗口,無控制臺
          -p 添加搜索路徑

          四、該注意的坑!

          如果生成exe之后,你發(fā)現(xiàn)你的程序異常的慢,請檢查你的導(dǎo)包代碼,盡量不要出現(xiàn) from ··· import * ,否則每次啟動程序,都會導(dǎo)入大量函數(shù)占用大量時間,親測有效。


          今天的文章寫到這里,如果你覺得對你有幫助,歡迎點贊哦~

          用Object.prototype.toString.call()方法,檢證JS參數(shù)對象的類型,輸出和用戶交互的信息。


          主站蜘蛛池模板: 中文字幕aⅴ人妻一区二区| 国产在线观看91精品一区| 曰韩人妻无码一区二区三区综合部| 精品一区二区久久久久久久网站| 亚洲视频一区在线播放| 视频在线一区二区三区| 亚洲AV无码一区二区乱子仑| 一区二区三区无码视频免费福利| 夜精品a一区二区三区| 无码人妻精品一区二区三区99性 | 无码人妻品一区二区三区精99| 免费看无码自慰一区二区| 国产精品揄拍一区二区| 亚洲视频一区在线| 亚洲一区二区三区国产精品无码| 久久国产免费一区| 久久青草国产精品一区| 久久精品国产一区| 无码人妻久久一区二区三区| 国模丽丽啪啪一区二区| 国产免费一区二区三区不卡| 少妇人妻偷人精品一区二区| 一夲道无码人妻精品一区二区| 久久国产午夜精品一区二区三区| 视频一区二区三区人妻系列| 无码少妇一区二区浪潮av| 国产精品被窝福利一区 | 波多野结衣AV一区二区三区中文 | 亚洲色偷偷偷网站色偷一区| 97久久精品一区二区三区| 91video国产一区| 在线精品视频一区二区| 欧美成人aaa片一区国产精品| 亚洲一区二区三区国产精华液| 无码喷水一区二区浪潮AV| 极品少妇伦理一区二区| 丝袜人妻一区二区三区网站| 久久精品一区二区东京热| 日韩毛片基地一区二区三区| 天美传媒一区二区三区| 一区二区三区免费视频观看|