许多Web应用程序提供的功能将数据从其他Web服务器,由于种种原因。下载XML提要,从远程服务器,Web应用程序可以使用用户指定的URL,获取图像,此功能可能会被滥用,使制作的查询使用易受攻击的Web应用程序作为代理运行在远程攻击其他服务的基于文本的文件等。 /本地服务器。通过这种滥用而产生的功能被命名为攻击,跨站点端口的攻击(XSPA)。
) j" U( B5 `! C6 n1 P; c# [8 nXSPA(SSPA)是什么?
; d0 Y& |0 l, i2 h2 ^3 C8 }如果应用程序处理用户提供的URL和不验证/消毒后端从远程服务器接收到响应,然后将其发送回客户端应用程序是容易受到跨站点端口的攻击。攻击者可以通过发送特制的查询到一个易受攻击的Web应用程序代理攻击,面临的外部Internet服务器,内网设备和Web服务器本身易受攻击的Web应用程序使用的广告功能。的反应,在某些情况下,可以进行研究,以确定服务的可用性(端口状态,横幅等),甚至在非传统的方式获取数据的远程服务。
( X0 u, ~3 K' q5 K! R6 |' CPHP fsockopen() function:
5 {" u3 G# e) e. D5 z0 y1 ?1 g& ^<?php; I8 w. X) b6 F' ~7 R5 [
function GetFile($host,$port,$link)
6 P$ v8 [( k/ t' T0 w/ B+ c) X{. W2 }7 N, y$ i/ X5 _( z( d
$fp = fsockopen($host, intval($port), $errno, $errstr, 30);
' Q3 F) E5 G( kif (!$fp) {
I% X2 ?5 M3 @3 ~1 K7 \echo “$errstr (error number $errno) \n”;( {( `9 U3 ? I9 {& e5 B
} else {
$ k4 q2 d. ^, c" A) ]0 y$out = “GET $link HTTP/1.1\r\n”;6 a1 p( h5 Q$ r0 H1 e& u
$out .= “Host: $host\r\n”;. q/ a: x, S. {' p$ d4 v
$out .= “Connection: Close\r\n\r\n”;- O: c- J O% L9 K# y, D1 t1 N
$out .= “\r\n”;, p: @* a( g# n8 W& y; J; Q0 r* b2 ?
fwrite($fp, $out);% @7 j) S5 J& M* k
$contents=”;& d0 q! _# v9 r- `$ a. A& u% N
while (!feof($fp)) {& V- L; A7 b" L0 T L2 e* h
$contents.= fgets($fp, 1024);# R9 I! [2 K& j4 w; L/ u9 y
}) H5 M; o! N/ C% B- t
fclose($fp);
, G# z" F1 k m/ C/ b4 Y; P! w2 rreturn $contents;1 G4 I# g1 g0 g0 t5 H3 S' X1 z. ]3 i
}
" m& i8 L& f, E/ N( s5 E2 u}& c3 S% E3 i+ c
?>
0 D0 P E9 g% l) M, F$ ^复制代码% c1 X: J6 h$ g3 k1 o
此实现获取数据,如由一个用户使用的fsockopen PHP函数(任何文件或HTML)请求。此功能建立一个TCP连接的套接字的服务器上,并进行原始数据传输。# V* [5 B4 ^0 g3 w6 r `
PHP curl_exec() function:
) |, P9 u e; Q<?php
% W- d( v* F1 `if (isset($_POST['url']))
. ] D. N! ^% n* g8 T{
# c; f" T% p/ v# X' V$link = $_POST['url'];6 x# T6 l- G* {& ]1 J* k
$curlobj = curl_init();
0 ~4 P3 c4 ?- K! e5 Y6 h# mcurl_setopt($curlobj, CURLOPT_POST, 0);
$ u2 {+ l! ~. B( k% H! jcurl_setopt($curlobj,CURLOPT_URL,$link);
+ B% [" J( r4 \curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);- d6 x1 R+ M1 u' g' d R
$result=curl_exec($curlobj);& x0 n- k3 d( V# m& B1 b+ O: c
curl_close($curlobj);' I/ M+ F3 l) R# j) P" y; z, y
; X/ w( s+ X, A. o) c8 k, @5 U
$filename = ‘./curled/’.rand().’.txt’;
. ?' O) z' ?- N7 Mfile_put_contents($filename, $result);
: k3 `" Q% M% ~echo $result;. `2 j* C# A* c! M
}6 q8 n9 T7 k% r( Z" g9 ]
?>
' f3 Y! o/ t: ^5 q, n复制代码9 n# }4 i2 y& q! k; @) _& @
这是另一种非常常见的实现,通过PHP使用curl获取数据。“卷曲”文件夹下的文件/数据下载并存储到磁盘,并附加一个随机数“。txt’结尾的文件扩展名。
% A3 a+ X" }6 ]; w9 S在本系列的下一部分,我们将看到一些可以启动的攻击使用此vulnerbility。XSPA允许攻击者在目标服务器基础设施,主要是内网的Web服务器,Web服务器本身,以及面向互联网的服务器以及。目前,我已经遇到以下五种不同的攻击方式,可以启动使用XSPA:
& m0 h) }, f( @8 Q6 J& ~8 C1。端口扫描远程互联网服务器,内网设备和本地Web服务器本身。横幅敛也有可能在某些情况下,: `* E) K( o, T9 m. J
2。开发弱势运行的程序在Intranet或本地Web服务器
' ~9 A7 R1 I* e: J3。攻击内部/外部Web应用程序很容易通过URL来获取参数的漏洞(SQLI,参数操作等)
5 i% f% I; X2 Z0 }# Z2 ]+ Z4。指纹图谱的Intranet Web应用程序使用标准的应用程序的默认文件及行为6 i; \& K3 C$ e/ ]& u! D' q: y
5。阅读使用file :/ / /协议处理程序的本地Web服务器上的文件。 |