第2天:Web应用&架构类别&源码类别&镜像容器&建站模版&编译封装&前后端分离

发布于:2025-02-10 ⋅ 阅读:(51) ⋅ 点赞:(0)
  • Web架构展示

    • 1、套用模版型

      • csdn / cnblog / github / 建站系统等
        ①套用建站:用别人的域名->在别人的域名目录之下->搭建自己的网站
        ②建站系统建站:用系统平台建站->平台随机分配一个域名->再搭建自己的网站
        • cnblog搭建网站,就是没申请域名服务器,利用别人已知的网站进行套用搭建

        • 别人的网站给你分配一个站点

        • 建站系统
          • 凡科建站

          • 别人已经设计好了,自己选择就可以了
      • 详细解释

      • 安全测试思路上的不同:
        • 一般以模版套用,基本模版无漏洞,大部分都采用测试用户管理权限为主
        • 一般都是小中型公司使用模版套用
    • 2、前后端分离

      • 前端用来显示,后端用来进行数据处理->导致数据传输逻辑不清晰->给渗透测试增加难度
      • 安全测试思路上的不同:前端以JS(Vue,NodeJS等)安全问题,主要以API接口测试,前端漏洞(如XSS)为主,后端隐蔽难度加大。
    • 3、集成软件包

      • 宝塔,Phpstudy,xamp等
        宝塔内置了安全防护,所以执行一句话木马,能获取的权限很少;
      • 安全测试思路上的不同:主要是防护体系,权限差异为主
    • 6、纯静态页面

      • 纯HTML+CSS+JS的设计
      • 安全测试思路上的不同:无后期讲到的Web漏洞
        • 由于纯静态页面没有服务器端代码,不涉及数据库,也不涉及复杂的用户输入处理,因此一些经典的服务器端攻击如SQL注入、命令注入、文件上传攻击等,对静态页面没有影响
      • 静态网站没有数据传递,不存在常见漏洞
      • 如何判断是否为静态网站?:
        • F12

      • 如何找漏洞呢:找资产、域名、客户端
        如何测试:找线索:找资产,域名(子域名),客户端(抓包找资产)等,看是否可以跳转到有测试价值的动态网站;
  • Web源码形式

    • 旨在了解源码差异,后期代码审计和测试中对源码真实性的判断
    • 1、单纯简易源码

      • 目录与访问页面直接挂钩
    • 3、编译调用源码

      • 如:NET-DLL封装 Java-Jar打包
        • 静态链接库文件:lib 动态链接库文件:dll
        • 编译与反编译---直接打开与反编译工具打开同一个文件,进行内容对比就明白了
          • IDE编译后源文件才有class文件
          • 编译过后不能直接看 得反编译

      • ①NET:bin目录下的".dll"文件是代码的核心,需要进行DLL反编译,才可以看到源码。
      • ②java:".jar"文件包,直接运行".jar"包就可以启用网站,需要对".jar"包进行反编译,才可以看到源码。
    • 加密型源码--通达OA
      • 源码保护
      • 网上有解密代码的网站,也有工具
  • 演示案例

    • 架构类别-模版&分离&集成&容器&镜像

      • 统一采用PHP语言的web应用(其他语言可能有误差)
        • 生成php后门文件,对三种搭建方式进行测试
        • 1、宝塔搭建---内置保护措施
          如Web应用防火墙、权限管理等,因此在进行后门测试时存在一定的限制
          • 后门权限:
            • 命令执行不行文件管理除web目录能看其他都不能看
            • 命令执行受限:通过后门文件执行命令通常会受到宝塔面板内置的保护措施限制,例如禁止某些高风险的系统命令,防止攻击者获得更高权限。
            • 文件管理限制:攻击者可能只能访问Web目录,而无法查看或管理其他目录(特别是系统敏感文件目录)
          • 如何绕过宝塔限制呢
        • 2、镜像环境搭建
          • 后门权限:
            • 命命执行可以文件管理基本都能看除去一些高权限目录(root目录等)
            • 命令执行权限:相对于宝塔面板,镜像环境中的后门执行命令的可能性更大,因为没有额外的第三方管理工具来限制系统命令。
            • 文件管理权限:攻击者可以看到系统中大部分目录的文件,只是对某些高权限目录(如/root)可能有访问限制。
          • 如何提权横向呢
            • 提权方法:
              • SUID 文件利用:通过查找具有SUID权限的二进制文件,可以尝试通过这些文件进行提权。例如,通过find / -perm -4000查找具有SUID位的可执行文件,然后尝试利用它们获取root权限。
              • 内核漏洞:使用uname -a查看Linux内核版本,然后搜索该版本存在的本地提权漏洞(如脏牛漏洞CVE-2016-5195),如果系统内核未打补丁,则可以尝试利用这些漏洞提权。
            • 横向移动:
              • SSH私钥:如果成功进入用户目录,尝试查找.ssh目录中的私钥文件,用于SSH登录其他系统。
              • 配置错误:如果发现数据库配置文件(如config.php)中有硬编码的数据库凭据,可能使用这些凭据连接到数据库或尝试访问其他系统。
        • 3、Docker容器搭建

          • 后门植入需要使用工具
          • 后门权限:
            • 内置的虚拟化技术,单独搞了一个磁盘空间给这个应用做支撑----是虚构的,与本机无关
            • 需要docker逃逸出来才能对本机造成危害
            • 如何判断是不是docker
              • 看Docker文件特征.dockerenv
              • 可以通过查找Docker容器特有的文件来确认自己是否在容器中,例如**.dockerenv**文件,这是Docker容器中的特征文件。
              • 另外,通过执行以下命令查看系统信息,如果发现文件系统指向某个“overlay”或“aufs”文件系统,则很有可能是在Docker容器中:cat /proc/1/cgroup
          • 如何逃逸提权呢
            • Docker逃逸的思路:Docker逃逸是指攻击者试图从容器内逃逸到宿主机上,这样可以获得宿主机的控制权。常见的Docker逃逸方法包括:
              • Docker Socket滥用:检查容器中是否映射了Docker的Unix socket文件(通常是/var/run/docker.sock),攻击者可以通过这个socket文件调用Docker API来创建特权容器,进而实现对宿主机的访问。
              • 特权容器:如果当前容器是以特权模式运行的,可以通过一些命令(如nsenter)访问主机命名空间,从而逃逸到宿主机。
              • 内核漏洞利用:如果宿主机的Linux内核存在漏洞,可以尝试在容器中利用这些漏洞(例如脏牛漏洞)来进行容器逃逸。
      • 对比以上三种搭建方式的差异(安全测试渗透测试过程中)