Sentry 在 2023 年 11 月 9 號時,在部落格上發布了這篇文章:Next.js SDK Security Advisory - CVE-2023-46729,內容主要在講述 CVE-2023-46729 這個漏洞的一些細節,包含漏洞成因、發現時間以及修補時間等等。
雖然說是在 11/9 正式對外發布漏洞公告,但漏洞其實在 10/31 發佈的 7.77.0 版本已經修復了,有預留一些時間給開發者們來修補漏洞。
接著就來簡單講一下這個漏洞的成因以及攻擊方式。
Sentry 在 2023 年 11 月 9 號時,在部落格上發布了這篇文章:Next.js SDK Security Advisory - CVE-2023-46729,內容主要在講述 CVE-2023-46729 這個漏洞的一些細節,包含漏洞成因、發現時間以及修補時間等等。
雖然說是在 11/9 正式對外發布漏洞公告,但漏洞其實在 10/31 發佈的 7.77.0 版本已經修復了,有預留一些時間給開發者們來修補漏洞。
接著就來簡單講一下這個漏洞的成因以及攻擊方式。
這兩場比賽都有很多很有趣但也很難的題目,被電得很慘但也學到不少。
關鍵字列表:
這兩場都有稍微參加一下,但不是每一題都有看,這篇純粹做個筆記而已,稍微記一下解法,不會太詳細。
老樣子,筆記一下關鍵字:
我在 Intigriti 的每月挑戰中出了一道 XSS 的題目,被我稱之為「Math jail」,連結如下:https://challenge-0823.intigriti.io/
而現在挑戰結束了,因此這篇文章就來講講出題的想法跟解法。
前陣子忙著旅遊,沒什麼時間在打 CTF,就算有打也有點懶得寫 writeup,導致上一篇 writeup 已經是 3 月份的時候了。覺得這樣斷掉其實有點可惜,就趕快再寫一篇補回來。
標題提到的這三個 CTF,我只有打 GoogleCTF 2023,其他兩場都只有稍微看一下題目而已,所以這篇也只是對題目以及解法做個筆記。
關鍵字列表:
原本是想用開發者的角度寫一篇,但最近沒什麼時間,先寫一篇用 CTF 角度來記錄這個問題,以後有時間再補上用開發者角度寫的。
簡單來說,這篇講的是使用以下 pattern 會造成的問題:
const express = require('express')
const app = express()
const port = 3000
app.set('view engine', 'ejs');
app.get('/', (req,res) => {
res.render('index', req.query);
})
app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
})
Regular expression,中文又翻作「正規表達式」或是「正規表示式」等等(以下簡稱 regexp),主要是用來做字串的配對,寫好一個模式之後,就可以拿來配對到符合規則的文字。
無論是電話號碼、Email 或是身分證字號等等,都可以運用 regexp 來完成初步的格式驗證,確保字串的格式與特定規則相符合。
Regexp 雖然方便,但沒寫好的話有可能導致一些輸入的驗證被繞過,演變成資安問題;而除了這個之外,還有另外一種也會造成問題,就是這篇要來講的 ReDoS,全名為:Regular expression Denial-of-Service,因為正規表達式所引起的阻斷服務攻擊。
前面幾篇我們講的都是靜態分析的東西,也就是說我們並沒有把 app 跑起來,只是透過反編譯出來的程式碼研究 app 運作的邏輯,並且修改程式碼後重新打包執行。
而動態分析指的就是我們會把 app 跑起來,並透過一些方式讓我們可以 hook 各種方法,去監視某些 method 的輸入以及輸出,甚至是竄改。
這篇就讓我們來學習該怎麼樣使用 Frida 進行動態分析。
我記得在我剛接觸 Android 沒多久的時候,要看 app 到底發了哪些 request 是很簡單的一件事情。只要在電腦上面裝個 Charles,接著設定手機上的 Wifi,讓它 proxy 到電腦上,然後輸入特定網址下載 Charles 提供的憑證,安裝完成以後就搞定了。
但前陣子用了一樣的流程,雖然有聽到一些封包,但從 app 出來的流量卻是空的,上網找了各式各樣的解法之後都行不通。
最後我才知道,原來是 Android 在 6.0 以上改變了安全性的設定,預設就不相信使用者自行安裝的憑證,所以才會攔截不到。有種做法是裝個 local VPN,這樣流量就會全部都過 proxy,但我試過以後發現還是有點麻煩。
在眾多方法之中,我試過最有用的方法,就是把 apk 拆開,改一些設定之後再裝回去,這篇就來記錄一下流程跟心得。
在第一篇當中我們學到了基礎中的基礎,靠著 Apktool 把 apk 拆開,修改資源以後組裝回去,並且把對齊且簽署過的 apk 裝回手機上面。
而接下來的這一篇,我們要來看看如何修改程式碼。
我們的目的是在一台有 root 的手機上繞過檢查,讓 app 顯示沒有 root。如果你是用沒有 root 的手機來測試的話,你可以反過來,將 app 改成會偵測出你有 root。