许多Web应用程序提供的功能将数据从其他Web服务器,由于种种原因。下载XML提要,从远程服务器,Web应用程序可以使用用户指定的URL,获取图像,此功能可能会被滥用,使制作的查询使用易受攻击的Web应用程序作为代理运行在远程攻击其他服务的基于文本的文件等。 /本地服务器。通过这种滥用而产生的功能被命名为攻击,跨站点端口的攻击(XSPA)。
; Y8 P( }7 N" h- S% s5 m& d1 YXSPA(SSPA)是什么?
0 h3 k! k1 h9 F1 \7 e! \如果应用程序处理用户提供的URL和不验证/消毒后端从远程服务器接收到响应,然后将其发送回客户端应用程序是容易受到跨站点端口的攻击。攻击者可以通过发送特制的查询到一个易受攻击的Web应用程序代理攻击,面临的外部Internet服务器,内网设备和Web服务器本身易受攻击的Web应用程序使用的广告功能。的反应,在某些情况下,可以进行研究,以确定服务的可用性(端口状态,横幅等),甚至在非传统的方式获取数据的远程服务。3 _) o5 w9 e. u F, j- T. j
PHP fsockopen() function:- }) D Y4 i! \9 O- M7 l2 r6 e# ?3 K, |4 O
<?php6 @% ]5 i( u8 V
function GetFile($host,$port,$link)8 \! v0 `1 F" }. j( O
{ B% Y, |% u( V( z/ I
$fp = fsockopen($host, intval($port), $errno, $errstr, 30);
' y: ~9 v; ?) _5 dif (!$fp) { p! u" J Z1 _. o, i5 Y
echo “$errstr (error number $errno) \n”;
* r* X! r& W& M7 T: w- a3 W0 _; T} else {
! l U) W# ?" q5 |! r! T$out = “GET $link HTTP/1.1\r\n”;( t) j! T8 _+ Y0 `6 U" ~
$out .= “Host: $host\r\n”;
: V; S9 ]+ w1 e* [' J0 R3 q+ {$out .= “Connection: Close\r\n\r\n”;8 {, d: h3 ?% |. |; x
$out .= “\r\n”;4 N& V! _( m6 Z; G: v" L" ^7 _
fwrite($fp, $out);
5 \4 H) A6 X& Q5 P- O$contents=”;
" Z q9 j! e' y. b! s( h/ bwhile (!feof($fp)) {
+ y9 u8 D1 E& ], G2 S$ e/ ?$contents.= fgets($fp, 1024);
* }- Q9 o; B V; [}
, g6 o% b: A1 J Ufclose($fp);. ^, e1 F) z! @! b7 @
return $contents;1 U0 p4 K- [# N# Z2 ~1 A' S5 S& t
}, Z' h6 l0 S5 {1 I; d
}
) ]0 D& F$ _, ~) K?>2 z. Q$ W4 t( m5 P( n; j- m
复制代码
. M% T( _0 b+ O此实现获取数据,如由一个用户使用的fsockopen PHP函数(任何文件或HTML)请求。此功能建立一个TCP连接的套接字的服务器上,并进行原始数据传输。
3 n) k) y* @! w$ u2 ^ [- P PHP curl_exec() function:
& N9 v! n- l* l<?php
2 k% o+ L0 k4 L$ c+ dif (isset($_POST['url']))
- l3 E' A9 X7 Y# K. C{7 Q3 F7 a" o" A) {/ C) x5 U
$link = $_POST['url']; C+ u6 Z, I3 b. u& N3 N. o5 K0 R7 i
$curlobj = curl_init();5 a. G3 C$ ?& ~
curl_setopt($curlobj, CURLOPT_POST, 0);" Y2 C1 H" K" V) O7 ]
curl_setopt($curlobj,CURLOPT_URL,$link);. r K$ ?" [# G) d
curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
! a% i! k+ J: q+ e8 x s$result=curl_exec($curlobj);
" p5 K- _& l: z( e. h Rcurl_close($curlobj);4 N& I3 k% D* w* Q' m/ v# P
3 k; y) N5 I6 B$filename = ‘./curled/’.rand().’.txt’;! X0 y" _# @2 z0 M
file_put_contents($filename, $result);
: g3 O3 ?$ \9 _3 L, vecho $result;& ` V7 z5 t6 k
}
+ ?& G7 ~ a! m7 p4 P z?>4 ?( Z* L" w9 x/ L R* y' `. z
复制代码
; G6 X0 _( B' H$ D这是另一种非常常见的实现,通过PHP使用curl获取数据。“卷曲”文件夹下的文件/数据下载并存储到磁盘,并附加一个随机数“。txt’结尾的文件扩展名。+ U; |8 g6 c7 q+ \% m
在本系列的下一部分,我们将看到一些可以启动的攻击使用此vulnerbility。XSPA允许攻击者在目标服务器基础设施,主要是内网的Web服务器,Web服务器本身,以及面向互联网的服务器以及。目前,我已经遇到以下五种不同的攻击方式,可以启动使用XSPA:6 E2 ^6 D a# ?: G5 N; }
1。端口扫描远程互联网服务器,内网设备和本地Web服务器本身。横幅敛也有可能在某些情况下,
1 g( m& B7 ~5 J3 d2。开发弱势运行的程序在Intranet或本地Web服务器
4 l6 q- @: u: A0 z* n- j( p3。攻击内部/外部Web应用程序很容易通过URL来获取参数的漏洞(SQLI,参数操作等)1 {% d) a$ { r0 p
4。指纹图谱的Intranet Web应用程序使用标准的应用程序的默认文件及行为
U0 ?6 A3 L% y, N1 U5。阅读使用file :/ / /协议处理程序的本地Web服务器上的文件。 |