what you don't know can hurt you
Home Files News &[SERVICES_TAB]About Contact Add New

Seagate Personal Cloud SRN21C SQL Injection

Seagate Personal Cloud SRN21C SQL Injection
Posted Aug 24, 2018
Authored by Yorick Koster

Seagate Personal Cloud model SRN21C running firmware versions 4.3.16.0 and 4.3.18.0 suffer from remote SQL injection vulnerabilities in the media server.

tags | exploit, remote, vulnerability, sql injection
SHA-256 | e778b88faf6c13b9ded2dc0b1c5a4d719131745dd2f652b92a0899ab6d72d2b9

Seagate Personal Cloud SRN21C SQL Injection

Change Mirror Download
------------------------------------------------------------------------
Seagate Media Server multiple SQL injection vulnerabilities
------------------------------------------------------------------------
Yorick Koster, September 2017

------------------------------------------------------------------------
Abstract
------------------------------------------------------------------------
Seagate Personal Cloud is a consumer-grade Network-Attached Storage
device (NAS). It was found that Seagate Media Server is affected by
multiple SQL injection vulnerabilities. An unauthenticated attacker can
exploit this issue to retrieve or modify arbitrary data in the database
used by Seagate Media Server. Seagate Media Server uses a separate
SQLite3 database, which limits what the attacker can do with this issue.

------------------------------------------------------------------------
Tested versions
------------------------------------------------------------------------
This issue was tested on a Seagate Personal Cloud model SRN21C running
firmware versions 4.3.16.0 and 4.3.18.0. It is likely that other
devices/models are also affected.

------------------------------------------------------------------------
Fix
------------------------------------------------------------------------
These vulnerabilities have been fixed in firmware version 4.3.19.3.
http://knowledge.seagate.com/articles/en_US/FAQ/007752en

------------------------------------------------------------------------
Details
------------------------------------------------------------------------
https://sumofpwn.nl/advisory/2017/seagate-media-server-multiple-sql-injection-vulnerabilities.html

Seagate Media Server uses the Django web framework and is mapped to the .psp extension. Any URL that ends with .psp is automatically send to the Seagate Media Server application using the FastCGI protocol.

/etc/lighttpd/conf.d/django-host.conf:

fastcgi.server += (
".psp"=>
((
"socket" => "/var/run/manage_py-fastcgi.socket",
"check-local" => "disable",
"stream-post" => "enable",
"allow-x-send-file" => "enable",
)),
".psp/"=>
((
"socket" => "/var/run/manage_py-fastcgi.socket",
"check-local" => "disable",
"stream-post" => "enable",
"allow-x-send-file" => "enable",
))
)

URLs are mapped to specific views in the file /usr/lib/django_host/seagate_media_server/urls.py. It was found that many views contains SQL injection vulnerabilities. Since the number of issues is large only a selection of the identified issues is listed below.


/usr/lib/python2.7/site-packages/sms/Doc/core/documentSort.py (insecure use of format):

searchResult = self.dbObj.execute_command(RequestType.GETDICT, searchQuery.format(orderby = orderby,order = order,startwith_construct=startwith_construct), params = paramdict, priority = PriorityLevel.UI)
[...]
searchQuery = "Select id as UID, id, name, url, thumbUrl, size, approxFileSize, creationTime, approxCreationTime, type, extension, views, " \
"SUBSTR(album, 0, length(album) - 32) AS album, album AS albumId," \
"dirId, title as dtitle, dropboxSync , googleDriveSync from doc where album like :name escape '|' order by {orderby} {order} LIMIT :offset offset :start".format(orderby = orderby,order = order)


/usr/lib/python2.7/site-packages/sms/FolderView/core/Folder.py (unsafe string concatenation):

def allfiles(self, start, count, order, uid, orderby, folderOnly):
dirOrderby = "name"

if orderby == "creationTime":
dirOrderby = "creationTime"

countdirectory = "SELECT count(id) FROM directories WHERE parentdirId= '" + uid + "'"
dcount = 0
result = self.dbObj.execute_command(RequestType.GETONE, countdirectory, priority = PriorityLevel.UI)
if result:
dcount = result["data"]["result"][0]
count = int(count)
start = int(start)
tcount = start + count
if start <= dcount:
if tcount > dcount:
ocount = tcount - dcount
searchfolder = "SELECT id, name, url, parentdirId, creationTime, thumbUrl FROM directories WHERE parentdirId= '" + uid + "' ORDER BY " + dirOrderby + " " + order + " LIMIT " + str(count) + " OFFSET " + str(start)

Similar issues were observed in the following files (non-exhaustive list):

- /usr/lib/python2.7/site-packages/sms/Music/core/musicSort.py
- /usr/lib/python2.7/site-packages/sms/Music/views.py
- /usr/lib/python2.7/site-packages/sms/Photo/core/photoSort.py
- /usr/lib/python2.7/site-packages/sms/Photo/views.py
- /usr/lib/python2.7/site-packages/sms/Video/core/videoSort.py
- /usr/lib/python2.7/site-packages/sms/Video/views.py
Proof of concept

The following proof of concept can be used to verify this issue.

http://personalcloud.local/folderViewAllFiles.psp?start=0&count=60&url=%2F&dirId=\'+union+select+null,name,null,sql,null,null+from+sqlite_master+--+'
Login or Register to add favorites

File Archive:

April 2024

  • Su
  • Mo
  • Tu
  • We
  • Th
  • Fr
  • Sa
  • 1
    Apr 1st
    10 Files
  • 2
    Apr 2nd
    26 Files
  • 3
    Apr 3rd
    40 Files
  • 4
    Apr 4th
    6 Files
  • 5
    Apr 5th
    26 Files
  • 6
    Apr 6th
    0 Files
  • 7
    Apr 7th
    0 Files
  • 8
    Apr 8th
    22 Files
  • 9
    Apr 9th
    14 Files
  • 10
    Apr 10th
    10 Files
  • 11
    Apr 11th
    13 Files
  • 12
    Apr 12th
    14 Files
  • 13
    Apr 13th
    0 Files
  • 14
    Apr 14th
    0 Files
  • 15
    Apr 15th
    30 Files
  • 16
    Apr 16th
    10 Files
  • 17
    Apr 17th
    22 Files
  • 18
    Apr 18th
    45 Files
  • 19
    Apr 19th
    0 Files
  • 20
    Apr 20th
    0 Files
  • 21
    Apr 21st
    0 Files
  • 22
    Apr 22nd
    0 Files
  • 23
    Apr 23rd
    0 Files
  • 24
    Apr 24th
    0 Files
  • 25
    Apr 25th
    0 Files
  • 26
    Apr 26th
    0 Files
  • 27
    Apr 27th
    0 Files
  • 28
    Apr 28th
    0 Files
  • 29
    Apr 29th
    0 Files
  • 30
    Apr 30th
    0 Files

Top Authors In Last 30 Days

File Tags

Systems

packet storm

© 2022 Packet Storm. All rights reserved.

Services
Security Services
Hosting By
Rokasec
close