许多Web应用程序提供的功能将数据从其他Web服务器,由于种种原因。下载XML提要,从远程服务器,Web应用程序可以使用用户指定的URL,获取图像,此功能可能会被滥用,使制作的查询使用易受攻击的Web应用程序作为代理运行在远程攻击其他服务的基于文本的文件等。 /本地服务器。通过这种滥用而产生的功能被命名为攻击,跨站点端口的攻击(XSPA)。- k& R% j7 f9 S- i; g, a+ e5 {2 w1 j
XSPA(SSPA)是什么?2 A; Z$ k5 B' E1 d. L: A: Y
如果应用程序处理用户提供的URL和不验证/消毒后端从远程服务器接收到响应,然后将其发送回客户端应用程序是容易受到跨站点端口的攻击。攻击者可以通过发送特制的查询到一个易受攻击的Web应用程序代理攻击,面临的外部Internet服务器,内网设备和Web服务器本身易受攻击的Web应用程序使用的广告功能。的反应,在某些情况下,可以进行研究,以确定服务的可用性(端口状态,横幅等),甚至在非传统的方式获取数据的远程服务。! j' I# S; o) z8 x( c
PHP fsockopen() function:% \4 H, a2 }6 [$ B c. l
<?php
8 A6 ~+ q: x" j% @; D4 Kfunction GetFile($host,$port,$link)% f" ]2 J' r3 J& a0 Y
{
$ o2 i; Y4 m, D( o7 A! ?" g$fp = fsockopen($host, intval($port), $errno, $errstr, 30);
! O. ]: ?9 d3 l' }if (!$fp) {
+ G9 P% x5 D$ y9 r9 j, fecho “$errstr (error number $errno) \n”;
% F, V! I/ x" t2 g} else {' C9 P) {2 ^; Y+ B! q
$out = “GET $link HTTP/1.1\r\n”;) _, o y6 t) ^4 y# w+ `0 k
$out .= “Host: $host\r\n”;7 V! v+ z7 h* f$ P) l: m- m/ k3 D; A
$out .= “Connection: Close\r\n\r\n”;+ Z. d/ b) u4 l9 Z% F5 }
$out .= “\r\n”;
- f8 B+ I1 I' ~fwrite($fp, $out);3 ^0 T) w" ^8 {7 j& T) x& d
$contents=”;
# d! S+ a6 |1 J G# T' L! Kwhile (!feof($fp)) {: q. \3 k% ?5 E/ A0 c& x P0 [/ K
$contents.= fgets($fp, 1024);5 c4 \3 I) P& }4 m) F) W3 J
}2 L7 @, W N3 m" p
fclose($fp);
' h# H* L2 o- _3 Freturn $contents;$ \/ f: w& K) B0 H# Q/ ?0 T
}
& L$ ?8 l( f/ `$ t3 r8 D Z}) G# b6 a# C2 v3 v# }. I6 X
?>
! t# x' s2 W4 `, k+ q复制代码
# _2 }1 \& K* w8 N6 U$ B7 i/ l此实现获取数据,如由一个用户使用的fsockopen PHP函数(任何文件或HTML)请求。此功能建立一个TCP连接的套接字的服务器上,并进行原始数据传输。/ h( J2 y. O" T! U
PHP curl_exec() function:
- x# ?3 W" `4 L5 d# W1 q8 g) o1 X<?php
; I1 F( w; L% y* Tif (isset($_POST['url']))& k$ ~$ F: y" ?# k/ S& R
{
9 b* J& z: x/ |( D( M+ \1 Q: t. S$link = $_POST['url'];
& j3 P( t1 K! k4 d( f) n4 b$curlobj = curl_init();9 q# R* ^- P( \8 D" X, n3 k4 o
curl_setopt($curlobj, CURLOPT_POST, 0);% _" [$ l" F3 f) o- s
curl_setopt($curlobj,CURLOPT_URL,$link);
0 g0 K- b1 o' j$ p; R1 l9 D' _. dcurl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
8 K, W2 Y" |3 r+ F4 p6 |" G$result=curl_exec($curlobj);- A$ V4 b. |- u# ?( y6 P" H4 H: A; c
curl_close($curlobj);+ e+ x7 n! s: e' P2 _. n s% ^5 K# N
( P8 P F* X+ i3 e# Y0 q2 x ?6 n$filename = ‘./curled/’.rand().’.txt’;/ m+ K5 i* i2 S N" K2 M4 V& l7 v% E
file_put_contents($filename, $result);) o& t0 ~! j; z0 Z6 o
echo $result;2 d& D, t# J3 x2 Z* Z2 R
}
9 ~+ U! q' H5 Z5 I?>6 ^" A9 p, `5 Q* ^3 r7 F& r; g
复制代码
6 B2 j" P$ ~6 T' B这是另一种非常常见的实现,通过PHP使用curl获取数据。“卷曲”文件夹下的文件/数据下载并存储到磁盘,并附加一个随机数“。txt’结尾的文件扩展名。2 ~$ v- ] _( Y2 d0 L
在本系列的下一部分,我们将看到一些可以启动的攻击使用此vulnerbility。XSPA允许攻击者在目标服务器基础设施,主要是内网的Web服务器,Web服务器本身,以及面向互联网的服务器以及。目前,我已经遇到以下五种不同的攻击方式,可以启动使用XSPA:. x' \, s! ^6 m9 T- V
1。端口扫描远程互联网服务器,内网设备和本地Web服务器本身。横幅敛也有可能在某些情况下,
' R d7 _6 w1 l2。开发弱势运行的程序在Intranet或本地Web服务器8 }. C8 ?, N: F- d- o: B# I1 \9 S) }! A1 V
3。攻击内部/外部Web应用程序很容易通过URL来获取参数的漏洞(SQLI,参数操作等)' L, n# B2 e! m% Y+ C
4。指纹图谱的Intranet Web应用程序使用标准的应用程序的默认文件及行为3 R1 j4 h8 ~, @ N+ ?# j+ g2 L
5。阅读使用file :/ / /协议处理程序的本地Web服务器上的文件。 |