Saturday, September 25, 2004

Java: Hati-hati dengan FileOutputStream

Posting blog "How I hacked Jroller.com" ini menjelaskan bagaimana kita bisa mengupload file yang berbahaya dengan memanfaatkan bug pada kode program. Triknya sebenarnya simple yaitu menggunakan null byte pada nama file yang akan diupload. Dibawah ini contoh sederhana bagaimana nama file trojan.jsp\000.gif dapat berubah menjadi trojan.jsp
public class Test {


public static void main(String[] args) {
String uploadedFileName = "trojan.jsp\000.gif";
byte[] buffer = new byte[8192];
int bytesRead = 0;
try {
InputStream stream = new FileInputStream("C:\\test.log");

// Save a file with strange file name
OutputStream bos = new FileOutputStream("C:\\"+ uploadedFileName);
while ((bytesRead = stream.read(buffer, 0, 8192)) != -1) {
bos.write(buffer, 0, bytesRead);
}
bos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
Jadi hati-hatilah dengan kode program kita, validasi yang benar akan menghindarkan kita dari lubang keamanan.

No comments:

Followers