许多Web应用程序提供的功能将数据从其他Web服务器,由于种种原因。下载XML提要,从远程服务器,Web应用程序可以使用用户指定的URL,获取图像,此功能可能会被滥用,使制作的查询使用易受攻击的Web应用程序作为代理运行在远程攻击其他服务的基于文本的文件等。 /本地服务器。通过这种滥用而产生的功能被命名为攻击,跨站点端口的攻击(XSPA)。
8 d- R; Q" r& C" s8 ~XSPA(SSPA)是什么?
' o" V) y* Q; n |" L" j如果应用程序处理用户提供的URL和不验证/消毒后端从远程服务器接收到响应,然后将其发送回客户端应用程序是容易受到跨站点端口的攻击。攻击者可以通过发送特制的查询到一个易受攻击的Web应用程序代理攻击,面临的外部Internet服务器,内网设备和Web服务器本身易受攻击的Web应用程序使用的广告功能。的反应,在某些情况下,可以进行研究,以确定服务的可用性(端口状态,横幅等),甚至在非传统的方式获取数据的远程服务。
* p/ [$ i2 g/ a' i# p' I: @, pPHP fsockopen() function:. P/ k6 B# r4 ]% P6 p& u
<?php! T- T; [: m, N/ i# w v+ c
function GetFile($host,$port,$link)+ Z4 ^" h$ Y1 \$ Q; t
{/ _' ~3 `' o& ~$ y* n4 x( w
$fp = fsockopen($host, intval($port), $errno, $errstr, 30);! |7 Z* |% L9 X) }' ^' G
if (!$fp) {
; Q, b a. g" f" decho “$errstr (error number $errno) \n”;
" I9 e2 K# F( H1 Z} else {
1 z& J N. |' `" h1 u) R$out = “GET $link HTTP/1.1\r\n”;0 c {/ [& b( h5 z( o1 p, K2 s. n9 F
$out .= “Host: $host\r\n”;" x& H" \) c7 B* p w) Z
$out .= “Connection: Close\r\n\r\n”;
1 G0 L- N5 T- Y$out .= “\r\n”;
0 s. k- P9 e' y. P6 f: Z9 cfwrite($fp, $out);
4 s& R6 G4 ^$ V( c$ G$contents=”;. X6 B5 d8 x+ X2 k* V; `
while (!feof($fp)) {5 A6 Q( n. w7 c, k% L8 p
$contents.= fgets($fp, 1024);8 w: ^% ^: v/ _# X" z
}
6 F: J$ X( Q7 _2 ]( {fclose($fp);3 I& j4 S5 S3 k/ ]' R O5 ?" ]
return $contents;
4 L; v1 @8 r, @. ]' q! \}/ o# |5 p, u1 |7 V$ e( b$ N
}$ x9 [1 K6 U' E, O. o. L" C
?>" f6 a8 w$ ?7 [. _8 F. W6 {/ ?) Q
复制代码
3 S" G7 h- h- ]' c* F此实现获取数据,如由一个用户使用的fsockopen PHP函数(任何文件或HTML)请求。此功能建立一个TCP连接的套接字的服务器上,并进行原始数据传输。' A" `! e* e' l# y9 L/ I/ ]
PHP curl_exec() function:
7 G- T7 a" w* y5 |& c, \<?php
8 M/ z" ^- i( n5 Mif (isset($_POST['url']))
" ?, C0 F& {: V{
' a2 E* j, e8 I1 `8 J" D* `( I$link = $_POST['url'];
( I, v1 d3 H/ v8 ]$ m) T$curlobj = curl_init();/ w' D/ A [/ j% q! O2 o+ u
curl_setopt($curlobj, CURLOPT_POST, 0);
( U3 }% A6 r$ u- |1 Z ~" ccurl_setopt($curlobj,CURLOPT_URL,$link);
9 e; N; }; g2 H1 K8 dcurl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);+ h1 }" p+ a \! z! i4 |; {
$result=curl_exec($curlobj);/ |3 D! p7 F8 H# s' D. j- `% x
curl_close($curlobj);) y. W1 @+ L: D3 `+ K: W3 t& [; B: @
2 \0 K: A4 f* k# f$filename = ‘./curled/’.rand().’.txt’;
& k: ^+ N) `) L* S% Nfile_put_contents($filename, $result);4 e8 e: t+ N2 _% x. Y7 w2 i4 b
echo $result;5 c U) h, l0 W/ _( c' W
}
: r& ^9 r5 }* w1 Z! a?>) P7 W8 v1 H) M# m0 `
复制代码+ n1 L9 j- }5 n, V+ _
这是另一种非常常见的实现,通过PHP使用curl获取数据。“卷曲”文件夹下的文件/数据下载并存储到磁盘,并附加一个随机数“。txt’结尾的文件扩展名。
" O9 b) Y4 \! v" t, X! c在本系列的下一部分,我们将看到一些可以启动的攻击使用此vulnerbility。XSPA允许攻击者在目标服务器基础设施,主要是内网的Web服务器,Web服务器本身,以及面向互联网的服务器以及。目前,我已经遇到以下五种不同的攻击方式,可以启动使用XSPA:
( F& R6 O8 Q. ]0 Y: q* A1。端口扫描远程互联网服务器,内网设备和本地Web服务器本身。横幅敛也有可能在某些情况下,
3 \. q7 K4 r, i6 Q7 G2。开发弱势运行的程序在Intranet或本地Web服务器
- n2 |% D$ E; F2 O3。攻击内部/外部Web应用程序很容易通过URL来获取参数的漏洞(SQLI,参数操作等)
6 O3 k# J3 P% t ~' s4。指纹图谱的Intranet Web应用程序使用标准的应用程序的默认文件及行为$ l$ \9 N- E w! c. O
5。阅读使用file :/ / /协议处理程序的本地Web服务器上的文件。 |