https://www.root-me.org/en/Challenges/Web-Server/File-upload-Double-extensions
Statement
Your goal is to hack this photo galery by uploading PHP code.Retrieve the validation password in the file .passwd at the root of the application.
=> λͺ©νλ PHP μ½λλ₯Ό μ λ‘λνμ¬ μ΄ μ¬μ§ κ°€λ¬λ¦¬λ₯Ό ν΄νΉνλ κ²μ λλ€. μ ν리μΌμ΄μ 루νΈμ μλ .passwd νμΌμμ validation password λ₯Ό κ²μνμΈμ.
λ΅! μκ² μ΅λλ€ ~
[Start the Challange] λ₯Ό λλ¬ λ¬Έμ νμ΄λ₯Ό μμνλ€.
μ΄κΈ° νλ©΄μ΄λ€.
μ΄λͺ¨μ§κ° μΉ΄ν κ³ λ¦¬λ³λ‘ λΆλ₯λμ΄μλ€.
μ λ‘λ κΈ°λ₯λ μλ€!
λ΄κ° μ’μνλ μ¬μ§μ μ λ‘λ ν΄λ΄€λλ° (μ°Έκ³ λ‘ μν μ΄λ°μ νμμ ν μ₯λ©΄μ΄λ€. γ γ )
ν¬κΈ°κ° λ무 ν¬λ€κ³ νλ€.
λ μ 보보νΈνκ³ΌλκΉ...
μ jpg νμΌμ΄ μ¬μ΄μ¦κ° μμ보μ¬μ μ ννλλ° μ λ‘λλλ€.
μ λ‘λμ μ±κ³΅νλ©΄ νμΌλͺ , μ’ λ₯, μ¬μ΄μ¦, μ μ₯ μ₯μλ₯Ό μλ €μ€λ€.
μ μ₯ μ₯μλ‘ κ°λ©΄ λ΄κ° μ¬λ¦° μ΄λ―Έμ§ νμΌμ λ³Ό μ μλ€.
μ°Έκ³ λ‘ νμΌλͺ μ "...jpg" λ‘ λ°κΏμ μ λ‘λν΄λ³΄μλλ°,
μ λ‘λκΉμ§λ λλλ° μ μ₯ μ₯μλ‘ κ°λ©΄ 403 Forbidden μ΄ λ¬λ€.
μκΉ Statement λ₯Ό λ μ¬λ €λ³΄λ©΄
λΌκ³ νλλ°, μ¬κΈ°μ κΆκΈν κ² λ κ°μ§
Q1) "NB : only .gif, .jpeg and .png are accepted" λΌλλ° μ΄λ»κ² php νμΌμ μ¬λ¦¬μ§?
Q2) μ ν리μΌμ΄μ 루νΈμ μλ .passwd νμΌμ μ΄λ»κ² μ κ·Όν΄μΌν κΉ?
μ¬λ¬κ°μ§ μκ°ν΄λ³΄λ€κ° μ΄ λ¬Έμ μ μ λͺ©μμλΌλ ννΈλ₯Ό μ»μ μ μμκΉ νμ¬ λ€μ λ μ¬λ €λ΄€λλ° double extension (μ΄μ€ νμ₯μ) μ΄μλ€.
κ·Έλμ μ¬λ¦΄ μ μλ νμ₯μλ .gif, .jpeg, .pngλ‘ μ νλμ΄ μμ§λ§,
νμΌλͺ μ "php"μ κ°μ λ€λ₯Έ νμ₯μλͺ μ ν¬ν¨νμ¬ μ λ‘λνλ©΄ νμ©ν μ μμ§ μμκΉ? νλ μκ°μ΄ λ€μλ€.
txt νμΌμ μ΄λ¦μ .phpλ₯Ό λ£κ³ νμ₯μλ μμλ‘ jpg λ‘ λ°κΎΈμ΄μ μ λ‘λν΄λ³΄μλλ°
μ λ‘λ ν μ μμ λΏλ§ μλλΌ
ν μ€νΈλ μ½μ μ μμλ€!
μ΄μ μ μΉμ Έμ νμ©νμ¬ λ¬Έμ λ₯Ό νμ΄λ³΄λ € νλλ '<' λ¬Έμκ° λ°μλ€μ¬μ§μ§ μμλ κ²μ΄ μκ°λμ
'<>'κ° μΈμμ΄ λλμ§ κΆκΈν΄ μ λ κ² λ΄μ©μ λ°κΏλ³΄μλ€.
μ€ < > λͺ¨λ μΈμμ΄ λλ€.
κ·Έλ¬λκΉ, λλ½λ κΈμ μμ΄ <body>~</body> μ¬μ΄μ μμ€ μ½λμ λ°μμ΄ λλ€.
phpνμΌ + <> λͺ¨λ μΈμ κ°λ₯ν¨ => μΉμ Έμ νμ©ν΄ ν μ μμ§ μμκΉ? λΌλ μκ°μ΄ λ€μλ€.
(κ·Έλ₯ μ¬κΈ°μλΆν΄ μ μ©μ΄ λλμ§ ν μ€νΈ ν΄λ³Έ λ΄μ©....)
νμΌ μ λ‘λ νμ΄μ§μ μμ€μ½λλ₯Ό 볡μ¬ν΄μ ν μ€νΈν΄λ³΄λλ‘ νλ€.
μ λ‘λλ μ±κ³΅νκ³
νμΌμ΄ μ μ₯λ κ²½λ‘λ‘ λ€μ΄κ°μ£Όλ©΄,
μ΄λ κ² λ΄κ° 볡μ¬ν μ½λκ° κ·Έλλ‘ λ°μμ΄ λμλ€.
"php μ½λλ₯Ό ν΅ν΄ μ ν리μΌμ΄μ 루νΈμ μλ .passwd νμΌμμ validation password λ₯Ό κ²μ" νλΌκ³ νμΌλ
μ λ‘λν νμΌ μμ μ΄λ€ μ½λλ₯Ό λ£μ΄μ .passwd νμΌλ‘ μ΄λν μ μλλ‘ νμ.
κ·Έλ°λ° php μ½λμ λν΄ μ λͺ°λΌμ νμ΄μ§ μ΄λκ³Ό κ΄λ ¨λ php μ½λλ₯Ό μ°Ύμ보μλ€.
(μ°Έκ³ : https://tw-news.tistory.com/15)
μ΄λ° λ΄μ©μ μμ±ν΄μ νμΌμ λ§λ€μ΄μ£Όκ³ μ λ‘λν λ€
νμΌμ΄ μ μ₯λ μ£Όμ λ§ν¬λ₯Ό λλ¬μ£Όλ©΄
http://challenge01.root-me.org/web-serveur/ch20/galerie/upload/.passwd λ‘ μ΄λμ ν μ μμμΌλ
μ¬μ ν μ κ·Όμ΄ κΈμ§λ κ²μ νμΈν μ μμλ€.
λ μ΄μ μμ΄λμ΄κ° λ μ€λ₯΄μ§ μμμ μ¬κΈ°μλΆν° ꡬκΈλ§μ ν΅ν΄ λ¬Έμ νμ΄λ₯Ό μ§ννλ€.
β μ§κΈκΉμ§μ μν© μ 리 β
μ€μ€λ‘ λ¬Έμ λ₯Ό νμ΄λ³΄λ©΄μ μ΄λ κ² λ κ°μ§ κ³ λ―Όμ νμλλ°
첫 λ²μ§Έ μλ¬Έμ μ ν΄κ²°μ νμλ€.
λ¬Έμ μ μ λͺ©μΈ 'μ΄μ€ νμ₯μ'μμ ννΈλ₯Ό μ»μ΄μμ ".php.jpg" μ²λΌ νμ₯μλ₯Ό λ λ² μ¬μ©νλ νμΌ μ΄λ¦μ μ λ ₯ν΄μ php νμΌμ μ λ‘λ ν μ μμλ€.
μ΄μ λ λ²μ§Έ μλ¬Έμ μ ν΄κ²°νκΈ° μν΄ κ΅¬κΈλ§μ ν΄μΌ νλ μν©μ΄λ€.
λ¨Όμ , μ΄ λ¬Έμ μ κ΄λ ¨λ κ°λ μ μμλ³΄κ² λ€.
(.passwd νμΌμ κ²½λ‘λ₯Ό μμλ΄λ λ°©λ²μ΄ κΆκΈνλ©΄ λ λ°μΌλ‘ μ€ν¬λ‘€νλ©΄ λ©λλ€!)
[1] νμΌ μ λ‘λ μ·¨μ½μ
κ²μν λ±μμ μ€ν¬λ¦½νΈ(μννΈμ¨μ΄μ μ€νμν€λ μ²λ¦¬ μ μ°¨λ₯Ό λ¬Έμ(ν μ€νΈ)λ‘ κΈ°μ ν κ². μΌμ’ μ νλ‘κ·Έλ¨μ΄λΌκ³ ν μ μλ€.) νμΌμ μ λ‘λμ λν κ·μ κ° μμ κ²½μ° μ΄λ₯Ό μ μ©ν ν΄μ»€μ μν΄ μ μ± μ€ν¬λ¦½νΈ νμΌμ΄ μνλ μ μλ 보μ μ·¨μ μ . μ²¨λΆ νμΌ μ λ‘λλ₯Ό νμ©νλ ν νμ΄μ§ κ²μνμμ .php, .jsp λ±μ νμ₯μ μ΄λ¦μ μ€ν¬λ¦½νΈ νμΌμ μ λ‘λλ₯Ό νμ©ν κ²½μ°μ ν΄μ»€κ° μ μ± μ€ν νλ‘κ·Έλ¨μ μ λ‘λν νμ ν νμ΄μ§ μ μ λ°©μμΌλ‘ μ격μμ μλ²μ»΄ν¨ν°μ μμ€ν μ΄μ λͺ λ Ήμ΄λ₯Ό μ€νμν¬ μ μλ€. μλ₯Ό λ€μ΄ λͺ¨λ κ²μνμ λν΄ php, php3, asp, jsp, cgi, inc, pl λ±μ νμ₯μλ₯Ό μ§λ νμΌμ μ λ‘λλ₯Ό μλνμ¬ μ λ‘λκ° λλ©΄ μ·¨μ½μ μ΄ μλ κ²μ΄λ€.
[λ€μ΄λ² μ§μλ°±κ³Ό] νμΌ μ
λ‘λ μ·¨μ½μ [File Upload Vulnerability, -θεΌ±ι»] (ITμ©μ΄μ¬μ , νκ΅μ 보ν΅μ κΈ°μ νν)
[2] μΉ μ Έ
μΉ μ
Έ(web shell)μ μ
λ‘λ μ·¨μ½μ μ ν΅νμ¬ μμ€ν
μ λͺ
λ Ήμ λ΄λ¦΄ μ μλ μ½λλ₯Ό λ§νλ€. web shellμ κ°λ¨ν μλ² μ€ν¬λ¦½νΈ (jsp, php, asp...)λ‘ λ§λλ λ°©λ²μ΄ λ리 μ¬μ©λλ©° μ΄ μ€ν¬λ¦½νΈλ€μ μΉ μλ²μ μ·¨μ½μ μ ν΅ν΄ μ
λ‘λλλ€. μΉμ
Έ μ€μΉ μ ν΄μ»€λ€μ 보μ μμ€ν
μ νΌνμ¬ λ³λμ μΈμ¦ μμ΄ μμ€ν
μ μ½κ² μ μ κ°λ₯νλ€.
(μΉμ΄ μλ²μμ ꡬλλκ³ μλ€ νμ¬λ μ·¨μ½μ μ΄ μ‘΄μ¬νμ§ μμΌλ©΄ μνλμ§ μμΌλ©°, λ§μ½ μ
λ‘λλμλ€ νλλΌλ μ€ν κΆνμ΄ μμΌλ©΄, μ€νμ΄ λμ§ μλλ€. νμ§λ§ μ·¨μ½μ κ³Ό μ€ν κΆνμ΄ μ‘΄μ¬ν λλ μλ² λ΄λΆμ λͺ
λ Ήμ μνν μ μμΌλ―λ‘ μΉ¨ν΄ λ²μκ° λμ΄μ§ μ μλ€.)
μ¬μ©μλ‘λΆν° μ
λ ₯λ μμ€ν
λͺ
λ Ήμ΄λ₯Ό μ
Έμ μ λ¬νλ κΈ°λ₯μ κ°μ§κ³ μλ€.
μΆμ²: μν€λ°±κ³Ό - μΉ μ Έ
+ [3] Web Shell μ λ‘λ λ°©μ§ (보μ)
1.μ
λ‘λ: νμΌ μ
λ‘λκ° λΆνμν κ²½μ° μ
λ‘λ κΈ°λ₯μ μμ ν μ κ±°νκ³ μ
λ‘λκ° νμν κ²½μ° νμ₯μλ₯Ό μ ννλ€. νμ₯μλ₯Ό μ νν μμλ νΉμ νμ₯μλ₯Ό λ§λ κ²λ³΄λ€ νΉμ νμ₯μλ§ λκ² νλ κ²μ΄ λ μμ νλ€. λν txt.php κ°μ μ νμ μ΄μ€ νμ₯μ κ²μ¬λ ν΄μΌ νλ€.
2.νμΌ μ
λ‘λ ν΄λ μ€ν μ ν: μΉ μλ² μ
λ‘λ μ μ© ν΄λλ₯Ό λ§λ€κ³ νμΌμ μ€νμ μ ννλ€.
μΆμ²: μν€λ°±κ³Ό - μΉ μ Έ
βμ 리β
.asp, .php, .jspμ κ°μ νμ₯μλ€μ μλ² μΈ‘μμ μ€νλλ νλ‘κ·Έλλ° μΈμ΄λ‘ μμ±λ νμΌλ€μ΄λ€. μ΄λ¬ν νμΌλ€μ΄ μλ²μ μ
λ‘λλλ©΄, ν΄λΉ νμΌμ΄ μλ²μμ μ€νλ μ μλ€. μ΄λ 보μμμ λ¬Έμ λ₯Ό μ΄λν μ μλ€.
μλ₯Ό λ€μ΄, μ
μμ μΈ μ¬μ©μκ° μ΄λ¬ν νμ₯μλ‘ μμ±λ νμΌμ μ
λ‘λνλ€λ©΄, ν΄λΉ νμΌμ μλ²μμ μ€νλ μ μκ² λμ΄ μΉ μ
Έ(web shell)μ μν μ ν μ μλ€. μΉ μ
Έμ μΉ μ΄ν리μΌμ΄μ
μ ν΅ν΄ μλ²μ λͺ
λ Ήμ μ μ‘νκ³ μ€ννλ λꡬλ‘μ, μ΄λ₯Ό μ
μ©νλ©΄ μλ²λ₯Ό μ μ΄νκ±°λ μ€μν μ 보λ₯Ό νμ·¨ν μ μλ€.
λ°λΌμ 보μμ μν΄ λλΆλΆμ μΉ μλ²μμλ μ΄λ¬ν νμ₯μλ€μ μ
λ‘λνκ±°λ μ€ννμ§ λͺ»νλλ‘ λ§μλλλ€. μ΄λ κ² ν¨μΌλ‘μ¨ μ
μμ μΈ μ½λκ° μλ²μ μ
λ‘λλμ΄ μ€νλλ κ²μ λ°©μ§νκ³ , 보μμ κ°νν μ μλ€.
.passwd νμΌμ λ΄μ©μ μΆλ ₯νλ λ°©λ²
μΉ μ΄ν리μΌμ΄μ μμ μ¬μ©μλ‘λΆν° μ λ ₯μ λ°μ μμ€ν λͺ λ Ήμ μ€ννλ κΈ°λ₯μ κ°μ§ μ½λκ° μμ±λ PHP νμΌμ μ λ‘λ νλ©΄ λλ€.
λ¨Όμ λ€μκ³Ό κ°μ μ½λλ₯Ό μμ±ν php.jpg νμΌμ μ λ‘λ νλ€.
<?php
system($_GET[cmd]);
?>
μ΄ μ½λλ₯Ό ν΄μνμλ©΄
1. <?php: PHP μ½λμ μμμ λνλ λλ€. μ΄ νμλ PHP μ½λ λΈλ‘μ μμμ μ립λλ€.
2. system($_GET['cmd']);: μ΄ λΆλΆμ μμ€ν λͺ λ Ήμ μ€ννλ μν μ ν©λλ€. $_GET['cmd']λ GET μμ²μ ν΅ν΄ μ λ¬λ 'cmd' 맀κ°λ³μμ κ°μ κ°μ Έμ€λ κ²μ μλ―Έν©λλ€. μ¬μ©μκ° URLμ ν΅ν΄ 'cmd' 맀κ°λ³μλ₯Ό μ λ¬νλ©΄, μ΄ κ°μ system() ν¨μμ 맀κ°λ³μλ‘ μ λ¬λ©λλ€.
μΆμ²: μ± GPT
μ΄ μ½λμ μν μ
μ¬μ©μλ‘λΆν° GET λ©μλλ‘ 'cmd'λΌλ λ³μλ₯Ό μ λ¬λ°μ μ΄λ₯Ό μμ€ν λͺ λ Ήμ΄λ‘ μ€νν ν κ²°κ³Όλ₯Ό μΆλ ₯νλ κ²μ΄λ€.
μ¬μ©μκ° μΉ μ΄ν리μΌμ΄μ μ ν΅ν΄ 'cmd' λ³μμ μ΄λ€ λͺ λ Ήμ΄λ₯Ό μ λ¬νλ©΄, μ΄ μ½λλ ν΄λΉ λͺ λ Ήμ΄λ₯Ό μ€ννκ³ κ²°κ³Όλ₯Ό νλ©΄μ μΆλ ₯νλ€.
μ΄μ νμΌμ μ λ‘λν΄λ³΄μ.
μ€λ₯ λ©μμ§λ₯Ό μ΄ν΄λ³΄λ©΄ λ κ°μ§ λ¬Έμ κ° μλ€.
1. Use of undefined constant cmd - assumed 'cmd': 'cmd'λΌλ μμλ₯Ό μ¬μ©ν λ, PHPλ μ΄λ₯Ό λ¬Έμμ΄λ‘ μ²λ¦¬νλ€. νμ§λ§ 'cmd'λ₯Ό λ°μ΄νλ‘ κ°μΈμ§ μμκΈ° λλ¬Έμ PHPλ μ΄λ₯Ό μμλ‘ μΈμνλ €κ³ μλνμΌλ©°, κ·Έ κ²°κ³Όλ‘ κ²½κ³ κ° λ°μνλ€.
2. Cannot execute a blank command: system() ν¨μμ λΉ λͺ
λ Ήμ μ λ¬νλ €κ³ νκΈ° λλ¬Έμ λ°μν μ€λ₯μ΄λ€. ($_GET['cmd']μμ 'cmd' λ³μλ₯Ό μ λ¬νμ§ μμμ λ°μν κ²μΌλ‘ 보μΈλ€.)
λ€μ μμ ν΄μ νμΌμ μ λ‘λν΄λ³΄μ.
<?php
$cmd = $_GET['cmd'];
system($cmd);
?>
μ΄ μ€λ₯μ λν΄ μμ보μλ€.
μ€λ₯ λ©μμ§μΈ "Cannot execute a blank command"λ μμ€ν λͺ λ Ήμ΄κ° λΉμ΄μμ΄μ μ€νν μ μλ€λ κ²μ λνλ λλ€. μ¦, 'cmd' λ³μμ μ΄λ ν κ°λ μ λ¬λμ§ μμκ±°λ λΉ λ¬Έμμ΄μ΄ μ λ¬λμλ€λ κ²μ λλ€.
μ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ €λ©΄ 'cmd' λ³μμ μ ν¨ν μμ€ν λͺ λ Ήμ μ λ¬ν΄μΌ ν©λλ€. μλ₯Ό λ€μ΄, ?cmd=lsμ κ°μ΄ URLμ 'cmd' λ³μλ₯Ό ν¬ν¨μν€λ©΄ μλ²λ "ls" λͺ λ Ήμ΄λ₯Ό μ€νν κ²μ λλ€.
μΆμ²: μ± GPT
κ·Έλ λ€κ³ νλ€.
URL 맨 λμ ?cmd=id λΌκ³ μ
λ ₯ν΄μ cmd λ³μμ id λΌλ κ°μ λ΄μμ£Όλ©΄ system('id') κ° μλ²λ‘ μ λ¬λμ΄ id λͺ
λ Ήμ΄κ° μ€νλ κ²μ΄λ€.
μ΄μ λ¬Έμ μμ μνλ λ°μ κ°μ΄ .passwdλ‘ μ κ·Όν΄λ³΄μ.
?cmd=cat /challenge/web-serveur/ch20/.passwd λ₯Ό μ λ ₯ν΄μ£Όμ.
(μμ€ν μμ /challenge/web-serveur/ch20/.passwd νμΌμ λ΄μ©μ μΆλ ₯νλ€.)
.passwd νμΌμ λ΄μ©μ νμΈν μ μμλ€.
μ λ΅!
.passwd νμΌμ λ΄μ©μ 볡μ¬νμ¬ λ΅μΌλ‘ μ λ ₯νλ©΄ λλ€.
'SWLUG > μΉ ν΄νΉ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Dreamhack/λλ¦Όν΅] image-storage (1) | 2023.09.30 |
---|---|
[Root me] Install files (0) | 2023.09.30 |
[Webhacking.kr] old-28 (0) | 2023.09.28 |
[webhacking.kr] old-12λ² (0) | 2023.09.27 |
[Root Me] Javascript - Webpack (0) | 2023.09.26 |