免责声明
本博客文章仅供教育和研究目的使用。本文中提到的所有信息和技术均基于公开来源和合法获取的知识。本文不鼓励或支持任何非法活动,包括但不限于未经授权访问计算机系统、网络或数据。
作者对于读者使用本文中的信息所导致的任何直接或间接后果不承担任何责任。包括但不限于因使用本文所述技术而可能导致的法律诉讼、财产损失、隐私泄露或其他任何形式的责任。
在进行任何渗透测试或安全研究之前,请确保您已获得所有必要的授权,并遵守适用的法律和道德准则。未经授权的安全测试可能违反法律,并可能导致严重的法律后果。
本文中的内容仅供参考,不应被视为专业建议。在进行任何安全相关活动之前,建议咨询具有相应资质的专业人士。
作者保留对本博客文章的所有权利,并有权在未经通知的情况下进行修改或删除。
0x00 环境简介与环境搭建
0x00-1 环境简介
序号 | 服务器 | 角色 | 网络位置 | 系统处理器架构 | IPv4 地址 |
1 | Kali GNU/Linux Rolling | 渗透机器 | 边缘 | x86_64 | 8.27.11.7 |
2 | ? | 目标服务器 | 边缘 | ? | ? |
0x00-2 行动目标
获取目标服务器中的 proof.txt 文件内容
0x01 探索发现阶段
0x01-1 主机发现
0x01-2 端口扫描
0x01-3 服务探测
0x01-4 识别 Web 应用框架及版本
0x01-5 探索发现阶段总结
在探索发现阶段中,通过 nmap 扫描结果发现目标服务器开启了 80 端口的 HTTP 服务,777 端口的 SSH 服务,通过访问服务器的 HTTP 服务发现网站网页并没有可交互的地方
0x02 入侵和感染阶段
0x02-1 对 Web 服务器进行目录爆破
使用 gobuster 也可以爆破,这里使用 dirsearch 进行爆破
gobuster dir -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -u http://8.27.11.13
对这几个目录进行访问,并未发现有效的收获
0x02-2 查看网站首页源代码
网站首页代码量很少,并且只有 img 标签处有调用资源,尝试下载 main.gif 并对其进行分析
0x02-3 下载 main.gif 进行分析
查看图片类型以及查看图片中是否存在隐藏文件
读取 main.gif 文件的所有元数据,发现文件中嵌入了一条注释,内容为 P-): kzMb5nVYJw。这条注释可能是人为添加的,也可能是某种隐藏信息或标记
使用 strings 命令扫描 main.gif 文件的二进制内容,提取其中所有连续的、可打印的 ASCII 或 Unicode 字符串,发现 kzMb5nVYJw 这一段字符串很特殊,猜测应该会是一个 Web 路径,下面尝试访问路径
0x02-4 尝试访问 Web 路径
发现网页内容很简单,只有一个输入框,存在交互场景,猜测这里会出现漏洞
0x02-5 查看网页源代码
通过查看网页源码发现这个输入框的类型为密码类型,提交方式为 POST,回车后跳转至 index.php 页面,或者说这个登录页面本身就是 index.php 页面。注释得意思为这个表单没有连接到 mysql,密码没那么复杂,猜测网站使用的数据库为 MySQL,并且存在弱密码
0x02-6 尝试使用 hydra 爆破密码
由于提交方式为 POST,所以 http-form-post 不可缺省,还需要注意的是 hydra 在进行登录时需要 -l 参数指定用户名,不过再次场景中无用户名,因此随便输入一个用户名即可
0x02-7 登录访问页面
发现登录后的网页依旧有一个输入框,只不过类型为 text,提交方式为 GET,回车后跳转至 420search.php 页面,那么直接回车访问 420search.php 页面
发现这个页面是一个查询页面,查询的是数据库中的用户名字段的数据,因此猜测这里存在 SQL 注入,下面尝试进行 SQL 注入
0x02-8 尝试进行 SQL 注入
为了能够更为深刻的巩固 SQL 注入的知识,这里采用手工注入的方式,使用 sqlmap 工具也可以
0x02-8.1 判断闭合条件
闭合条件常见的无非就是 '、(、)、/、\、#、" 这几个字符
测试后发现必和条件为双引号,并且可以直接判断出注入类型为字符型注入
0x02-8.2 判断字段数
0x02-8.3 确定回显点
为了使页面更简洁,输入一个查不到的数据,目的是为了让页面少显示或不显示无效内容
0x02-8.4 爆库
查询当前用户、当前数据库名、所有数据库名
0x02-8.5 爆表
seth 数据库中只有一张 users 表
0x02-8.6 爆字段
查出 users 表中存在 id、user、pass、position 字段,猜测 user 和 pass 字段中存储了用户的用户名以及密码
0x02-8.7 爆数据
发现只有 ramses 和 isis 两个用户,并且 ramses 用户的密码看似为 base64 加密的形式,isis 用户的密码直接表明不允许
0x02-8.8 尝试破解 ramses 用户密码
32 位字符串,猜测为 md5 加密,使用工具进行验证
使用在线工具破解
0x02-9 尝试登录 phpMyAdmin 和 SSH
0x02-9.1 登录 phpMyAdmin
以失败告终
0x02-9.2 登录 SSH
登陆成功,不过现在具有的权限比较低,接下来尝试将权限提升至 root 权限
0x03 攻击和利用阶段
0x03-1 查找具有 suid 权限的文件
0x03-2 尝试运行文件分析文件功能
执行后发现该文件执行了 sh 和 ps 命令,实战情况下可以将文件保存到本地使用 strace 命令进行分析
这样的话就可以使用环境变量劫持进行权限提升
0x03-3 修改环境变量
0x03-4 执行文件
0x04 渗透总结
1、通过探索发现阶段收集到目标服务器开放了一个常见的端口和两个常见的服务,80 端口的 HTTP 服务和 777 端口 SSH 服务
2、通过目录爆破发现常见的目录以及文件,但是没有很明显的有效信息
3、通过对网站首页的 main.gif 文件进行元数据分析,发现图片中存在一段疑似人为添加的隐藏字符串,尝试当作目录访问后出现页面
4、使用 hydra 对登录页面爆破后,再对第二个页面进行 SQL 注入,获取到 ramses 用户的密码
5、使用获取到的登录凭证尝试登录 SSH 服务,登录成功后查找具有 suid 权限的文件成功将权限提升至 root 权限