From cf57780f664461727de1ec14963450c4464543b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89mile=20Fugulin?= Date: Wed, 4 Dec 2024 18:29:05 -0500 Subject: [PATCH] Binary guide (#26) * Will continue tomorrow * Will add descriptions tomorrow. * Will finish tomorrow morning first thing. * Will work on actual guide next. * Optimised images with calibre/image-actions * Update * Optimised images with calibre/image-actions * Ready for review. * Optimised images with calibre/image-actions --------- Co-authored-by: ninjeeter <168739736+ninjeeter@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .vitepress/sidebars/concepts.ts | 9 ++ .vitepress/sidebars/guides.ts | 4 + src/_images/raw_byte_example.png | Bin 0 -> 65551 bytes src/_images/replaced_character.png | Bin 0 -> 8099 bytes src/_images/rust_conversion.png | Bin 0 -> 11919 bytes src/_images/utf_chart.png | Bin 0 -> 36158 bytes src/concepts/backend/binary.md | 63 +++++++++++ src/concepts/essentials/tooling.md | 2 +- src/concepts/index.md | 6 +- src/guides/components/request.md | 4 +- src/guides/components/utf.md | 144 ++++++++++++++++++++++++++ src/guides/distribution/repository.md | 6 +- src/guides/distribution/store.md | 2 +- 13 files changed, 233 insertions(+), 7 deletions(-) create mode 100644 src/_images/raw_byte_example.png create mode 100644 src/_images/replaced_character.png create mode 100644 src/_images/rust_conversion.png create mode 100644 src/_images/utf_chart.png create mode 100644 src/concepts/backend/binary.md create mode 100644 src/guides/components/utf.md diff --git a/.vitepress/sidebars/concepts.ts b/.vitepress/sidebars/concepts.ts index 32450de..b78a001 100644 --- a/.vitepress/sidebars/concepts.ts +++ b/.vitepress/sidebars/concepts.ts @@ -10,6 +10,15 @@ export const conceptsSidebar: DefaultTheme.SidebarItem[] = [ }, ], }, + { + text: "Backend", + items: [ + { + text: "Dealing with Binary", + link: "/concepts/backend/binary", + }, + ], + }, { text: "Essentials", items: [ diff --git a/.vitepress/sidebars/guides.ts b/.vitepress/sidebars/guides.ts index c799da1..aea38eb 100644 --- a/.vitepress/sidebars/guides.ts +++ b/.vitepress/sidebars/guides.ts @@ -46,6 +46,10 @@ export const guidesSidebar: DefaultTheme.SidebarItem[] = [ text: "Spawning a Process", link: "/guides/components/spawning_process", }, + { + text: "Using Invalid UTF-8", + link: "/guides/components/utf", + }, ], }, { diff --git a/src/_images/raw_byte_example.png b/src/_images/raw_byte_example.png new file mode 100644 index 0000000000000000000000000000000000000000..a262dd36b975edbf3f1e53c185e1e2cb19e7bf6d GIT binary patch literal 65551 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 literal 0 HcmV?d00001 diff --git a/src/_images/replaced_character.png b/src/_images/replaced_character.png new file mode 100644 index 0000000000000000000000000000000000000000..b248f1e735b7c7712414c153a3f08e7423b89d6d GIT binary patch literal 8099 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 BahL!A literal 0 HcmV?d00001 diff --git a/src/_images/rust_conversion.png b/src/_images/rust_conversion.png new file mode 100644 index 0000000000000000000000000000000000000000..a87f50f6ef5caee2859df4987d3183207e13fd5e GIT binary patch literal 11919 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 literal 0 HcmV?d00001 diff --git a/src/_images/utf_chart.png b/src/_images/utf_chart.png new file mode 100644 index 0000000000000000000000000000000000000000..26d51dc984cd83d19f07059e9b4cccc0aa6c113f GIT binary patch literal 36158 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 literal 0 HcmV?d00001 diff --git a/src/concepts/backend/binary.md b/src/concepts/backend/binary.md new file mode 100644 index 0000000..ff7c5c7 --- /dev/null +++ b/src/concepts/backend/binary.md @@ -0,0 +1,63 @@ +# Dealing with Binary Data + +Caido plugins are written in JavaScript. When creating a plugin that must handle raw bytes, there are some caveats to be aware of as the backend language used by Caido is Rust. + +## UTF-8 Encoding + +For Unicode code points outside of the ASCII range (U+0000 to U+007F) multiple bytes are used. + +When encoding code points into multibyte UTF-8 characters, the bytes are prefixed with specific bit patterns. The first byte prefix indicates how many bytes are used based on the number of leading '1's, and any subsequent (continuation) bytes begin with '10'. + +UTF-8 encoding chart. + +This can be an issue if you want to create a Caido plugin that sends invalid UTF-8 to a target server to see how it is processed. + +For example, if your intention is to append the byte `\x85` (`[1000 0101]`) to a path: + +1. JavaScript strings are encoded using UTF-16 (`[0000 0000 1000 0101]`). +2. When passed to Rust, it is encoded as UTF-8. To produce valid UTF-8, the prefix is added to satisfy the multibyte pattern rules: + - First byte `C2`: `[1100 0010]` (prefix marks start of 2-byte sequence) + - Second byte `85`: `[1000 0101]` (continuation byte) +3. Now, `[1100 0010 1000 0101]` is sent instead of the intended `[1000 0101]`. + +::: tip +You can view this visually by listening for the request with Netcat: + +`ncat -lvnp 5555` + +Unprintable character. + +You can view the bytes by piping `xxd` to display the hex dump: + +`ncat -lvnp 5555 | xxd -g1` + +C2 85 +::: + +## Preserving the Raw Byte + +To avoid the conversion, the raw byte must be used instead. This can be accomplished by: + +1. Taking a request and returning a UInt8Array byte stream: + +`.getPath({raw: true})` + +2. Creating a new array that includes the existing bytes and the added byte: + +`let path = [...spec.getPath({raw: true}), 0x85]` + +3. Setting the path to use this new array: + +`spec.setPath(path)` + +::: tip +Now, `C2` will not be prefixed: + +`ncat -lvnp 5555 | xxd -g1` + +Just \x85. +::: + +## What's next? + +To view the full script and an additional technique that can be used to set raw bytes in Caido plugins, click [here](/guides/components/utf.md). diff --git a/src/concepts/essentials/tooling.md b/src/concepts/essentials/tooling.md index 52e27e2..16263fa 100644 --- a/src/concepts/essentials/tooling.md +++ b/src/concepts/essentials/tooling.md @@ -27,4 +27,4 @@ Once the package is developed, the code is processed by the [Vite](https://vitej The file related to the Vite build tool within the starterkit repository is: -- `vite.config.ts`: This file is a configuration file for customizing the build process. _View the [vite.config.js](https://v2.vitejs.dev/config/) documentation for more information. +- `vite.config.ts`: This file is a configuration file for customizing the build process. _View the [vite.config.js](https://v2.vitejs.dev/config/) documentation for more information._ diff --git a/src/concepts/index.md b/src/concepts/index.md index 30e62fa..088480b 100644 --- a/src/concepts/index.md +++ b/src/concepts/index.md @@ -2,11 +2,15 @@ Here you will find explanations of the core concepts that underpin Caido plugins. +## Backend + +- [Dealing with Binary Data](./backend/binary.md) - Using invalid UTF-8 in Caido. + ## Essentials - [Plugin Architecture](./essentials/package.md) - The structure of a plugin package. -- [Runtime](./essentials/runtime.md) - Javascript runtimes used by plugins. - [Tooling](./essentials/tooling.md) - Tools for the ease of plugin development. +- [Runtime](./essentials/runtime.md) - Javascript runtimes used by plugins. ## Modules diff --git a/src/guides/components/request.md b/src/guides/components/request.md index b4e7c57..9e6c914 100644 --- a/src/guides/components/request.md +++ b/src/guides/components/request.md @@ -138,7 +138,9 @@ By registering a command in the frontend, defining the command to make a backend ``` ts import type { Caido } from "@caido/sdk-frontend"; -import type { API } from "starterkit-plugin-backend"; +import type { API } from "../../backend/src/index"; + +import "./styles/index.css"; export type CaidoSDK = Caido; diff --git a/src/guides/components/utf.md b/src/guides/components/utf.md new file mode 100644 index 0000000..fb8e712 --- /dev/null +++ b/src/guides/components/utf.md @@ -0,0 +1,144 @@ +# Using Invalid UTF-8 + +::: tip +For conceptual information regarding this guide - click [here](/concepts/backend/binary.md). +::: + +## Using a Mutable Proxied Request + +To use invalid UTF-8 in the path of a request that passes through Caido, follow these steps: + +### /packages/backend/src/index.ts + +First import the `SDK`, the interface used to interact with Caido. + +``` ts +import { SDK } from "caido:plugin"; +``` + +Then create a function that takes proxied requests using `onInterceptRequest` and converts them into mutable, un-saved `RequestSpec` objects using the `.toSpec()` method. Next, store the path as a byte array using the spread operator `...`, and append the desired raw byte using `[...spec.getPath({raw: true}), 0x85];`. Update the request with the modified path using `.setPath()` and send the request. + +``` ts +export function init(sdk: SDK) { + sdk.events.onInterceptRequest(async (sdk, request) => { + const spec = request.toSpec(); + let path = [...spec.getPath({raw: true}), 0x85]; + spec.setPath(path); + await sdk.requests.send(spec); + }); +} +``` + +## Using a Newly Created Request + +To use invalid UTF-8 in the path of a `new RequestSpecRaw()` request, follow these steps: + +### /packages/backend/src/index.ts + +First, import the required dependencies. `SDK` is the interface used to interact with Caido. `DefineAPI` is used to structure the API: definining what methods or endpoints are available, the parameters those methods accept and what types of values they return. `RequestSpecRaw` is an object class that is used to create a request in raw byte format. + +``` ts +import { RequestSpecRaw } from "caido:utils"; +import { SDK, DefineAPI } from "caido:plugin"; +``` + +Next, define a function that will convert the path string into an array of bytes. + +``` ts +function stringToUint8Array(str: string): Uint8Array { + const arr = new Uint8Array(str.length); + for (let i = 0; i < str.length; i++) { + arr[i] = str.charCodeAt(i); + } + return arr; +} +``` + +Create an instance of the `RequestSpecRaw` class, by supplying the target URL as the constructor. + +``` ts +async function testSendRequest(sdk: SDK): Promise { + console.log("Testing send request"); + const req = new RequestSpecRaw("http://localhost:5555"); +``` + +Call the `stringToUint8Array` function on the request data to convert it into a byte array. Send the request and if a response is received, print it in plaintext. + +``` ts + const rawRequest = "GET /admin\x85 HTTP/1.1\r\nHost: localhost:5555\r\n\r\n"; + req.setRaw(stringToUint8Array(rawRequest)); + + const res = await sdk.requests.send(req); + console.log(res?.response.getRaw().toText()); +} +``` + +Since we are using a button on the frontend to issue this request, define the `testSendRequest` function as an API call and register it to the backend. + +``` ts +export type API = DefineAPI<{ + testSendRequest: typeof testSendRequest; +}>; + +export function init(sdk: SDK) { + sdk.api.register("testSendRequest", testSendRequest); +} +``` + +::: tip +
+To view the entire frontend script, expand the following: + +``` ts +import type { Caido } from "@caido/sdk-frontend"; +import type { API } from "../../backend/src/index"; + +import "./styles/index.css"; + +export type CaidoSDK = Caido; + +const Commands = { + sending: "my-plugin-page.req", +} as const; + +const sending = async (sdk: CaidoSDK) => { + await sdk.backend.testSendRequest(); +}; + +const createPage = (sdk: CaidoSDK) => { + const requestButton = sdk.ui.button({ + variant: "primary", + label: "Send Request", + }); + + requestButton.addEventListener("click", async () => { + await sending(sdk); + }); + + const bodyContainer = document.createElement("div"); + bodyContainer.appendChild(requestButton); + + const card = sdk.ui.card({ + body: bodyContainer, + + }); + + sdk.navigation.addPage("/my-plugin-page", { + body: card, + }); +}; + +export const init = (sdk: CaidoSDK) => { + createPage(sdk); + sdk.sidebar.registerItem("My Plugin", "/my-plugin-page", { + icon: "fas fa-rocket", + }); + + sdk.commands.register(Commands.sending, { + name: "Send Request", + run: () => sending(sdk), + }); +}; +``` + +
diff --git a/src/guides/distribution/repository.md b/src/guides/distribution/repository.md index 11956f6..d2cfeda 100644 --- a/src/guides/distribution/repository.md +++ b/src/guides/distribution/repository.md @@ -44,7 +44,7 @@ The steps above will create a repository under your own account. If you would like to host your repository under the [caido-community](https://github.com/caido-community) organization instead, you can request a repository on our [Discord server](https://links.caido.io/www-discord). ::: -## 3. Generate a key-pair +## 3. Generate a Key-Pair Plugin packages **must** be digitally signed to be installable in Caido. @@ -76,7 +76,7 @@ The file `private.pem` will contain the following format: -----END PRIVATE KEY----- ``` -### Generate the public key +### Generate the Public Key Run the following command to generate a public key: @@ -94,7 +94,7 @@ The file `public.pem` will contain the following format: -----END PUBLIC KEY----- ``` -## 4. Create a release +## 4. Create a Release Now that your repository and key-pair are ready, it’s time to create a release! diff --git a/src/guides/distribution/store.md b/src/guides/distribution/store.md index 613555c..20fc74b 100644 --- a/src/guides/distribution/store.md +++ b/src/guides/distribution/store.md @@ -55,7 +55,7 @@ Address any required changes and update the GitHub release with the new changes. We will publish the plugin as soon we have verified that all required changes have been addressed. -## Next steps +## What's next? Once your plugin is published, it is time to announce it to the community ✨