XPATH İnjection
SQL Injection , bir web sitesi XML veri için bir XPath sorgusu oluşturmak için kullanıcı tarafından sağlanan bilgileri kullandığında, XPath Enjeksiyon saldırılar meydana gelir. Web sitesinin içine kasıtlı olarak hatalı biçimlendirilmiş bir bilgi göndererek, bir saldırganın o normal erişimi olmayabilir XML veri olarak yapılandırılmıştır veya erişim veri olabilir. Hatta XML veri (örneğin, bir XML tabanlı kullanıcı dosyası gibi) kimlik doğrulaması için kullanılır olup olmadığını web sitesinde ayrıcalıklarını yükseltmek mümkün olabilir.
Örnek Güvenlik Açığı;
Örnekler için bu XML kısmını kullanacağız.
Kod:
<?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>
</Employees>
Kullanıcılara giriş için bu tür bir veri dosyası kullanan bir web sayfasında bir kullanıcı kimlik doğrulama sistemi var herhalde. Bir kullanıcı adı ve şifre temin edilmiştir yazılım kullanıcıyı aramak için XPath kullanabilirsiniz..
Kod:
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") + "']";
Normal bir kullanıcı adı ve şifre ile bu XPath çalışacak ama bir saldırganın bir kullanıcı adı ve şifre göndermek içinde olabilir ve bu gibi kullanıcı adı veya şifre bilmeden seçilen bir XML düğümü olsun..
Kod:
Username: blah' or 1=1 or 'a'='a
Password: blah
FindUserXPath becomes //Employee[UserName/text()='blah' or 1=1 or
'a'='a' And Password/text()='blah']
Logically this is equivalent to:
//Employee[(UserName/text()='blah' or 1=1) or
('a'='a' And Password/text()='blah')]
Bu durumda XPath 'in sadece ilk kısmı doğru olması gerekir ...
yüzdeyüz çalıntı
SQL Injection , bir web sitesi XML veri için bir XPath sorgusu oluşturmak için kullanıcı tarafından sağlanan bilgileri kullandığında, XPath Enjeksiyon saldırılar meydana gelir. Web sitesinin içine kasıtlı olarak hatalı biçimlendirilmiş bir bilgi göndererek, bir saldırganın o normal erişimi olmayabilir XML veri olarak yapılandırılmıştır veya erişim veri olabilir. Hatta XML veri (örneğin, bir XML tabanlı kullanıcı dosyası gibi) kimlik doğrulaması için kullanılır olup olmadığını web sitesinde ayrıcalıklarını yükseltmek mümkün olabilir.
Örnek Güvenlik Açığı;
Örnekler için bu XML kısmını kullanacağız.
Kod:
<?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>
</Employees>
Kullanıcılara giriş için bu tür bir veri dosyası kullanan bir web sayfasında bir kullanıcı kimlik doğrulama sistemi var herhalde. Bir kullanıcı adı ve şifre temin edilmiştir yazılım kullanıcıyı aramak için XPath kullanabilirsiniz..
Kod:
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") + "']";
Normal bir kullanıcı adı ve şifre ile bu XPath çalışacak ama bir saldırganın bir kullanıcı adı ve şifre göndermek içinde olabilir ve bu gibi kullanıcı adı veya şifre bilmeden seçilen bir XML düğümü olsun..
Kod:
Username: blah' or 1=1 or 'a'='a
Password: blah
FindUserXPath becomes //Employee[UserName/text()='blah' or 1=1 or
'a'='a' And Password/text()='blah']
Logically this is equivalent to:
//Employee[(UserName/text()='blah' or 1=1) or
('a'='a' And Password/text()='blah')]
Bu durumda XPath 'in sadece ilk kısmı doğru olması gerekir ...
yüzdeyüz çalıntı
