许多Web应用程序提供的功能将数据从其他Web服务器,由于种种原因。下载XML提要,从远程服务器,Web应用程序可以使用用户指定的URL,获取图像,此功能可能会被滥用,使制作的查询使用易受攻击的Web应用程序作为代理运行在远程攻击其他服务的基于文本的文件等。 /本地服务器。通过这种滥用而产生的功能被命名为攻击,跨站点端口的攻击(XSPA)。
4 ?3 _, s5 u4 E# uXSPA(SSPA)是什么?
; p' L, b8 b: C3 B$ a# r如果应用程序处理用户提供的URL和不验证/消毒后端从远程服务器接收到响应,然后将其发送回客户端应用程序是容易受到跨站点端口的攻击。攻击者可以通过发送特制的查询到一个易受攻击的Web应用程序代理攻击,面临的外部Internet服务器,内网设备和Web服务器本身易受攻击的Web应用程序使用的广告功能。的反应,在某些情况下,可以进行研究,以确定服务的可用性(端口状态,横幅等),甚至在非传统的方式获取数据的远程服务。! s9 J0 h+ A$ W6 ?
PHP fsockopen() function:
( r, D! U0 f6 p7 g- W' Z* V<?php
1 `4 I; U+ C* a/ L) {6 dfunction GetFile($host,$port,$link)" X! w5 M" p4 i/ P& G) _
{
% \2 S) ^- |9 \0 T" u$fp = fsockopen($host, intval($port), $errno, $errstr, 30);
) _2 j, k+ i0 n% C" t& eif (!$fp) {
1 b5 |6 Z- i k& o ~9 D; Uecho “$errstr (error number $errno) \n”;4 I' Z0 J' N3 \0 D, F
} else {
$ I4 A/ |- O3 L) T2 }$out = “GET $link HTTP/1.1\r\n”;4 F0 D1 y' u5 n" u1 N. A
$out .= “Host: $host\r\n”;5 i- A$ ^, f/ _0 i* Z+ ]6 j( @1 y
$out .= “Connection: Close\r\n\r\n”;
7 q. p, J8 ?" V$ |/ P2 Q$out .= “\r\n”;/ g$ n4 ?- Q# F
fwrite($fp, $out);: `8 c$ D+ n' B3 b
$contents=”;. ^$ w6 A/ B, w
while (!feof($fp)) {) A9 }8 D; J9 d" H/ |. D
$contents.= fgets($fp, 1024);0 \& v! s, {2 g) X9 Y$ j6 U$ E
}& V2 B# n+ S; G# Z N* P' R% e. Z
fclose($fp);0 o+ r% i! U8 B9 q8 D% R' w+ Q' ]5 R5 \
return $contents;# R: L5 r+ m) H! C
}4 Q1 g& F; A( x! H1 c2 u, y( w6 B. e" V0 Y
}
* v s+ [4 R: P3 C/ r2 z, S0 j2 R1 ^/ a/ H?> x& M6 y. u0 V% a
复制代码
* W( w1 g7 I3 t0 Z此实现获取数据,如由一个用户使用的fsockopen PHP函数(任何文件或HTML)请求。此功能建立一个TCP连接的套接字的服务器上,并进行原始数据传输。
3 U/ o; g( n# I7 l PHP curl_exec() function:
/ N. d, X8 b* ^+ k# ~- d, I, Y# f<?php8 J$ Q G( t: F7 Z
if (isset($_POST['url']))+ z' W8 \. h0 V) y5 J
{
! s/ `, N# k4 B5 b9 \$link = $_POST['url'];
' B1 K, s I: [' c$curlobj = curl_init();
! Y( ]5 A) ^. p/ P4 |9 Ycurl_setopt($curlobj, CURLOPT_POST, 0);& g; @4 P& q5 h. ?
curl_setopt($curlobj,CURLOPT_URL,$link);
5 r; {# X. w+ }9 g$ T3 U! r/ {curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1); ?3 B$ U7 P$ e5 o2 B! [, C$ f
$result=curl_exec($curlobj);' I! ]0 R/ |% z! w2 |& O
curl_close($curlobj);8 n: B% M, h* b# _4 b3 z$ M
) `7 M9 A9 a; g- K
$filename = ‘./curled/’.rand().’.txt’;+ s( u/ u: v* G( b- [1 U5 Y
file_put_contents($filename, $result);" y- ~1 a: H+ |& a
echo $result;7 u% x' Q2 P) v$ u7 }# t1 o& ~
}
2 M9 _, H. p: m- L) ~# t5 Z I?>
" Z$ F- f3 f q# b4 p! O1 J* c复制代码
$ {7 Q/ L! P2 o; t这是另一种非常常见的实现,通过PHP使用curl获取数据。“卷曲”文件夹下的文件/数据下载并存储到磁盘,并附加一个随机数“。txt’结尾的文件扩展名。$ R; `, x; R" }4 H6 M- I, v
在本系列的下一部分,我们将看到一些可以启动的攻击使用此vulnerbility。XSPA允许攻击者在目标服务器基础设施,主要是内网的Web服务器,Web服务器本身,以及面向互联网的服务器以及。目前,我已经遇到以下五种不同的攻击方式,可以启动使用XSPA:
$ T, \( s3 E- B1 U1。端口扫描远程互联网服务器,内网设备和本地Web服务器本身。横幅敛也有可能在某些情况下,
0 ?( f6 {6 @. c6 S3 I5 ~) s& k6 f2。开发弱势运行的程序在Intranet或本地Web服务器
. {9 Y$ ]2 K) [4 t8 }3 f3。攻击内部/外部Web应用程序很容易通过URL来获取参数的漏洞(SQLI,参数操作等)$ t" H3 T3 X" I7 d3 g' u
4。指纹图谱的Intranet Web应用程序使用标准的应用程序的默认文件及行为7 J/ a1 Q4 {5 J; S
5。阅读使用file :/ / /协议处理程序的本地Web服务器上的文件。 |