Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
dea2afe
Replaced OWASP Top 10 reports with updated PDFs for PR #22
Dec 10, 2024
d1d2758
Added CORS security patch fix documentation
Dec 10, 2024
bde3ecc
Addressing Broken Access Control (Clickjacking) Vulnerability (Docume…
Dec 11, 2024
ed68886
Removing Cors Documention
Dec 11, 2024
ea4928a
Update doubt-web-nginx-config.md - Adding Ports 4200 and 443
epineto Dec 13, 2024
41d6e83
Merge pull request #22 from epineto/feature/owasp-top-10-report
aNebula Dec 21, 2024
01f9633
Merge pull request #23 from epineto/owasp10/cors-security-patch-fix-d…
aNebula Dec 21, 2024
dd460c2
Merge pull request #24 from epineto/owasp/addressing-broken-access-co…
aNebula Dec 21, 2024
a72b69f
Update README.md
aNebula Mar 17, 2025
774059c
fix: replace index logo with transparent background version
lachlan-robinson Mar 17, 2025
3e00e20
SSRF web audit script and documentation
ibi420 Apr 9, 2025
2c821cf
Created SSRF audit script and documentation
ibi420 Apr 9, 2025
56d68a1
Created SSRF audit script and documentation
ibi420 Apr 9, 2025
c25b7f3
Add report.md for passwordpull#18
theiris6 Apr 10, 2025
2e06ac3
- documentation added for tutor times feature - backend
martindolores Apr 12, 2025
b6ebe4b
Add new documentation for Tutor-Times Feature
Apr 13, 2025
20544b8
- update docs to align with requirements
martindolores Apr 14, 2025
63f9e38
Incoporated feedback from the PR review and added the following changes:
ibi420 Apr 16, 2025
5ded89b
docs(tutor-times): add frontend documentation
Apr 16, 2025
c8d1cf9
docs: restore frontend documentation link
Apr 16, 2025
6ee4b30
chore: move images to public folder
Apr 16, 2025
6b20696
Docs/Backend - New Redesign for Tutor Times
martindolores May 5, 2025
853c031
Broken Access Control Audit
theiris6 May 7, 2025
9ae2d76
docs/frontend - New Redesign and requirements for Tutor Times
May 7, 2025
ea3d977
This commit contains documentation on my approach to fixing the malic…
ibi420 May 7, 2025
ec95b2f
Edit to documentation
ibi420 May 7, 2025
df74d93
Revert "Add report.md for passwordpull#18"
theiris6 May 8, 2025
374bc86
-Injection Test file
theiris6 May 8, 2025
a6d8a9c
chore: submit remidation for exposed js source map
lachlan-robinson May 12, 2025
d558cfb
chore: update formatting
lachlan-robinson May 12, 2025
65080df
chore: submit Insecure Token over HTTP remediation
lachlan-robinson May 12, 2025
e7e84c5
chore: seperate joined commits
lachlan-robinson May 12, 2025
6bf2b8b
Modified test script to avoid hardcoded values
theiris6 May 12, 2025
3bbabdb
Script inprovements
theiris6 May 12, 2025
b2fd904
inital commit
Lolretrorat May 14, 2025
211ba91
Immplemented feedbasck from @returnMarcco
ibi420 May 16, 2025
12c9050
Doccumentation on findings of CORS misconfiguration
ibi420 May 19, 2025
b8f4905
removed unnecesary requirements
May 19, 2025
077dac7
Add OnTrack Dev Environment Setup Guide (linked to PR #358)
aditya993388 May 31, 2025
0190148
Merge pull request #32 from EkamBhullar/documentation/tutor-times
aNebula Jun 12, 2025
88fec9a
Merge pull request #34 from theiris6/doc/broken-access-control-audit
aNebula Jun 12, 2025
4da4606
Merge pull request #36 from theiris6/main
aNebula Jun 12, 2025
fc063ac
Merge pull request #39 from Lolretrorat/main
aNebula Jun 12, 2025
52bc79f
Merge pull request #42 from aditya993388/patch-1
aNebula Jun 12, 2025
af249e6
Merge pull request #28 from ibi420/docs/ssrfaudit
aNebula Jun 13, 2025
ca5082c
Merge pull request #35 from ibi420/docs/malicious-code-execution-fix
aNebula Jun 13, 2025
949ff88
Merge pull request #41 from ibi420/fix/CORS_config
aNebula Jun 13, 2025
71623b5
Merge pull request #37 from lachlan-robinson/upload-vulnerability-rep…
aNebula Jun 13, 2025
3083f22
Merge pull request #38 from lachlan-robinson/insecure-token-http-reme…
aNebula Jun 13, 2025
f4b1175
Merge pull request #26 from lachlan-robinson/fix-logo
aNebula Jun 18, 2025
d59ed75
Merge pull request #30 from martindolores/docs/tutor-times-backend-docs
aNebula Jun 18, 2025
f5fa6d0
Revert "Docs/Backend - Redesign Tutor Time Feature"
aNebula Jun 18, 2025
b17541c
Merge pull request #43 from thoth-tech/revert-30-docs/tutor-times-bac…
aNebula Jun 18, 2025
47b6c9c
Merge pull request #33 from martindolores/docs-new-redesign-tutor_times
aNebula Jun 18, 2025
32fc0d2
Add password management security documentation
MillicentAmolo Sep 19, 2025
bb24755
Add/update password management security documentation
MillicentAmolo Sep 20, 2025
3e91081
Update password management security documentation
MillicentAmolo Sep 20, 2025
24623b1
password_management_security.md
MillicentAmolo Sep 20, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# Current deployment
https://ontrackdocumentation.netlify.app/

# Contributing to Doubtfire Astro Repository

This guide provides high-level details on how to contribute to the Doubtfire repositories. This repository reflects the code for Ontrack documentation website.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# Addressing Broken Access Control (Clickjacking) Vulnerability (Documentation)

## Summary
This PR provides documentation for remediating the `A01 Broken Access Control` vulnerability, specifically addressing the missing `X-Frame-Options` header. This vulnerability exposes the OnTrack application to clickjacking attacks, which could lead to unauthorized actions and data leakage.

---

## Vulnerability Details

### Description
Clickjacking, also known as a User Interface redress attack, occurs when a malicious website tricks users into clicking on hidden elements of another site. The absence of the `X-Frame-Options` header allows the OnTrack application to be embedded in an iframe, making it vulnerable to clickjacking.

### Impact
- **Confidentiality**: None
- **Integrity**: Partial (e.g., unauthorised actions may be performed by users).
- **Availability**: None.

### Affected Paths
The following paths lack the secure `X-Frame-Options` header:
- `http://localhost:4200/`
- `http://localhost:4200/assets/icons/`
- `http://localhost:4200/sitemap.xml`
- `http://localhost:4200/clientaccesspolicy.xml`
- `http://localhost:4200/assets/fonts/`
- Other static assets under `http://localhost:4200/assets/...`.

---

## Remediation Plan

### Overview
The remediation involves:
1. Adding the `X-Frame-Options` header to HTTP responses.
2. Setting the header value to `DENY` to block the application from being embedded in any iframe.

### Implementation
- **File**: `doubtfire-web/nginx.conf`
- **Changes**:
Add the following line to the `server` block:
```nginx
add_header X-Frame-Options "DENY" always;
```

---

## Testing Plan

### Functional Testing
1. Verify that the `X-Frame-Options` header is present in all HTTP responses using the following command:
```bash
curl -I http://localhost:4200/
```
**Expected Output**:
```plaintext
HTTP/1.1 200 OK
X-Frame-Options: DENY
```
2. Ensure that the application continues to function normally after the changes.

### Security Testing
1. Create a test HTML page that attempts to embed the application in an iframe:
```html
<iframe src="http://localhost:4200/" width="600" height="400"></iframe>
```
2. Open the test page in a browser and confirm the iframe is blocked.

### Regression Testing
1. Validate that adding the `X-Frame-Options` header does not affect existing functionality, such as asset loading and API responses.

---

## References
- [OWASP: Clickjacking](https://owasp.org/www-community/attacks/Clickjacking)
- [Mozilla Developer Network: X-Frame-Options](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options)
56 changes: 56 additions & 0 deletions artefacts/clickjacking/doubt-web-nginx-config.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
worker_processes 1;

events { }

http {
include /etc/nginx/mime.types;

sendfile on;

# Server block for port 80
server {
root /usr/share/nginx/html/;
index index.html;
listen 80;

add_header Content-Security-Policy "default-src https: 'unsafe-inline' 'unsafe-eval' blob: data:" always;
add_header Feature-Policy "microphone 'self';speaker 'self';fullscreen 'self';payment none;" always;
add_header Permissions-Policy "microphone=(self), fullscreen=(self), payment=()" always;

# X-Frame-Options header for clickjacking protection
add_header X-Frame-Options "DENY" always;
}

# Server block for port 4200
server {
root /usr/share/nginx/html/;
index index.html;
listen 4200;

add_header Content-Security-Policy "default-src https: 'unsafe-inline' 'unsafe-eval' blob: data:" always;
add_header Feature-Policy "microphone 'self';speaker 'self';fullscreen 'self';payment none;" always;
add_header Permissions-Policy "microphone=(self), fullscreen=(self), payment=()" always;

# X-Frame-Options header for clickjacking protection
add_header X-Frame-Options "DENY" always;
}

# Server block for port 443
server {
root /usr/share/nginx/html/;
index index.html;
listen 443;

add_header Content-Security-Policy "default-src https: 'unsafe-inline' 'unsafe-eval' blob: data:" always;
add_header Feature-Policy "microphone 'self';speaker 'self';fullscreen 'self';payment none;" always;
add_header Permissions-Policy "microphone=(self), fullscreen=(self), payment=()" always;

# X-Frame-Options header for clickjacking protection
add_header X-Frame-Options "DENY" always;
}

gzip on;
gzip_types text/css application/javascript;
gzip_proxied any;
gzip_buffers 32 8k;
}
41 changes: 37 additions & 4 deletions astro.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ export default defineConfig({
directory: '/setup',
},
items: [
{
label: 'Frontend Documentation',
link: '/frontend/page',
},
{
label: 'OnTrack Intial Setup Guidance',
link: '/setup/set',
Expand All @@ -39,10 +43,17 @@ export default defineConfig({
directory: '/frontend',
},
items: [

{
label: 'Frontend Documentation',
link: '/frontend/page',
label: 'Frontend Tutor-Times Design',
link: '/frontend/tutor-times/tutor-times-design',
},
{
label:'Frontend Tutor-Times Requirements',
link: '/frontend/tutor-times/tutor-times-requirements',
}


],
},

Expand All @@ -59,7 +70,7 @@ export default defineConfig({
{
label: 'activity types',
link: '/backend/api/activity_types',
},
},
{
label: 'admin',
link: '/backend/api/admin',
Expand Down Expand Up @@ -168,6 +179,22 @@ export default defineConfig({
label: 'stats',
link: '/backend/api/stats',
},
{
label: 'Tutor Times',
autogenerate: {
directory: '/tutor_times',
},
items: [
{
label: 'Requirements Document',
link: '/backend/tutor_times/requirements_document',
},
{
label: 'Design Document',
link: '/backend/tutor_times/design_document',
},
],
},
],
},
{
Expand Down Expand Up @@ -207,9 +234,15 @@ export default defineConfig({
{
label: 'Backend APIs',
link: '/courseflow/backend',
}
},
],
},
{
label: 'Security',
autogenerate: {
directory: '/security',
},
},
],
}),
],
Expand Down
121 changes: 121 additions & 0 deletions docs/ontrack-dev-environment-setup.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
# OnTrack Development Environment Setup Guide

Use this guide to correctly clone, configure, and set up the development environment for OnTrack using your GitHub fork and the correct remotes. Copy the commands and change `<your-username>` to your actual GitHub username.

## Tutorial Video

You can watch the full step-by-step setup tutorial here:

[Click to open the video in SharePoint](https://deakin365.sharepoint.com/:v:/s/ThothTech2/EYtXd8ztAdpKgI5Ki8jF7lMBC4ixVvhTzqqlDX3kmvBn4A?e=wK4v8n)

## Understanding the Repository Structure

Before starting, it's important to understand the different repository organizations:

- **doubtfirelms** - The "upstream" organization that maintains the live versions of OnTrack used by several universities
- **thoth-tech** - Used internally at Deakin for the capstone unit (this is where you'll contribute)
- **Your fork** - Your personal copy where you'll push your changes

## Branch Strategy

**Critical:** All repositories (`doubtfire-deploy`, `doubtfire-web`, and `doubtfire-api`) must be on the **same branch** to ensure compatibility:

- If working on **9.x** → all repos should be on `9.x`

**For the next few semesters, we have agreed to use branch 9.x for all development work.**

This is essential because different branches use different Docker builds with specific Node.js and Ruby versions that are only compatible within the same branch family.

> **Avoid the `development` branch entirely** - it is outdated and unsupported. Switch to the appropriate version branch (e.g., `9.x`) immediately.

## Step 1: Create or Navigate to the Dev Directory

- Create the directory if it doesn't exist:

```bash
mkdir ~/dev
```

- Navigate to it:

```bash
cd ~/dev
```

## Step 2: Clone the `doubtfire-deploy` Repository with Submodules

Replace `<your-username>` with your GitHub username:

```bash
git clone --recurse-submodules https://github.com/<your-username>/doubtfire-deploy.git
cd doubtfire-deploy
```

## Step 3: Set Up Remotes for `doubtfire-deploy`

```bash
git remote set-url origin https://github.com/<your-username>/doubtfire-deploy.git
git remote add upstream https://github.com/thoth-tech/doubtfire-deploy.git
git fetch upstream
git checkout 9.x
```

## Remote Configuration Explained

- **origin** → Points to your personal fork (where you push your changes)
- **upstream** → Points to thoth-tech repository (where you pull updates from)
- **doubtfirelms** → Can only be added later if needed for advanced merging (points to the live upstream repository)

## Step 4: Configure `doubtfire-web`

```bash
cd doubtfire-web
git remote set-url origin https://github.com/<your-username>/doubtfire-web.git
git remote add upstream https://github.com/thoth-tech/doubtfire-web.git
git fetch upstream
git checkout 9.x
```

## Step 5: Configure `doubtfire-api`

```bash
cd ..
cd doubtfire-api
git remote set-url origin https://github.com/<your-username>/doubtfire-api.git
git remote add upstream https://github.com/thoth-tech/doubtfire-api.git
git fetch upstream
git checkout 9.x
```

## Critical Notes and Best Practices

### Remote Configuration

- **origin** should point to your fork — this is where you push your code
- **upstream** should point to the thoth-tech repo — pull updates from here
- **doubtfirelms** can be added later for advanced merging scenarios

### Branch Management

- **Never use the `development` branch** — it is outdated and unsupported
- **Always use matching branches** across all three repositories (deploy, web, api)
- **Stick to version branches** like `9.x`, `8.0.x`, or `10.0.x`

### Before Opening Pull Requests

- **Verify your last commit** before opening a pull request:

```bash
git log
```

- **Compare your commit** with the one shown on `github.com/thoth-tech/doubtfire-xxx` for that repository
- **Avoid extra commits** from doubtfirelms repo that make PRs hard to review

### Repository Understanding

- **doubtfirelms** = Live upstream used by universities
- **thoth-tech** = Internal Deakin capstone development
- **Your fork** = Your personal development space

> **Pro Tip:** If you've accidentally fetched branches from doubtfirelms, your PRs may contain extra commits. Always verify your latest commit matches the thoth-tech repository before submitting.
Loading