none
IIS uzerinde request filtering RRS feed

  • Soru

  • ASP.net ve MS SQL kullandigimiz sitemizde surekli formlarda bulunan fieldler uzerinden injection denemeleri aliyoruz IIS ile bunu nasil engelleyebiliriz.

    23 Mart 2019 Cumartesi 10:15

Yanıtlar

  • Merhaba, 

    IIS açınız 

    • Sol bölümden IIS sunucunuzu seçiniz.
    • Orta bölümde bulunan "Request Filtering" tıkayınız.
    • Request Filtering penceresinde orta bölümde "rules" sekmesine tıklayınız. 
    • Sağ bölümde "Add Filtering Rule..." tıkalyınız
    • Add Filtering Rule penceresi açılacaktır. 
    • Name belirleyiniz. APP göre Scan URL ve Scan query strings işaretleyin
    • "Deny Strings" bölümüne injection yapılan karakterleri belirtiniz. 
    • Örneğin: %, /, @ gibi aşağıdaki XML tablosunu inceleyebilirsiniz. 
    <requestFiltering>
       <filteringRules>
          <filteringRule name="SQLInjection" scanUrl="false" scanQueryString="true">
             <appliesTo>
                <clear />
                <add fileExtension=".asp" />
                <add fileExtension=".aspx" />
                <add fileExtension=".php" />
             </appliesTo>
             <denyStrings>
                <clear />
                <add string="--" />
                <add string=";" />
                <add string="/*" />
                <add string="@" />
                <add string="char" />
                <add string="alter" />
                <add string="begin" />
                <add string="cast" />
                <add string="create" />
                <add string="cursor" />
                <add string="declare" />
                <add string="delete" />
                <add string="drop" />
                <add string="end" />
                <add string="exec" />
                <add string="fetch" />
                <add string="insert" />
                <add string="kill" />
                <add string="open" />
                <add string="select" />
                <add string="sys" />
                <add string="table" />
                <add string="update" />
             </denyStrings>
             <scanHeaders>
                <clear />
             </scanHeaders>
          </filteringRule>
       </filteringRules>
    </requestFiltering>
    

    Aşağıdaki PowerShell komutlarıda işinizi görecektir. 

    Start-IISCommitDelay
    
    $filteringRules = Get-IISConfigSection -CommitPath 'Default Web Site' -SectionPath 'system.webServer/security/requestFiltering' | Get-IISConfigCollection -CollectionName 'filteringRules' 
    New-IISConfigCollectionElement -ConfigCollection $filteringRules -ConfigAttribute @{ 'name' = 'Block Image Leeching'; 'scanUrl' = $false; 'scanQueryString' = $false; 'scanAllRaw' = $false; } 
    
    $Rule = Get-IISConfigCollectionElement -ConfigCollection $filteringRules -ConfigAttribute @{ 'name' = 'Block Image Leeching' }
    
    $ruleScanHeaders = Get-IISConfigCollection -ConfigElement $Rule -CollectionName 'scanHeaders' 
    New-IISConfigCollectionElement -ConfigCollection $ruleScanHeaders -ConfigAttribute @{ 'requestHeader' = 'User-Agent' }
    
    $ruleAppliesTo = Get-IISConfigCollection -ConfigElement $Rule -CollectionName 'appliesTo'
    New-IISConfigCollectionElement -ConfigCollection $ruleAppliesTo -ConfigAttribute @{ 'fileExtension' = '.gif' }
    New-IISConfigCollectionElement -ConfigCollection $ruleAppliesTo -ConfigAttribute @{ 'fileExtension' = '.jpg' }
    New-IISConfigCollectionElement -ConfigCollection $ruleAppliesTo -ConfigAttribute @{ 'fileExtension' = '.png' }
    
    $ruleDenyStrings = Get-IISConfigCollection -ConfigElement $Rule -CollectionName 'denyStrings'
    New-IISConfigCollectionElement -ConfigCollection $ruleDenyStrings -ConfigAttribute @{ 'string' = 'leech-bot' }
    
    Stop-IISCommitDelay
    Daha detaylı inceleme yapmak isterseniz. aşağıdaki linki ziyaret etmenizi tavsiye ederim. 

    https://docs.microsoft.com/en-us/iis/configuration/system.webserver/security/requestfiltering/filteringrules/ 

    • Yanıt Olarak Öneren suatkahraman 23 Mart 2019 Cumartesi 10:51
    • Yanıt Olarak İşaretleyen umit35 23 Mart 2019 Cumartesi 12:22
    23 Mart 2019 Cumartesi 10:40

Tüm Yanıtlar

  • Merhaba, 

    IIS açınız 

    • Sol bölümden IIS sunucunuzu seçiniz.
    • Orta bölümde bulunan "Request Filtering" tıkayınız.
    • Request Filtering penceresinde orta bölümde "rules" sekmesine tıklayınız. 
    • Sağ bölümde "Add Filtering Rule..." tıkalyınız
    • Add Filtering Rule penceresi açılacaktır. 
    • Name belirleyiniz. APP göre Scan URL ve Scan query strings işaretleyin
    • "Deny Strings" bölümüne injection yapılan karakterleri belirtiniz. 
    • Örneğin: %, /, @ gibi aşağıdaki XML tablosunu inceleyebilirsiniz. 
    <requestFiltering>
       <filteringRules>
          <filteringRule name="SQLInjection" scanUrl="false" scanQueryString="true">
             <appliesTo>
                <clear />
                <add fileExtension=".asp" />
                <add fileExtension=".aspx" />
                <add fileExtension=".php" />
             </appliesTo>
             <denyStrings>
                <clear />
                <add string="--" />
                <add string=";" />
                <add string="/*" />
                <add string="@" />
                <add string="char" />
                <add string="alter" />
                <add string="begin" />
                <add string="cast" />
                <add string="create" />
                <add string="cursor" />
                <add string="declare" />
                <add string="delete" />
                <add string="drop" />
                <add string="end" />
                <add string="exec" />
                <add string="fetch" />
                <add string="insert" />
                <add string="kill" />
                <add string="open" />
                <add string="select" />
                <add string="sys" />
                <add string="table" />
                <add string="update" />
             </denyStrings>
             <scanHeaders>
                <clear />
             </scanHeaders>
          </filteringRule>
       </filteringRules>
    </requestFiltering>
    

    Aşağıdaki PowerShell komutlarıda işinizi görecektir. 

    Start-IISCommitDelay
    
    $filteringRules = Get-IISConfigSection -CommitPath 'Default Web Site' -SectionPath 'system.webServer/security/requestFiltering' | Get-IISConfigCollection -CollectionName 'filteringRules' 
    New-IISConfigCollectionElement -ConfigCollection $filteringRules -ConfigAttribute @{ 'name' = 'Block Image Leeching'; 'scanUrl' = $false; 'scanQueryString' = $false; 'scanAllRaw' = $false; } 
    
    $Rule = Get-IISConfigCollectionElement -ConfigCollection $filteringRules -ConfigAttribute @{ 'name' = 'Block Image Leeching' }
    
    $ruleScanHeaders = Get-IISConfigCollection -ConfigElement $Rule -CollectionName 'scanHeaders' 
    New-IISConfigCollectionElement -ConfigCollection $ruleScanHeaders -ConfigAttribute @{ 'requestHeader' = 'User-Agent' }
    
    $ruleAppliesTo = Get-IISConfigCollection -ConfigElement $Rule -CollectionName 'appliesTo'
    New-IISConfigCollectionElement -ConfigCollection $ruleAppliesTo -ConfigAttribute @{ 'fileExtension' = '.gif' }
    New-IISConfigCollectionElement -ConfigCollection $ruleAppliesTo -ConfigAttribute @{ 'fileExtension' = '.jpg' }
    New-IISConfigCollectionElement -ConfigCollection $ruleAppliesTo -ConfigAttribute @{ 'fileExtension' = '.png' }
    
    $ruleDenyStrings = Get-IISConfigCollection -ConfigElement $Rule -CollectionName 'denyStrings'
    New-IISConfigCollectionElement -ConfigCollection $ruleDenyStrings -ConfigAttribute @{ 'string' = 'leech-bot' }
    
    Stop-IISCommitDelay
    Daha detaylı inceleme yapmak isterseniz. aşağıdaki linki ziyaret etmenizi tavsiye ederim. 

    https://docs.microsoft.com/en-us/iis/configuration/system.webserver/security/requestfiltering/filteringrules/ 

    • Yanıt Olarak Öneren suatkahraman 23 Mart 2019 Cumartesi 10:51
    • Yanıt Olarak İşaretleyen umit35 23 Mart 2019 Cumartesi 12:22
    23 Mart 2019 Cumartesi 10:40
  • Ozan hocam çok güzel anlatmış bizim içinde faydalı bir çözüm olmuş not aldım bir gün lazım olur. 
    23 Mart 2019 Cumartesi 10:52
  • Tesekkur ederiz ise yaradi IPleri de firewall uzerinden engelleyecegiz. Sorun tam olarak cozulecek diye dusunuyoruz.
    23 Mart 2019 Cumartesi 12:23
  • Ben teşekkür ederim. Kolay gelsin 
    23 Mart 2019 Cumartesi 12:57