当前位置: 当前位置:首页 > 焦点 > kali php渗透正文

kali php渗透

作者:热点 来源:时尚 浏览: 【大 中 小】 发布时间:2026-10-17 06:22:49 评论数:

拿到一台Kali,装好Apache和PHP,很多人就觉得自己能挖洞了。真扔给你一个目标站点,你可能连PHP文件里哪个参数能注入都找不着。渗透测试不是装几个工具点几下按钮,PHP这块尤其吃细节。

先聊最经典的场景:一个登录框。你输入 ' OR 1=1 --,页面没反应。换成 admin' --,还是没反应。别急着骂WAF,打开浏览器开发者工具,看看请求体里参数名到底是什么。我见过太多人对着 username 一顿操作,结果后端实际接收的是 user_name。Kali里用Burp Suite抓包,把请求发到Repeater,改一个参数发一次,观察响应长度变化。这比盲目跑sqlmap快得多。

sqlmap确实好用,但别一上来就 sqlmap -u "http://target.com/login.php" --forms --batch。先手动测。在用户名输入 admin' AND 1=1 -- 和 admin' AND 1=2 -- ,看返回是否不同。如果不同,说明存在布尔盲注。这时候再交给sqlmap,指定 --technique=B,速度会快很多。有次我测一个站,手动发现 id=1' 报错,但sqlmap默认跑半天没结果。后来加了 --prefix="'" --suffix="-- -",三分钟出库名。工具是死的,人是活的。

文件包含漏洞在PHP里太常见了。?page=../../../../etc/passwd 这种老套路,现在很多站都过滤了 ../。试试双写:....//....//....//etc/passwd。或者用PHP伪协议:?page=php://filter/convert.base64-encode/resource=index.php。拿到base64字符串,Kali里 echo "字符串" | base64 -d,源码就到手了。有次我遇到一个站,直接包含 /proc/self/environ 不行,但包含日志文件可以。用Burp往User-Agent里写 ,然后包含 /var/log/apache2/access.log,直接getshell。这个思路不新鲜,但实战中就是能打穿一片。

命令执行这块,PHP的 system()、exec()、shell_exec() 是重灾区。看到 ?cmd=ping -c 1 127.0.0.1,先试 ;id,不行试 |id,再不行试 `id`。如果目标过滤了空格,用 ${ IFS} 代替。比如 cat${ IFS}/etc/passwd。有次遇到一个站,过滤了 cat,但没过滤 tac。反过来读文件,照样出内容。Kali里自带 commix,但手动测更靠谱。commix有时候会把正常响应误判为漏洞。

文件上传是另一个高频入口。前端JS验证?Burp改包直接绕过。后端验证MIME类型?改 Content-Type: image/jpeg。验证后缀?试试 .phtml、.php5、.pht。如果只允许图片,用 copy image.jpg /b + shell.php /b shell.jpg 制作图片马,再配合文件包含或者.htaccess解析。有次我上传了一个 .htaccess 文件,内容写 AddType application/x-httpd-php .jpg,然后传 shell.jpg,直接解析。这个手法在Apache环境里屡试不爽。

Kali里 /usr/share/webshells/php/ 目录下有一堆现成的webshell。别直接用,改一改特征。比如 simple-backdoor.php 里 cmd 参数太明显,改成 _ 或者 a。或者自己写一个:。够短,够隐蔽。连上去之后,第一件事是 whoami,然后 uname -a 看内核版本。如果是老内核,直接上 searchsploit 找提权exp。别在webshell里瞎逛,容易被发现。

PHP渗透的核心不是工具多,是理解代码逻辑。你得知道 $_GET 和 $_POST 怎么传参,知道 include 和 require 的区别,知道 preg_replace 的 /e 修饰符在PHP7里已经没了。Kali只是给你一把刀,砍哪里、怎么砍,看你自己。多手动测,少依赖自动化。一个站一个站地啃,比看一百个教程管用。