亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python怎樣調用jsDES加密

發布時間:2021-12-04 10:42:48 來源:億速云 閱讀:334 作者:柒染 欄目:網絡安全

今天就跟大家聊聊有關python怎樣調用jsDES加密,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

0x00  burpsuite的局限性

今天的滲透工作中黑盒測試遇到一個DES加密的登陸方式,遇到了很多坑,最終是通過python調用js進行des加密入手了這個站。


python怎樣調用jsDES加密

這次的情況是這樣的,當我測試登陸的時候,發現發送登錄請求時,驗證碼時可以復用的,原因是登陸失敗時沒有刷新session的值,導致圖形驗證碼可以復用。測試驗證碼可復用的方法就是burpsuite抓取登陸請求包發送到repeater里面不斷gogogogo,如果提示錯誤是驗證碼錯誤就說明漏洞不存在,但提示賬號或密碼錯誤就說明驗證碼可以復用。


python怎樣調用jsDES加密

美滋滋可以暴力破解,但是看到post的數據是加密的,為什么我知道是DES加密。原因是仔細觀察他的html頁面源代碼。發現這樣一段javascript代碼。

functionencryptByDES(message, key) {

  var keyHex = CryptoJS.enc.Utf8.parse(key);

  var encrypted = CryptoJS.DES.encrypt(message, keyHex, {

      mode: CryptoJS.mode.ECB,

      padding: CryptoJS.pad.Pkcs7

  });

  return encrypted.toString();

}

并且發現開發這把加密密鑰也寫進了html里面,看到發送登陸請求時調用這個des加密函數encryptByDES

python怎樣調用jsDES加密

頁面的js總是處處有驚喜。下面就進入正題說說我的pythondes加密爬坑記

首先第一反應我是想到使用burpsuite進行paylaod處理暴力破解。

以前遇到的一些md5加密,sha1都可以在這里處理payload,然后簡單的就可以進行加密暴力破解了。

python怎樣調用jsDES加密

但是在這里找不到DES、RSA、AES等加密方式,這就是burpsuite的局限性。我們再來看看有什么方法可以進行此加密密碼。

0x02   理解js中的“DES加密”


python怎樣調用jsDES加密

我們理解了他原本登陸的函數,我們可以在瀏覽器F12里的控制臺,就直接可以調用他的加密函數。登陸加密的內容就是這個{"username":"admin","password":"12345678"}

encryptByDES('{"username":"admin","password":"12345678"}','232cb85*************cd354');


python怎樣調用jsDES加密

發現跟登陸請求包的post參數是一樣的。但暴力破解總不可能這樣一次次輸入的。

0x03  pythonDES加密模塊——pydes

然后再想想了,看python有沒有DES的加密模塊的,有的。Pydes模塊,這里有兩個坑點。

這是pydes模塊官方的使用模板

importbase64

frompyDes import *

Des_Key= "12345678" #Key

Des_IV= "" #自定IV向量

defDesEncrypt(str):

   k= des(Des_Key, CBC, Des_IV, pad=None, padmode=PAD_PKCS5)

   EncryptStr= k.encrypt(str)

   returnbase64.b64encode(EncryptStr) #轉base64編碼返回

第一個坑點,我發現這個模塊只有des的ECB和CBC模式加密,并且填充方式只有pkcs5padding,和nomalpadding兩種。我需要的是pkcs7padding!!!!

第二個坑點,正常des加密key固定是8位的,3des加密是16或者24位的。但是,頁面源代碼里給我的是64位!!!什么肥事!!!!無奈之下另外一個想法,去在線加密看看。

0x04  設計DES加密api

到了在線加密,找了三個網站,其他兩個網站都報的是key位數錯誤,真的是要8位才行,但是唯獨這個網站可以。之前再頁面源代碼中可以看到js代碼DES加密方式是ECB模式的,并且是以pkcs7_padding的填充方式,加密過后是跟原來登陸請求包的加密數據是一樣的。


python怎樣調用jsDES加密

并且看到他的查詢數據包,是post需要加密的內容并返回加密過后的密碼的,所以打算使用python寫個加密的api的http請求?然后提取密碼再進行登陸的暴力破解。


python怎樣調用jsDES加密

的確是可以這樣加密暴力破解的。但是當我使用burpsuite快速的重放了這個數據包,就發現這方法不可行。


python怎樣調用jsDES加密


python怎樣調用jsDES加密

除非5秒請求一次。我在不知道賬號不知道密碼的情況下,還猜測不了用戶存不存在的情況下,這種情況是不可取的。(如果存在的用戶返回密碼錯誤。用戶不存在的時候返回賬號不存在,可以根據登陸的返回結果來猜測用戶存不存在)。

Api思路2

我們退一步回到該登陸頁面再看看,當我們訪問登陸頁面的時候,一共額外加載了這幾個js文件。

python怎樣調用jsDES加密

進去看了下真正用于des加密的三個js是如下圖

python怎樣調用jsDES加密

我們可以點擊它然后查看響應可以看到js的代碼,都然后保存到本地,然后可以把他們寫成自己的api。


python怎樣調用jsDES加密

這是把他們加密的js保存下來再自己寫的html頁面(js順序要正確)

<script src="core.js"></script>

<script src="tripledes"></script>

<script src="md5.js"></script>

<script src="mode-ecb.js"></script>

<script type="text/javascript">

function encryptByDES(message, key) {

var keyHex = CryptoJS.enc.Utf8.parse(key);

var encrypted = CryptoJS.DES.encrypt(message, keyHex, {

mode: CryptoJS.mode.ECB,

padding: CryptoJS.pad.Pkcs7

});

return encrypted.toString();

}

</script>

python怎樣調用jsDES加密

于是可以寫到自己網站的一個頁面添加輸入和輸出的標簽,我們直接可以輸入輸出加密結果了,但這還不是最優的解法,這樣的話,還是要請求一次自己的網站再發一次登陸的請求。效率比直接再python加密再暴力破解低了一半!

0x05   python調用js——execjs

最后,我使用了一個python直接可以執行js代碼的模塊,相信除了登陸加密的用途外,其他地方都非常有用。

這個模塊叫execjs,然后把三個加密的js按順序疊加寫到一個文件里就可以了。

首先加密的函數時這樣的,首先讀取加密的js。

defget_js():#這個是獲取js的函數
  f= open('C:\Users\\3s_NwGeek\Desktop\\des.js','r')
  line = f.readline()
   htmlstr = ''
 
whileline:
      htmlstr = htmlstr+line
       line = f.readline()
  returnhtmlstr

這個是加密的函數。先獲取js然后解析js代碼再調用js的函數并傳參就可以返回加密的密碼了。
defDesEncrypt(str,key):#這個是des加密的函數

  jsstr= get_js()#獲取js
  ctx= execjs.compile(jsstr)#解析js代碼
 password=ctx.call('encryptByDES',str,key)#調用encryptByDES函數,并傳參原文str和加密key
 password=(password.encode("unicode_escape").decode("string_escape")).decode('unicode-escape').encode('utf-8')#解碼,解出來是unicode的
  returnpassword

使用原來的原文進行加密,返回的結果是跟原來的請求包一樣的

{"username":"admin","password":"12345678"}

iKUJ1KTtfI4NqIHAf7QQha71W4vil4uLWR1YQREFkJLsx1W/aKLcnt9Ni7PalkpP

0x06 后話

tips最后直接使用協程進行暴力破解,其實事先,我把滲透調研表的聯系人和負責人,還有整個部門的姓名信息,加了進去制作成一個用戶字典。比如說,姓名叫張三豐,那么就會有,zhangsanfeng,zhang_sanfeng,zhang_sf,zsf。然后制作了16個用戶再加常用的admin和root進行大字典的暴力破解。

排坑5小時,暴破5分鐘。

最終激動的顫抖叫出來“yes!!!!!”了

python怎樣調用jsDES加密

其實這個站每個月都會多家廠家做滲透,但也許看到密碼加密了就pass這個方式了,但是當你肯比別人付出更多的耐心,就能比別人看到更多的風景,挖到更多的漏洞。

看完上述內容,你們對python怎樣調用jsDES加密有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

峡江县| 特克斯县| 上犹县| 南川市| 噶尔县| 长春市| 临桂县| 湘阴县| 田阳县| 大方县| 格尔木市| 京山县| 常宁市| 定结县| 江油市| 成都市| 万年县| 吉首市| 牡丹江市| 定南县| 新闻| 昭苏县| 涡阳县| 台东市| 浦北县| 鹿泉市| 章丘市| 什邡市| 大兴区| 舞阳县| 阳山县| 澜沧| 二手房| 厦门市| 余干县| 平利县| 洪泽县| 湖州市| 光山县| 辉南县| 阳原县|