Selamun Aleykum Dostlar,
Xpath İnjection Nedir ?
Bir web sitesi XML veri için bir XPath sorgusu oluşturmak için kullanıcı tarafından sağlanan bilgiler kullanır SQL Injection benzer, XPath Injection saldırıları meydana gelir.
Web sitesine kasten hatalı bilgi göndererek, bir saldırganın kendisine, normalde erişimi olmayabilir XML verilerin nasıl yapılandırıldığını bularak Injection yapılır
Hatta XML veri doğrulama (örneğin, XML tabanlı kullanıcı dosyası gibi) için kullanılmakta ise web sitesinde kendi ayrıcalıkları yükseltmek mümkün olabilir.
Sorgulama XML XPath, XML sorgu bir bilgi bulmak için sağlar basit açıklayıcı bir tür ile yapılır.
SQL gibi, bulmak için belirli nitelikler belirtebilirsiniz ve desenler eşleşecek.
Bir web sitesi için XML kullanırken bu sayfada bulmak ve görüntülemek için içeriğe tanımlamak için sorgu dizesinde giriş çeşit kabul etmek yaygındır.
Bu giriş bir XPath sorgusu karmaşası olmadığını doğrulamak ve yanlış veri döndürmek için dezenfekte edilmelidir.
XPath standart bir dildir; gösteriminin / sözdizimi her zaman saldırı otomatik olarak uygulanması anlamına gelir bağımsız olduğunu.
Bu SQL databeses istekleri gerçekleşir diye farklı lehçeleri vardır.
Hiçbir seviyesi erişim kontrolü olmadığı için bu belgenin tamamını almak mümkündür.
Biz SQL enjeksiyon saldırıları Bildiğiniz gibi biz herhangi bir sınırlama ile karşılaşmıyorsunuz.
Attack:
Örnek için Xml Parçacıgı kullancagız.
<?xml version="1.0" encoding="utf-8"?>
<Employees>
<Employee ID="1">
<FirstName>Arnold</FirstName>
<LastName>Baker</LastName>
<UserName>ABaker</UserName>
<Password>SoSecret</Password>
<Type>Admin</Type>
</Employee>
<Employee ID="2">
<FirstName>Peter</FirstName>
<LastName>Pan</LastName>
<UserName>PPan</UserName>
<Password>NotTelling</Password>
<Type>User</Type>
</Employee>
Kullanıcıların giriş yapmak için bu tür bir veri dosyası kullanılan bir web sayfasında bir kullanıcı kimlik doğrulama sistemi olduğunu varsayalım. Kullanıcı adı ve şifre temin edilmiştir sonra yazılım, kullanıcının aramak için XPath kullanabilirsiniz:
Normal bir kullanıcı adı ve şifre ile bu XPath çalışır, ancak saldırgan, kötü bir kullanıcı adı ve şifre göndermek ve bu gibi, kullanıcı adı veya şifre bilmeden seçilen bir
VB:
Dim FindUserXPath as String
FindUserXPath = "//Employee[UserName/text()=’" & Request("Username") & "’ And
Password/text()=’" & Request("Password") & "’]"
C#:
String FindUserXPath;
FindUserXPath = "//Employee[UserName/text()=’" + Request("Username") + "’ And
Password/text()=’" + Request("Password") + "’]";
XML düğümü alabilirsiniz:
Username: Reacher’ or 1=1 or ’a’=’a
Password: test
FindUserXPath becomes //Employee[UserName/text()=’Reacher’ or 1=1 or
’a’=’a’ And Password/text()=’test’]
Logically this is equivalent to:
//Employee[(UserName/text()=’Reacher
’ or 1=1) or
(’a’=’a’ And Password/text()=’test’)]
Bu durumda, XPatha göre sadece birinci bölümü doğru olması gerekir.Şifre kısmı önemsiz olur ve Username bölümünde 1=1 kısmı dogrular.
Uygulama bunları kullanıyorsa Sadece SQL enjeksiyon gibi, kendinizi korumak için tek tırnak filtrelemesine gidilebilir.
Security:
VB:
Dim FindUserXPath as String
FindUserXPath = "//Employee[UserName/text()=’" & Request("Username").Replace("’", "’") & "’ And
Password/text()=’" & Request("Password").Replace("’", "’") & "’]"
C#:
String FindUserXPath;
FindUserXPath = "//Employee[UserName/text()=’" + Request("Username").Replace("’", "’") + "’ And
Password/text()=’" + Request("Password").Replace("’", "’") + "’]";
Selametle // Reacher
Xpath İnjection Nedir ?
Bir web sitesi XML veri için bir XPath sorgusu oluşturmak için kullanıcı tarafından sağlanan bilgiler kullanır SQL Injection benzer, XPath Injection saldırıları meydana gelir.
Web sitesine kasten hatalı bilgi göndererek, bir saldırganın kendisine, normalde erişimi olmayabilir XML verilerin nasıl yapılandırıldığını bularak Injection yapılır
Hatta XML veri doğrulama (örneğin, XML tabanlı kullanıcı dosyası gibi) için kullanılmakta ise web sitesinde kendi ayrıcalıkları yükseltmek mümkün olabilir.
Sorgulama XML XPath, XML sorgu bir bilgi bulmak için sağlar basit açıklayıcı bir tür ile yapılır.
SQL gibi, bulmak için belirli nitelikler belirtebilirsiniz ve desenler eşleşecek.
Bir web sitesi için XML kullanırken bu sayfada bulmak ve görüntülemek için içeriğe tanımlamak için sorgu dizesinde giriş çeşit kabul etmek yaygındır.
Bu giriş bir XPath sorgusu karmaşası olmadığını doğrulamak ve yanlış veri döndürmek için dezenfekte edilmelidir.
XPath standart bir dildir; gösteriminin / sözdizimi her zaman saldırı otomatik olarak uygulanması anlamına gelir bağımsız olduğunu.
Bu SQL databeses istekleri gerçekleşir diye farklı lehçeleri vardır.
Hiçbir seviyesi erişim kontrolü olmadığı için bu belgenin tamamını almak mümkündür.
Biz SQL enjeksiyon saldırıları Bildiğiniz gibi biz herhangi bir sınırlama ile karşılaşmıyorsunuz.
Attack:
Örnek için Xml Parçacıgı kullancagız.
<?xml version="1.0" encoding="utf-8"?>
<Employees>
<Employee ID="1">
<FirstName>Arnold</FirstName>
<LastName>Baker</LastName>
<UserName>ABaker</UserName>
<Password>SoSecret</Password>
<Type>Admin</Type>
</Employee>
<Employee ID="2">
<FirstName>Peter</FirstName>
<LastName>Pan</LastName>
<UserName>PPan</UserName>
<Password>NotTelling</Password>
<Type>User</Type>
</Employee>
Kullanıcıların giriş yapmak için bu tür bir veri dosyası kullanılan bir web sayfasında bir kullanıcı kimlik doğrulama sistemi olduğunu varsayalım. Kullanıcı adı ve şifre temin edilmiştir sonra yazılım, kullanıcının aramak için XPath kullanabilirsiniz:
Normal bir kullanıcı adı ve şifre ile bu XPath çalışır, ancak saldırgan, kötü bir kullanıcı adı ve şifre göndermek ve bu gibi, kullanıcı adı veya şifre bilmeden seçilen bir
VB:
Dim FindUserXPath as String
FindUserXPath = "//Employee[UserName/text()=’" & Request("Username") & "’ And
Password/text()=’" & Request("Password") & "’]"
C#:
String FindUserXPath;
FindUserXPath = "//Employee[UserName/text()=’" + Request("Username") + "’ And
Password/text()=’" + Request("Password") + "’]";
XML düğümü alabilirsiniz:
Username: Reacher’ or 1=1 or ’a’=’a
Password: test
FindUserXPath becomes //Employee[UserName/text()=’Reacher’ or 1=1 or
’a’=’a’ And Password/text()=’test’]
Logically this is equivalent to:
//Employee[(UserName/text()=’Reacher
’ or 1=1) or
(’a’=’a’ And Password/text()=’test’)]
Bu durumda, XPatha göre sadece birinci bölümü doğru olması gerekir.Şifre kısmı önemsiz olur ve Username bölümünde 1=1 kısmı dogrular.
Uygulama bunları kullanıyorsa Sadece SQL enjeksiyon gibi, kendinizi korumak için tek tırnak filtrelemesine gidilebilir.
Security:
VB:
Dim FindUserXPath as String
FindUserXPath = "//Employee[UserName/text()=’" & Request("Username").Replace("’", "’") & "’ And
Password/text()=’" & Request("Password").Replace("’", "’") & "’]"
C#:
String FindUserXPath;
FindUserXPath = "//Employee[UserName/text()=’" + Request("Username").Replace("’", "’") + "’ And
Password/text()=’" + Request("Password").Replace("’", "’") + "’]";
Selametle // Reacher