随手记

一、记一次众测曲折的“内网上线”豪夺运维权限

  1. 在某次众测活动中,通过某小公司系统拿到了该系统的shell。

  2. 服务器有条狗和卡巴斯基

    1. 360的进程迁移,但是文件一执行就被杀了。

    2. Powershell的脚本不能执行

    3. 直接连上ToDesk进行上线,ToDesk的密钥就在安装目录的config.ini。

      通过执行
      wmic process where name="ToDesk.exe" get processid,executablepath,name
      获取到了Todesk的路径
      再执行type进行读取config.ini的内容就可以拿到配置文件
      在配置文件中clientid就是todesk的连接id
      下面的tempAuthPassEx、authPassEx、passex就是加密后的密钥
      将这3个被加密后的密钥拉到本地的config的tempAuthPassEx,然后打开todesk
      
  3. 信息收集

    1. 看到了qq,找到了存放文件目录,放着记着密码的图片。

二、红队攻防之JS攻防

  1. 搜索参数

    1. ctrl+shift+F,开启全局搜索 token
  2. 调用分析

    1. 打开Network请求里面的Initiator查看当前请求构造的相关逻辑
    2. 点击光标,会有完整的请求调用流程,我们点进去就可以寻找到相关代码逻辑。
  3. 断点分析

    1. 在开发者工具Sources面板里添加设置,比如这里我们添加了XHR断点和全局Load时间断点。
  4. Hook

    对一些常见的加密和编码算法、常用的转换操作都可以进行Hook,比如Base64编码、Cookie的赋值、JSON的序列化。

  5. 调试分析

    格式化过程很重要,能够提高代码的可读性,一般情况下很多JavaScript代码都是经过打包和压缩的。多数情况下,我们可以使用Sources面板下JavaScript窗口左下角的格式化按钮对代码进行格式化。

  6. 断点调试

    1. 找到token生成逻辑

      ▲ 将/api/movie放到一个列表中;
      ▲ 在列表中添加当前时间戳,调用push方法,添加到列表中;
      ▲ 将列表内容用逗号拼接;
      ▲ 将拼接结果进行SHA1编码;
      ▲ 将编码的结果和时间戳再次拼接;
      ▲ 将拼接后的结果进行Base64编码。
      
  7. 反混淆

    1. 这里while循环内部,通过一些判断条件执行某些逻辑,这种逻辑我们无法直接判断执行顺序,对于这种类似的混淆技术,我们可以尝试AST进行还原。
  8. 模拟执行

    1. Python改写或者模拟执行
    2. JavaScript模拟执行+API
    3. 浏览器模拟执行

三、赏金7500刀 | 记一个获取HackerOne任何用户的电子邮件地址的漏洞

https://graphql-kit.com/graphql-voyager/

四、仅用Google Dork快速发现2枚微软XSS