许多Web应用程序提供的功能将数据从其他Web服务器,由于种种原因。下载XML提要,从远程服务器,Web应用程序可以使用用户指定的URL,获取图像,此功能可能会被滥用,使制作的查询使用易受攻击的Web应用程序作为代理运行在远程攻击其他服务的基于文本的文件等。 /本地服务器。通过这种滥用而产生的功能被命名为攻击,跨站点端口的攻击(XSPA)。
; H& _) l6 G4 u* SXSPA(SSPA)是什么?/ t) P) J1 {5 a5 ~/ a! X2 m* K
如果应用程序处理用户提供的URL和不验证/消毒后端从远程服务器接收到响应,然后将其发送回客户端应用程序是容易受到跨站点端口的攻击。攻击者可以通过发送特制的查询到一个易受攻击的Web应用程序代理攻击,面临的外部Internet服务器,内网设备和Web服务器本身易受攻击的Web应用程序使用的广告功能。的反应,在某些情况下,可以进行研究,以确定服务的可用性(端口状态,横幅等),甚至在非传统的方式获取数据的远程服务。
/ ]' A) [: b% ], ~9 m+ zPHP fsockopen() function:# ]; L( m( P Q( B7 H
<?php
# s$ D& G) L vfunction GetFile($host,$port,$link)
u! P& C7 w8 Q9 Z( b* J- I z{
8 [ V' Z+ ?" A; o$fp = fsockopen($host, intval($port), $errno, $errstr, 30);
" O$ f' C2 w- _. \( s* Eif (!$fp) {
3 @& c R0 Q1 k6 |2 Aecho “$errstr (error number $errno) \n”;
, O* ~1 c k$ E/ X7 m$ T; ?$ k} else {5 t. U$ M8 k% @# S# G2 E6 ~1 {' C
$out = “GET $link HTTP/1.1\r\n”;
, r3 l! M; I6 D8 S1 z, f$out .= “Host: $host\r\n”;; J, _# K& v% s) I
$out .= “Connection: Close\r\n\r\n”;! V& i" f! V6 w/ w' m7 I
$out .= “\r\n”;$ w# P0 z( q) A4 W& t
fwrite($fp, $out);
5 N' Y/ |4 `+ d3 T4 @7 G$contents=”;
' \, E/ {% g; I9 G$ Gwhile (!feof($fp)) {) U7 s& v& v9 @" i' s4 h) R- ]! S/ ?
$contents.= fgets($fp, 1024);6 a1 e" e& Z) }1 [
}" B! d' }) I4 E3 {; [
fclose($fp);
! @8 ~5 ?$ c2 N6 m9 Ereturn $contents;& e* P$ H! {3 _% l( L8 R b/ |9 ^
}
( o d: n( A8 Z& J* ] @3 I}9 I$ F5 C! n: F$ }* c6 ~8 S
?>
1 P& ?) q2 V! P; q( [/ }复制代码! y7 d. x4 v# h& W8 W5 i
此实现获取数据,如由一个用户使用的fsockopen PHP函数(任何文件或HTML)请求。此功能建立一个TCP连接的套接字的服务器上,并进行原始数据传输。- i. s( L" p8 q% i: J6 I
PHP curl_exec() function:
* F5 Y7 m: f, I4 ]<?php5 s( Y" } `, }+ t8 v: r5 q2 K: t
if (isset($_POST['url']))
' U$ T% ~( O C0 y9 r0 H7 {% S{ f# v5 A; c1 \) W$ o9 \6 u
$link = $_POST['url'];6 O& U* Y$ t% w" `0 J2 p
$curlobj = curl_init();
I4 h6 T; _# \' Ccurl_setopt($curlobj, CURLOPT_POST, 0);
, N+ B# L/ p. K/ `) | kcurl_setopt($curlobj,CURLOPT_URL,$link);
# G6 A" C- b# ~9 C& k6 {( Dcurl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);% I1 S, p, E, C: ]. l0 z
$result=curl_exec($curlobj);6 \$ P$ E$ k; ]% N' T9 y( R+ p
curl_close($curlobj);
; E1 G* i7 n9 d8 n5 ^ ! v. k% g- T) _* U# L' m. M! P
$filename = ‘./curled/’.rand().’.txt’;
. ~5 a% d F: {1 R, ^* w: B3 _file_put_contents($filename, $result);
: w+ f9 v, T# v1 recho $result;. s9 C. q* c% ]1 a% m9 _
}/ N0 v5 y7 _$ \- y* j* [- b
?>
5 q" M n# D' s, b7 ]& Q复制代码
- V8 [4 y5 y8 Q; i这是另一种非常常见的实现,通过PHP使用curl获取数据。“卷曲”文件夹下的文件/数据下载并存储到磁盘,并附加一个随机数“。txt’结尾的文件扩展名。% Z+ J' r4 g$ Y: }% Y
在本系列的下一部分,我们将看到一些可以启动的攻击使用此vulnerbility。XSPA允许攻击者在目标服务器基础设施,主要是内网的Web服务器,Web服务器本身,以及面向互联网的服务器以及。目前,我已经遇到以下五种不同的攻击方式,可以启动使用XSPA:) E, X% \7 q- D! M4 X& l
1。端口扫描远程互联网服务器,内网设备和本地Web服务器本身。横幅敛也有可能在某些情况下,
$ F7 B6 T$ x3 u+ ^" S3 N2。开发弱势运行的程序在Intranet或本地Web服务器1 C( M' T8 [& w" R5 A) a2 p! t
3。攻击内部/外部Web应用程序很容易通过URL来获取参数的漏洞(SQLI,参数操作等)
/ a' o( ?% z8 e1 n! r5 b+ v* ^( Q2 f4。指纹图谱的Intranet Web应用程序使用标准的应用程序的默认文件及行为# Z! M3 q( j ]! f. C8 G
5。阅读使用file :/ / /协议处理程序的本地Web服务器上的文件。 |