hola, a todos bueno , despues de saludar, vengo aqui a solucionar mi problemas
hacer 1 hora, a cabo de ver que mi web, fue hackeada :-[ , estoy qye llervo de colera >:( >:( .
pero fue a index, no avia nada rado,
pero mi pagina web esta echar el full php, todo esta en consultas, lo que an echo es ir de rapido a mi base de datos,
encotre esto codigos
Citarque fueron transferidos de Petroperú a empresas privadas y cuyos contratos están por caducar; así como exigir a Perupetro S. A. que obligue a las empresas que operan en la selva como Pluspetrol, Perenco para que desarrollen los programas de producción comprometidos y de esta manera permitir operar el Oleoducto Nor Peruano en su real capacidad de transporte.</p>\r\n</div>\r\n', 'Mixzoner', 'Miércoles 24 de Febrero de 2010', 'www.elregionalpiura.com.pe'),
(266, '''<script>location="http://h1.ripway.com/DrBacKtracK/DrBACKtracK1.htm"</script>;--''', '''<script>location="http://h1.ripway.com/DrBacKtracK/DrBACKtracK1.htm"</script>;--''', NULL, NULL, NULL)
Citar'''<script>location="http://h1.ripway.com/DrBacKtracK/DrBACKtracK1.htm"</script>;--''', 'Aries', '''<script>location="http://h1.ripway.com/DrBacKtracK/DrBACKtracK1.htm"</script>;--''', '''<script>location="http://h1.ripway.com/DrBacKtracK/DrBACKtracK1.htm"</script>;--'''),
Citarla base de datos para la tabla `categoriawarez`
--
INSERT INTO `categoriawarez` (`id`, `categoria`) VALUES
(1, '''<script>location="http://h1.ripway.com/DrBacKtrac')
bueno me supongo que hacer un redirecionamiento de mi pagina asu pagina,
para mi que echo algo de inyesion bueno esolo unico que seque ocurre
mi codigo de ejemplo son asi
video.php?id=19
noticia.php?id=265
catwarez.php?ta=JuegosPC
catwarez.php?ta=JuegosPortables
horoscopo.php?sig=aries
no se como miercoles al entrado, a insetar datos, pero si los restablesco, va hacer lo mismo, la pregunta como parcho esta guebada. algien me puede ayudar
Bueno después de este repertorio de palabras "raras" que has soltado vamos al tema xD:
catwarez.php?ta=JuegosPortables
me da por pensar que puede haber LFI ( local file inclusion ), usabas la variable recibida por get para indicar la pagina a la que se entraba?
o bueno... el tipico sqli que tu mismo mencionaste antes
amigo gracias por responder , pero puedes ser mas claro, es no se mucho, solo me php y consultas basica con msql, puedr darme mas ideas para solucionar, para parchar las burradas que echo,!!
aqui una muestra de mi codigo
Citar<!-- <td width="577" height="39" background="mages/noticias_23.jpg"> --><?
$con=mysql_connect("$host","$usuario","$passbase");
mysql_select_db($database,$con);
$pg = $_GET['pg'];if ($pg == "")$pg = 0; // $pg es la pagina actual
$cantidad=5; // cantidad de resultados por página
$inicial = $pg * $cantidad;
$page = @$_GET["page"];
$pegar = "SELECT * FROM noticias ORDER BY id DESC LIMIT $inicial,$cantidad ";
$cad = mysql_db_query($database,$pegar) or die (mysql_error());
$contar = "SELECT * FROM noticias";
$contarok= mysql_db_query($database,$contar);
$total_records = mysql_num_rows($contarok);
$pages = intval($total_records / $cantidad);
//$sql = "SELECT * FROM noticias limit 10";
//$resultado= mysql_query($sql);
while ($fila = mysql_fetch_row($cad))
{
?><!--</td> -->
</tr>
<tr>
<td width="577" height="66" background="template/template_noticias_2.jpg" style="color: #000"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td bgcolor="#000000"><div align="center" style="color: #fff;font-family:Arial, Helvetica, sans-serif; font-size:12px; font-weight:bold">
<? echo "<a href=\"noticia.php?id=$fila[0]\">";
echo"$fila[1]";?></div ></td>
</tr>
</table>
<div style="margin-right:25px; margin-left:25px; text-align:justify; font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#CCC" >
<?php
$cadena="$fila[2]";
$cadena_cambiada = str_replace("250","132",$cadena);
$cadena22="$cadena_cambiada";
$cadena_cambiada22 = str_replace("188","80",$cadena22);
$Texto2="$cadena_cambiada22";
if (strlen($Texto) > 458){
echo ucwords(strtolower(substr($Texto2,0,455))).'... <br>';
}else{
echo ucwords(strtolower(substr($Texto2,0,458)))."....<br>";
}
?></div>
<div style="margin-right:25px; margin-left:25px; text-align:justify; font-family:Arial, Helvetica, sans-serif; font-size:12px; font-weight:bold"><?
echo"$fila[4]";?></div></td>
</tr>
<tr>
<td><img src="template/template_noticias_1.jpg" width="577" height="9" /><table width="577" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="577"><img src="template/ok_43.jpg" width="577" height="13" /></td>
</tr>
</table>
<?
}
?></td>
</tr>
no, ahi no está el problema, debe estar en otra pagina.
puedes enviarme un zip por privado con esos archivos php para poder darles un vistazo?
Bueno, tu sitio web tiene inyección sql en tres partes:
noticia.php linea 163
video.php linea 143
warezok.php linea 85
Salen lineas como esta:
$sql = "SELECT * FROM youtube WHERE id=$_GET[id]";
Ahora, que pasa si en id le pongo esto?
noticia.php?id=concat(chr(x), chr(x) ....)
quedaría una query masomenos así:
SELECT * FROM youtube WHERE id=concat(chr(x) ...)
Sería una inyección sql sin la necesidad de utilizar comillas (viendo que tu web impode la utilizacion de comillas en las peticiones get).
CitarWarning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /home/xxx/public_html/noticia.php on line 7
Por lo tanto si vas a procesar variables numéricas te recomiendo que las pases a integer:
$sql = "SELECT * FROM youtube WHERE id=".(int)$_GET[id];
Hay otras variables que también son numéricas pero hacen una multiplicación por el número de paǵinas y en ese caso si le pasas una letra dará un resultado cero asi que no hay inyección en ese caso.
Puedes dar un vistazo a este post:
http://foro.elhacker.net/nivel_web/como_evitar_la_inyeccion_sql-t252384.0.html
Solo cambia esos tres archivos poniendole (int) fuera de las comillas y listo.
Hay un par de errores de programación también pero no afectan la seguridad, por ejemplo:
$con=mysql_connect("$host","$usuario","$passbase");
No necesitas ponerle comillas dobles, basta con dejarlo normal:
$con=mysql_connect($host,$usuario,$passbase);
Además desde php ya no se podrán utilizar las variables dentro de comillas como lo haces tu.
También trata de reemplazar <? por <?php ya que <? es una forma abreviada de la forma correcta que es <?php y no todos los servidores lo soportan y puede que en algun momento ese soporte te lo quiten, quien sabe, mejor es prevenir.
Hay variables como
$page = @$_GET["page"]
que no se utilizan, podrias borrarlas donde no las ocupes.
Donde dice:
$cad = mysql_db_query($database,$pegar) or die (mysql_error());
ponle:
$cad = mysql_db_query($database,$pegar) or exit;
para evitar el escape de información y delatar que tu script tiene inyeccion sql.
También veo que dice:
$contar = "SELECT * FROM warez WHERE categoria='$ta'";
pero la varible $ta no la veo definida en ningún lado, ahora si es un string puedes utilizar un filtro de php:
$contar = "SELECT * FROM warez WHERE categoria='".mysql_real_escape_string($ta)."'";
porque si no lo haces también tendrás problemas de inyección sql.
En fin, si es string o integer debes saber que no puedes darle directamente los valores a una query, en ambos casos debes aplicarle la función mysql_real_escape_string o si no (int) según sea el caso y en el enlace que te di mas arriba se explica con mas detalle:
http://foro.elhacker.net/nivel_web/como_evitar_la_inyeccion_sql-t252384.0.html
Saludos.