渗透测试ctfshow——黑盒测试下的Web漏洞挖掘与利用解析(二) 本文从弱口令爆破、目录枚举到本地文件包含 LFI 的多种 getshell 手法系统梳理了 Web 安全渗透的核心场景。无论是日志文件注入、Session 文件利用还是 PHP 伪协议的实战技巧都讲清了原理与利用条件是从基础到进阶的实用参考帮你快速掌握渗透测试的关键思路。文章目录情景四构造脚本爆破密码情景五敏感文件泄露Web目录枚举弱口令爆破情景六弱口令爆破Web目录枚举情景七本地文件包含LFI本地文件包含getshell的几种方式1. 日志文件包含 Getshell原理条件2. Session 文件包含 Getshell原理条件3. 上传文件配合 LFI Getshell原理条件4. PHP 伪协议利用1php://input2php://filter解题思路总结情景四构造脚本爆破密码提示密码前2位是小写字母后三位是数字这里我们还是打开网页惯例尝试URL处是否存在SQL注入随后后台管理系统尝试登陆这次的万能密码竟然失败了但是在翻看源代码的时候发现了一个图片而这个与题目给我们的提示”密码前2位是小写字母后三位是数字“相关联所以这里编写一个简单的python脚本importitertoolsimportstring lettersstring.ascii_lowercase# 默认所有的小写字母a-zdigitsstring.digits# 0-9output_file1.txtwithopen(1.txt,w,encodingutf-8)asf:forl1,l2,d1,d2,d3initertools.product(letters,letters,digits,digits,digits):passwordl1l2d1d2d3 f.write(password\n)print(f成功写入所有密码组合)随后进行爆破成功得到最终密码xy123情景五敏感文件泄露Web目录枚举还是老样子先进行Web目录枚举但这次不一样发现了新的目录/install/ /install/index.php?upgrade/访问一下/install目录得到如下结果根据提示访问/install/?install得到结果弱口令爆破因为不知道默认密码因此我们尝试进行弱口令爆破这里让GPT生成了几个弱口令成功爆破得到结果情景六弱口令爆破Web目录枚举还是老样子访问/install目录得到了一个新文件名lock.dat再访问/clear.php页面成功重置密码再次进行爆破密码还是一样但这里我反倒试不出了不管了知道方法就行情景七本地文件包含LFI前面部分和上一关一样这里我们扫描发现了一个新目录/debug这里robots.txt文件也提示我们访问该目录随后访问发现为“文件不存在”看到file not exist说明 file 参数确实被用来读取文件但传入的路径不存在 / 被过滤了。所以接下来我们可以确定一下参数名/debug/?fileindex.php /debug/?filedebug.php得到结果说明确实存在本地文件包含LFI漏洞之前也写过文章感兴趣的可以看一下Tomato 靶场完整渗透思路本地文件包含LFI脏牛提取本地文件包含getshell的几种方式本地文件包含Local File InclusionLFI是 Web 安全中一种较常见的漏洞攻击者可以通过服务器端动态包含文件的功能读取服务器上的敏感文件。在某些情况下如果服务器配置不当LFI 还能够进一步升级为远程代码执行RCE最终实现 getshell。以下是几种常见的 LFI getshell 方式的简单介绍。1. 日志文件包含 Getshell这是最经典的 LFI 利用方式之一。原理Web 服务器会记录访问日志例如 Apache、Nginx 的 access.log。攻击者可以在 User-Agent、Referer 等 HTTP 头中插入 PHP 代码?phpsystem($_GET[cmd]);?服务器记录日志后再利用 LFI 去包含日志文件?page/var/log/apache2/access.log如果日志中的 PHP 代码被解析执行即可获得 WebShell。# 常见日志路径Linux /var/log/apache2/access.log /var/log/nginx/access.log Windows C:\xampp\apache\logs\access.log条件目标存在 LFI日志文件可读PHP 以解析方式包含日志2. Session 文件包含 GetshellPHP 默认会将 Session 数据存储为文件。原理攻击者先向 Session 中写入恶意 PHP 代码例如?phpeval($_POST[x]);?然后利用 LFI 包含对应 Session 文件?page/tmp/sess_xxxxxx若 Session 文件被 PHP 解析则可执行代码。# 常见 Session 路径Linux /tmp/ /var/lib/php/sessions/ Windows C:\Windows\Temp\条件Session 可控Session 文件路径可预测include 时会被 PHP 解析3. 上传文件配合 LFI Getshell有些网站允许上传图片、头像等文件。原理攻击者上传一个包含 PHP 代码的文件例如GIF89a?phpphpinfo();?虽然扩展名可能是.jpg但如果服务器只是检查后缀而不检查内容则文件中依旧存在 PHP 代码。随后通过 LFI 包含上传文件?pageuploads/test.jpg若服务器解析其中的 PHP 代码则 getshell 成功。条件存在文件上传功能上传目录路径可知LFI 可包含上传文件4. PHP 伪协议利用PHP 支持多种伪协议可以配合 LFI 使用。1php://input当目标代码类似include($_GET[page]);攻击者可构造?pagephp://inputPOST 数据中写入?phpsystem(id);?服务器包含输入流后执行代码。2php://filter常用于源码读取php://filter/readconvert.base64-encode/resourceindex.php虽然一般不能直接 getshell但可用于读取源码、获取数据库密码等敏感信息为后续利用做准备。解题思路了解了上述几种常见的getshell方式所以我们可以尝试一下日志注入首先还是访问/install目录做了这么久大概可以猜测出该文件的路径为/var/www/html/install/lock.dat所以这里我们可以利用UA头写入脚本删除lock.dat文件然后在进行密码爆破也可以用BP进行?php unlink(/var/www/html/install/lock.dat);?随后访问日志的位置不知道payload?file/etc/os-release日志位置/var/log/nginx/access.log检查日志成功注入刚才的PHP脚本再次访问/install发现成功删除lock.dat其他步骤跟之前一样密码爆破成功得到flag总结期待下次再见